Как убить определенную команду поиска?

Как убить определенную команду поиска?

Конкретная команда find, которую я пытаюсь завершить, выполняется внутри созданного пользователем скрипта?

Я создал скрипт, внутри которого содержится команда find, которая выполняется в течение 10 минут. Прежде чем я снова запущу этот же скрипт, он должен завершить эту команду find.

решение1

пгреп

Вы можете использовать pgrepс -aпереключателем:

pgrep -a find

он выдаст вам полную командную строку, а также идентификатор процесса:

10838 find / -iname png
10839 find / -iname jpg

затем вы можете решить, хотите ли вы убить его или нет:

kill 10838

убьет png.

pkill

Вы также можете использовать pkillэто так:

pkill -x "find / -iname png"

-xозначает: сопоставлять только процессы, имена которых.

Найти дочерний процесс:

используйте tree для поиска нужного процесса. Допустим, имя вашего скрипта — «script.sh». Вы можете использовать pgrep -f scriptего для поиска, а затем передать вывод в , pstreeчтобы получить список его дочерних процессов и завершить процесс поиска, который является дочерним процессом вашего скрипта.

$ pstree -p $(pgrep -f script)
bash(10915)───find(10916)
$ kill 10916

Связанный контент