Чи є спосіб змусити google-chromeвийти з терміналу, окрім використання killall google-chrome?
Я хотів би мати можливість закрити його зі сценарію, не вбиваючи його.
Чи є спосіб змусити google-chromeвийти з терміналу, окрім використання killall google-chrome?
Я хотів би мати можливість закрити його зі сценарію, не вбиваючи його.
Відповіді:
Можливо, wmctrlможе бути якась допомога. Ви можете використовувати -cопцію, яка витончено закриває вікно:
wmctrl -c chrome
Рядок chromeузгоджується з заголовками вікна. Зверніть увагу, що вікно може не закритися, якщо якесь повідомлення спливе (наприклад, коли у вас відкрито кілька вкладок).
wmctrl.
pkill -o chromeробить, хоча.
Ця команда витончено закриває дерево хромового процесу у всіх менеджерах вікон:
pkill --oldest chrome
або якщо ви віддаєте перевагу:
/usr/bin/pkill --oldest --signal TERM -f chrome
Деталі:
SIGTERM--oldestSIGTERMце те саме, що сигнал 15, отже --signal TERM, або просто залишити його поза, оскільки SIGTERMце сигнал за замовчуваннямwmctrl працює з Unity та деякими іншими, але це не працює з усіма менеджерами віконwmctrl -c закриває одне вікно за раз, тому для закриття всіх хромованих вікон вам знадобиться щось на кшталт while wmctrl -c 'Google Chrome'; do sleep 0.2; done--oldestце не варіант: використання -oробіт.
-fаргумент pkill не працює для мене. У мене є деякі інші процеси, що працюють як корінь, у яких, як правило, слово chrome у їх командних рядках, тому мені просто відмовлено в дозволі. Без цього -fвін працює чудово, хоча.
Це працює для мене:
killall --quiet --signal 15 -- chrome
Зауважте, що я використовую досить багатослівну команду для того, щоб читати її в коді, звичайно, ви також можете видавати:
killall -q -15 chrome
Увімкніть Mac OS X, використовуйте це замість цього
pkill -a -i "Google Chrome"
Для цього потрібно шукати процес Google Chrome і вбивати також усі його батьківські процеси.
З посібника з pkill
-a Include process ancestors in the match list. By default, the
current pgrep or pkill process and all of its ancestors are
excluded (unless -v is used).
-i Ignore case distinctions in both the process table and the
supplied pattern.
Відповідно з @ Кейтом-Кассіо 's відповіді , ви можете спробувати вбити сам старий процес замість. Зауважте, що це не спрацювало для мене.
pkill -o -i "Google Chrome"
спробуйте:
kill -3 <pid_of_chrome>
Це відправить сигнал "QUIT" в хром, який, залежно від вашого менеджера вікон, буде тим, що він зазвичай надсилається, коли його просять закрити.
killі killallтам, де Chrome сприймає це як збій, і просить відновити.
SIGQUITяк правило, не надсилається програмам, коли їх просять закрити (я не знаю жодної WM, яка це робить). WM_DELETE_WINDOWє стандартом.
kill -15 <pid_of_chrome>робив те, що я шукав. Але, google-chromeє кілька прищиків, і було потрібно кілька спроб, щоб насправді отримати правильний.