Как правильно уничтожить фон .sh сценарий, который продолжает называть что-то еще, “не уничтожая меня” / уничтожающий все мои процессы?

Я зарегистрирован в удаленный сервер (сервером является CentOS, я нахожусь на Ubuntu). Я выполнил следующую команду:

nohup bash script.sh > log.txt &

script.sh содержит, упрощенный, это содержание:

for q (some condition that will trigger about 60 times)
do
sed (change config file for some other program depending on q)
execute some other program (each call of this other program takes about 25 minutes)
done

К сожалению, я понял, что в другой программе была небольшая ошибка. Я зафиксировал его без проблемы, но я испытываю затруднения, на самом деле уничтожающие этот сценарий, таким образом, я могу запустить его с фиксированной другой программы. То, когда я сделал удар nohup script.sh вначале, он высунул номер 1946, который я принимаю, является pid для script.sh. Я сделал:

pkill 1946

Это остановило ДРУГУЮ ПРОГРАММУ, которую script.sh называет (я могу сказать от файла журнала, который это создает). Но затем, script.sh называет следующее повторение другой программы. Я могу сказать, потому что файл журнала, который делает script.sh, говорит мне, и также, другая программа использует мои GPU, которые я могу контролировать с nvidia-smi. Я не вижу script.sh в "вершине", но я действительно вижу программу, которую это продолжает называть. Я смог обойти это следующим:

while true
do
sleep 1
pkill (the other program)

Приблизительно после одной минуты это уничтожает все повторения, которые сделал бы script.sh. Но это не изящный способ сделать это.

Если я был физически в том, где сервер (я действительно иногда иду), я делаю следующее в той же ситуации:

pkill -u (me)

Это уничтожает все, что я делаю. Я просто вхожу на и запускаюсь, никакое грандиозное предприятие. Это происходит много, в то время как я отлаживаю другую программу. Но прямо сейчас я зарегистрирован на пути команда как выполняемый на сервере:

ssh -r (server) (my home)

Таким образом, если я сделаю это, то это уничтожит мое соединение с сервером. Очевидно, я не хочу делать это.

Обычно я был бы немного более предприимчивым и попробовал бы вещи, прежде чем я буду работать сюда для выяснения, но я избегаю рискованных действий. Я не хочу уничтожать свое соединение SSH. Как я могу правильно уничтожить script.sh изящно? (Да, я действительно пытался просто делать "pkill script.sh", или "уничтожают script.sh", он ничего не сделал).

0
задан 5 July 2017 в 14:57

1 ответ

PS - EDF | grep script.sh

Уничтожьте процессы. Внимание на первичный процесс, который порождает остальных сначала. Затем работайте свой путь назад посредством всех дочерних процессов.

И затем уничтожьте-9 процессы #

Или

killall script.sh

2
ответ дан 3 November 2019 в 00:00

Другие вопросы по тегам:

Похожие вопросы: