у меня есть bash
скрипт, который запускается через at
, Я бегу как echo "bash /path/to/my/script.sh" | at -M now
потому что я хочу, чтобы он работал отдельно.
Когда скрипт запускается, сразу вижу 2 экземпляра (ps
), и даже после успешного завершения моего скрипта другой экземпляр просто не завершится. Он будет заменен на pid 1
и просто продолжает ждать ( strace
показывает wait4(-1...
).
Я не могу понять, почему и как разветвляется этот второй экземпляр! Когда я запускаю сценарий без at
, Я не вижу второго процесса. Какие-нибудь подсказки / советы по отладке?
Спасибо.
проверить этот простой скрипт:
#!/bin/bash
exec >/tmp/$$.log
exec 2>/tmp/$$-2.log
set -x
echo "1"
echo "2" >&2
Это перенаправит весь вывод сценариев stdout и stderr в указанные файлы журнала (в этом случае /tmp/<pid>.log
и /tmp/<pid>-2.log
), а часть файла журнала, содержащая stderr, будет содержать каждую выполняемую команду. Вы можете использовать этот вывод, чтобы следить за выполнением скрипта и видеть, где он завис ...
содержание 17958-2.log:
+ echo 1
+ echo 2
2