Я написал скрипт, и он работает нормально. Он выполняет некоторые операции с хвостом и grep. Когда я закрываю свой терминал и определяю PID моего скрипта, я могу обнаружить, что скрипт все еще присутствует в выводе «ps -eaf | grep -i myScript.sh». Однако я не хочу такого поведения. Мне нужно знать, как я могу справиться с такой ситуацией. Я не хочу нагружать процессор своим скриптом. Пожалуйста, дайте мне знать. Я искал в Google и в основном нашел «Как сохранить скрипт в фоновом режиме». но я не мог получить ничего конкретного о том, чтобы остановить это.
Заранее спасибо.
user 9405 18803 0 07:32 pts/72 00:00:00 grep 29735
user 29735 11903 0 07:24 pts/30 00:00:00 sh myScript.sh
user 29818 29735 0 07:24 pts/30 00:00:00 tail -f --pid=29735 /var/log/message
user 29830 29735 0 07:24 pts/30 00:00:00 -csh
Ваш сценарий запускается в другой оболочке и использует параметр -f
(следовать) для tail
, который добавляет вывод по мере роста файла. Короче говоря, у сценария нет точки выхода, поэтому он не должен заканчиваться, даже если вы хотите, чтобы сценарий это сделал.
tl; dr:
создать ловушку выхода bash и уничтожить ваш фон задание оттуда.
Подробности:
Создайте файл PID в своем хвосте
/ grep
скрипте следующим образом:
echo $$> $ HOME / script.pid
Добавьте обработчик выхода в оболочку входа, добавив что-то вроде этого в свой $ HOME / .bash_profile
:
завершение функции {
# Ваш код очистки здесь
kill -9 `cat $ HOME / script.pid`
}
ловушка конец ВЫХОД
Прибыль.
Это сломается, если вы активируете свой tail
скрипт несколько раз. Это можно сделать, создав файл блокировки или пропустив файл script.pid
и создав killall
внутри ловушки
функция