Пусть скрипт 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

  1. chomd +x /path/to/script.py
  2. nohup python /path/to/script.py &

Или же

Вместо того, чтобы закрывать свой терминал, используйте logout Это не SIGHUP, когда вы делаете logout таким образом, оболочка не отправит SIGHUP ни одному из своих детей. детей.

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