Можно ли убить весь процесс поиска одной командой?
Я не хочу убивать каждый процесс как kill -9 25295
, kill -9 11994
и т. д. Мне нужен простой способ или команда, которые убивают весь процесс поиска (моя цель - выполнить это действие на машинах linux и solaris).
$ ps -ef | grep find
root 25295 25290 0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.152 {} ; -print
root 11994 26144 0 09:04:18 pts/1 0:00 find /etc -type f -exec grep -l 100.106.23.153 {} ; -print
root 25366 25356 0 08:59:59 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.154 {} ; -print
root 26703 26658 0 09:00:05 pts/1 0:01 find /etc -type f -exec grep -l 100.106.23.155 {} ; -print
Это будет работать как в Linux, так и в Solaris и сделает именно то, что вам нужно:
pgrep -f 'find /etc' # verify the listing before proceeding
pkill -9 -f 'find /etc'
В вашей ситуации избегайте killall
. Если вы используете его в Linux, рано или поздно вы ошибетесь в сеансах ssh, запустите его в Solaris, создав ненужный риск.
В -f
параметр pgrep / pkill означает соответствие всей командной строке. Если вам нужно сопоставить путь к программе или скрипту (/var/tmp/test.sh
), это работает, если вы запустили его со всем путем. Чтобы быть точным, вам нужно только избежать .
так что тебе нужно
pkill -9 -f '/var/tmp/test\.sh'
Если вы запустили ту же программу, что и ./test.sh
вам нужно убить его как таковое. Видеть -f
вариант в ps
.
Использовать pkill find
который является вариантом pgrep
(process grep
). В Linux killall find
тоже будет работать.
Да, вы можете использовать команду killall
killall find