Пусть скрипт Python запускается в фоновом режиме Unix
У меня есть сценарий Python, который я хочу выполнить в фоновом режиме на моем Unix-сервере. Суть в том, что мне нужен скрипт python, чтобы дождаться завершения предыдущего шага, прежде чем переходить к следующему заданию, но я хочу, чтобы моя работа продолжала выполняться после выхода.
Я думаю, что могу настроить следующим образом, но хотел бы получить подтверждение:
Выдержка из сценария выглядит следующим образом, где команда 2 зависит от выходных данных команды 1, поскольку она выводит отредактированный исполняемый файл в том же каталоге. Я хотел бы отметить, что команды 1 и 2 не включают nohup/&.
subprocess.call('unix command 1 with options', shell=True)
subprocess.call('unix command 2 with options', shell=True)
Если, когда я запускаю свой скрипт на Python, вот так:
% nohup python python_script.py &
Будет ли мой сценарий работать в фоновом режиме, поскольку я явно не включил nohup/& в свои скриптовые команды unix, а вместо этого запустил сценарий python в фоновом режиме?
2 ответа
Да, запустив ваш скрипт на python с помощью nohup (без зависания), ваш скрипт не перевернется, когда сеть будет разорвана, а завершающий символ & запустит ваш скрипт в фоновом режиме.
Вы по-прежнему можете просматривать выходные данные своего скрипта, nohup направит стандартный вывод в файл nohop.out. Вы можете присматривать за выводом в реальном времени, подгоняя этот выходной файл:
$ tail -f nohop.out
краткое примечание о файле nohup.out...
nohup.out The output file of the nohup execution if
standard output is a terminal and if the
current directory is writable.
или добавьте команду с & для запуска скрипта python в качестве демона и следите за журналами.
$ nohup python python_script.py > my_output.log &
$ tail -f my_output.log
Ты можешь использовать nohup
chomd +x /path/to/script.py
nohup python /path/to/script.py &
Или же
Вместо того, чтобы закрывать свой терминал, используйте logout
Это не SIGHUP, когда вы делаете logout
таким образом, оболочка не отправит SIGHUP ни одному из своих детей. детей.