Я должен моделировать поведение сочетания клавиш (ALT+F4) с помощью Терминала для данного приложения.
Если я откроюсь, например, gedit и нажму ALT + F4, то GEDIT будет xkilled. Если я хочу достигнуть того же самого с помощью Терминала, как я должен продолжить двигаться?
Следующая команда (для уничтожения процесса gedit) хорошо работает:
kill $eval `pidof gedit`
все же, команда
xkill -id gedit
предлагает мне нажимать на окно клиента приложения, чтобы к xkill это, вещь, Которой я хочу избежать с начала.
Причина, почему я хочу достигнуть этого поведения, состоит в том, что некоторые клиенты приложений поддерживают свой процесс в рабочем состоянии, даже при том, что Вы ALT+F4 оно. Моя потребность состоит в том, что у меня есть приложение, которое запускает на каждом входе в систему, и я должен автоматически закрыть его клиент спустя 3 или 5 секунд после того, как он обнаруживается.
Эквивалент xkill
windowkill
функция в xdotool
. Если Вы не имеете xdotool
установленный, выполненный
sudo apt-get install xdotool
С этим инструментом можно действительно уничтожить окно при помощи параметра поиска и путем определения его класса:
xdotool search --class gedit windowkill
Можно найти pid процесса с getwindowpid
, но просто указав название класса окна (т.е. --class gedit
) достаточно. Инструмент является неинтерактивным в том смысле, что Вы не должны нажимать на окно для уничтожения его, как иногда необходимо делать с xkill
.
Больше информации об опциях, доступных с xdotool
доступны с man xdotool
и в страницах справочника Ubuntu онлайн. Страницы справочника объясняют хорошо как xdotool
может быть включен в сценарий, намного легче, чем xkill
мог быть.
Таким образом, я думаю, вероятно, xdotool's
опция windowkill - то, что Вы хотите, и это может быть более удобно, чем опция xkill
.
Однако, если Вы все еще хотите использовать xkill
и подайте его идентификатор ресурса окна, так, чтобы это закрыло окно, не предлагая Вам, Вы могли проанализировать вывод xwininfo
, как в этом примере с помощью программы Meld
:
xkill -id $(xwininfo -name Meld | awk -F ':*"*' '{print $3}')
Однако название программы, отправленной в xwininfo
должен быть в надлежащем случае, так запустите программу заранее, и, в нашем примере здесь, посмотрите, ли это Meld
или meld
.
Я предпочитаю xdotool
команда, которую я дал выше как случай, не должна быть корректной: Meld
или meld
будет работать search --name
переключитесь вместо этого использует regex для соответствия данной строке и игнорирует регистр.
вы можете использовать killall
, чтобы отправить TERMSIG (сигнал завершения) в указанное вами приложение. вы можете использовать killall с помощью следующей команды
killall <id>
, например, вы можете закрыть firefox с помощью
kilall firefox
, если по какой-то причине вы должны найти правильный идентификатор приложения / процесса вы всегда можете использовать ps
, чтобы увидеть все запущенные процессы и их имена.
kill -9 <id>
определенно убьет все, что связано с этим pid.
, чтобы найти pid, я использую
ps -u $USER -f | grep gedit
, после чего их можно объединить в одну команду, если вам нужно делать это часто
Используйте команду top
, чтобы получить конкретный идентификатор процесса. Запишите его и введите следующую команду, чтобы убить Process.
kill <process id>