В текущей ситуации определенный сценарий call.sh запускает другой фоновый файл named.sh в фоновом режиме, выполняет другие операции, некоторое время бездействует, а затем завершает вызов файла named.sh с помощью a pkill called.sh
. Это отлично работает.
Затем, я также хотел бы запустить 'named.sh' из других терминалов в качестве отдельного скрипта в любое другое время, до или после запуска call.sh. Эти независимые экземпляры не должны быть уничтожены с помощью call.sh.
Как мне этого добиться? Интуиция говорит, что вызывающий скрипт должен иметь возможность сообщать процесс, который он запустил, от любых других однофамильцев, работающих в это время.
Как вариант, call.sh может также запускать колл, который является символической ссылкой на колл. Это усложняет управление вышеуказанной ситуацией? Какие конкретные предостережения и корректировки требует использование символической ссылки?
Ответы:
Не используйте имя, чтобы убить его. Поскольку
calling.sh
скрипт вызывает процесс, который вы позже хотите уничтожить, просто используйте$!
(fromman bash
):Итак, если вы
calling.sh
такой:Измените это на это:
источник
$calledPid
родительский PID является PID дляcalled.sh
.Я должен был выбрать это, но из сценариев так много раз; Еще интереснее, когда скрипты вызываются как часть сложного автоматизированного расписания. Вы действительно не должны полагаться на что-то вроде
pkill
выбора сценария для уничтожения.Внутри call.sh вы должны записать PID заданий, которые вы запустили, и уничтожить их явно с помощью PID.
Внутри call.sh:
источник