Я пытаюсь использовать эту команду:
start "" putty.exe -ssh -load NameOfSessionInPutty -m "C:\Program Files\PuTTY\MYCOMMAND.txt" -t
MYCOMMAND.txt
contains:
sudo su - -c "kill `ps -ef | grep 1.sh`"
Но эта команда убивает только 1 строку (первую, которую она находит),
а мне нужно найти и убить ВСЕ процессы с этим именем 1.sh
.
Когда я делаю это вручную:
kill `ps -ef | grep 1.sh`
работает отлично, убивая все процессы с этим именем.
Но sudo su - -c "kill `ps -ef | grep 1.sh`"
убивает только первый найденный и закрывает сессию.
Помогите, пожалуйста, кто понимает, что мне нужно изменить в коде.
Не совсем понимаю, зачем вы объединяете sudo
с su
. Мне кажется, что это излишество для получения корневых прав. Вместо этого вы могли бы использовать ...
sudo kill ...
или
su kill ... -
Чтобы убить все процессы с именем 1.sh, вы можете объединить pgrep
(чтобы найти все PID) с kill
(чтобы послать SIGTERM всем этим PID).
pgrep "1.sh" | xargs kill
Вы также можете использовать pkill
, что является тем же самым, что объяснялось ранее, но объединенным в одну команду.
pkill "1.sh"
Альтернативой является killall
отправка SIGTERM всем процессам с таким именем.
killall "1.sh"