Назад | Перейти на главную страницу

linux / solaris убивает множество процессов одной командой

Можно ли убить весь процесс поиска одной командой?

Я не хочу убивать каждый процесс как 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