Как к xkill приложение его идентификатором?

Я должен моделировать поведение сочетания клавиш (ALT+F4) с помощью Терминала для данного приложения.

Если я откроюсь, например, gedit и нажму ALT + F4, то GEDIT будет xkilled. Если я хочу достигнуть того же самого с помощью Терминала, как я должен продолжить двигаться?

Следующая команда (для уничтожения процесса gedit) хорошо работает:

kill $eval `pidof gedit`

все же, команда

xkill -id gedit

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

Причина, почему я хочу достигнуть этого поведения, состоит в том, что некоторые клиенты приложений поддерживают свой процесс в рабочем состоянии, даже при том, что Вы ALT+F4 оно. Моя потребность состоит в том, что у меня есть приложение, которое запускает на каждом входе в систему, и я должен автоматически закрыть его клиент спустя 3 или 5 секунд после того, как он обнаруживается.

3
задан 11 November 2012 в 22:19

4 ответа

Эквивалент 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 для соответствия данной строке и игнорирует регистр.

2
ответ дан 11 November 2012 в 22:19

вы можете использовать killall, чтобы отправить TERMSIG (сигнал завершения) в указанное вами приложение. вы можете использовать killall с помощью следующей команды

killall <id> 

, например, вы можете закрыть firefox с помощью

kilall firefox

, если по какой-то причине вы должны найти правильный идентификатор приложения / процесса вы всегда можете использовать ps , чтобы увидеть все запущенные процессы и их имена.

0
ответ дан 11 November 2012 в 22:19
kill -9 <id>

определенно убьет все, что связано с этим pid.

, чтобы найти pid, я использую

ps -u $USER -f | grep gedit

, после чего их можно объединить в одну команду, если вам нужно делать это часто

0
ответ дан 11 November 2012 в 22:19

Используйте команду top, чтобы получить конкретный идентификатор процесса. Запишите его и введите следующую команду, чтобы убить Process.

kill <process id>
0
ответ дан 11 November 2012 в 22:19

Другие вопросы по тегам:

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