Обычно, когда запущенное приложение в графической среде, когда я хочу закрыть его, я нажимаю X
в верхнем левом углу окна или переходят в File > Close
.
Я хотел бы иногда закрыть эти программы удаленно по ssh из терминальной командной строки использования, теперь я использую kill
управляйте, но интересно он, это делает то же как выход из приложения правильно от себя.
От man kill
сигнал по умолчанию, кажется, 15), SIGTERM, этот сигнал собирается сказать приложению, что я пытаюсь близко к уборке, близко открытые файлы, сохранить материал?
Существует ли лучший путь, если я хочу сделать это от терминала?
Типичный способ закрыть приложение корректно состоит в том, чтобы использовать kill -TERM 1234
, где 1234
PID окна. Проблема, однако, состоит в том, что графические приложения разработаны для прислушиваний к определенному сигналу от самого X-сервера, не прислушавшись TERM
сигнал.
Это означает необходимость в некотором агенте, промежуточном Вы и X-сервер для передачи этого, Вы хотите отправить соответствующий сигнал. Можно, конечно, записать программу C, однако там уже существует wmctrl
программа (не удивительно записанный в C), который делает точно это.
Использование wmctrl
просто:
wmctrl -c :SELECT: # close window that will be selected with pointer
wmctrl -c :ACTIVE: # close currently active window
wmctrl -ic <numeric id> # close window with specific id in hex
Это не установлено по умолчанию, поэтому получите его с sudo apt-get install wmctrl
Существует много использования для wmctrl
далеко вне просто закрытия окон, поэтому см. больше моих ответов и Jacob Vlijm для примеров сценариев, где оно использовалось
Я думаю, что стоит добавить это wmctrl -xl
произведет результаты как это:
0x03000001 -1 google-chrome.google-chrome dcentore-pc Rybak - Google Play Music - Google Chrome
0x04600006 0 speedcrunch.Speedcrunch dcentore-pc SpeedCrunch
Где x
запрашивает класс окна быть в выводе. Это часто - самый легкий способ закрыть ту же программу каждый раз. Затем мы можем просто предоставить класс окна при закрытии его:
wmctrl -xc speedcrunch.Speedcrunch
Этот пример закроет speedcrunch.