1

Как часть сценария туннеля, я хочу удалить / убить все существующие туннели

Пока мне удалось добраться до:

Matt @ HY731AA:~ $ ps aux | grep "ssh -N lin1tunnels" | grep -v grep | awk '{print $ 2}' | xargs -0 kill -9 ОШИБКА:идентификатор процесса мусора "5321 5322".

Похоже, что вывод содержит "хотя удаление xargs не показывает", есть ли способ очистить вывод, готовый для xargs. Или, может быть, кто-то знает лучший способ для достижения вышеизложенного

2 ответа2

4

Редактировать:

Используйте pkill:

 pkill -9 -f "ssh -N lin1tunnels"

Избегайте отправки сигнала SIGKILL указанному процессу или группе процессов. Прочитайте Бесполезное использование Kill -9

4

@ Предложение Джона о pkill - более чистый способ сделать это (если он у вас есть), но только для записи: проблема в том, что вы используете флаг -0 xarg (который говорит ему искать значения, разделенные нулем), но отправка значений, разделенных символом новой строки. Кроме того, вместо того, чтобы использовать второй grep для удаления первого из ваших результатов, ищите шаблон, который не будет соответствовать самому себе:

ps aux | grep "[s]sh -N lin1tunnels" | awk '{print $2}' | xargs kill -9

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .