Как к мягкому уничтожению gui приложения через терминал?

Я только знаю CLI путь. Вам будут нужны cuetools и shntool.

cuebreakpoints file.cue | shnsplit -o flac file.flac
cuetag.sh file.cue "split-*".flac
22
27.12.2013, 23:09
5 ответов

Обычно, можно использовать SIGHUP для "дружественного" завершения приложение (с или без графического интерфейса).

kill -HUP <application_pid>

ОТРЕДАКТИРОВАННЫЙ: добавленный некоторая другая информация

Путем SIGHUP обрабатывается, зависящее от приложения так, как Dave отметил, это может произойти, что этот сигнал маскируется или обрабатывается. Однако вполне все интерактивные приложения выходят корректно с SIGHUP.

С другой стороны я должен признать, что обычно следую этой схеме:

kill -HUP <application_pid>
# check if application is still running
kill -INT <application_pid>
# check if application is still running
kill -KILL <application_pid>

Очевидно, последняя команда не является настолько "дружественной".

19
27.01.2020, 19:43
  • 1
    , Если Вы не знаете PID приложения, можно использовать pkill указывать название исполняемого файла вместо этого. Например: pkill -HUP firefox-bin –  Caleb 26.08.2011, 18:13
  • 2
    @Dave также: Интересный, я нашел, что это имело отношение, который предлагает подобное, но вернулся порядок: ТЕРМИН-> INT-> ПОНУКАЕТ (возражайте против старости). Возможно, я сохраню, ПОНУКАЮТ-> INT-> ТЕРМИН в памяти, как УНИЧТОЖАЮТ, кажется, не является дружественным по отношению ко мне. Благодаря всем. –  jfk 29.08.2011, 12:03
  • 3
    @Caleb, просто быть осторожным там, где существует несколько процессов с тем же именем: pkill уничтожит их всех. Например, выполните это несколько раз для создания некоторых фоновых процессов: sed "s/Woo/woo/" < /dev/urandom >> /dev/null &. Затем сделайте pkill -HUP sed. Вы уничтожите все экземпляры sed, который Вы запустили плюс любые другие экземпляры, делающие полезную работу. –  ahcox 07.04.2015, 14:54
  • 4
    @Caleb, кроме того, pkill также уничтожит некоторые приложения, Вы не ожидаете: например, если Вы имеете chromium выполнение, и хочет закрыть названную программу rom, pkill будет счастливо стрелять chromium вниз. Лучше используйте killall, который будет только соответствовать точному имени (не на Солярисе, хотя, где это буквально уничтожает все процессы). –  Ruslan 05.01.2018, 17:53
  • 5
    @Ruslan Или использование pkill -x получить точное совпадение вместо частичного соответствия. Я лично использую в своих интересах частичное соответствие для сохранения ввода, но необходимо знать то, что делает инструмент. Да, по умолчанию это соответствует частичным строкам. Другая полезная опция -f соответствовать против полной командной строки вместо просто $0. –  Caleb 05.01.2018, 17:57

Можно хотеть попробовать:

kill -TERM <pid>

или

kill -TERM `pidof <application_name>`

По крайней мере, в некоторых системах, когда система проходит завершение работы, все процессы отправляются ТЕРМИН (15) сигнал, прежде чем они будут отправлены УНИЧТОЖЕНИЕ (9) сигнал. ПОНУКНИТЕ часто правые дела приложение для перезагрузки его конфигураций, но это может отличаться на основе процесса процессами.

5
27.01.2020, 19:43

Нет никакого общего способа сказать приложению выходить и сохранять свою конфигурацию. Могут быть способы уведомить приложения с помощью конкретной платформы, например. dcop kfoo MainApplication-Interface quit для некоторого KDE 3 приложения. Следите за этим, приложение могло бы показать диалоговое окно, прося у Вас подтверждение.

Если эти X дисплеев становятся неприменимыми, уничтожьте X-сервер. Нажмите Ctrl+Alt+BackSpace; если это не работает, уничтожьте процесс X-сервера с sudo pkill -x Xorg. Когда X-сервер перестает работать, все X приложений уведомляются, и они попытаются выйти корректно (нет никакой гарантии, что они сохранят все, но это - Ваш лучший выбор).

2
27.01.2020, 19:43
  • 1
    , который я не знал, будут ли приложения уведомлены или просто уничтожены; и поскольку ключевая комбинация не включена по умолчанию на Fedora..... Я теперь знаю, как уничтожить его командной строкой! –  jfk 29.08.2011, 12:13

Сродни ответу @andcoz, если Вы не знаете PID приложения (я принимаю, Вы не знаете это прочь наизусть), попробуйте это:

kill -HUP `pidof [application_name]`
1
27.01.2020, 19:43
  • 1
    Возьмите того одного брата по духу шага и попытку pkill -HUP [application_name] :) –  Caleb 26.08.2011, 18:13
  • 2
    Просто изученный pkill и pgrep :D –  jfk 29.08.2011, 12:07

Две других команды, которые Вы могли бы хотеть рассмотреть, wmctrl -c и xdotool windowkill. Я не уверен ли windowkill точно, что Вы после, если не Вы могли бы интересоваться windowdelete патч.

1
27.01.2020, 19:43

Теги

Похожие вопросы