
Конкретная команда 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