Nohup для запуска программы на Python - PullRequest
0 голосов
/ 27 августа 2018

Я работаю на удаленном сервере, оборудованном CentOS с локального компьютера,

Я бы хотел запустить следующие коды:

nohup python3 search_large_files.py &

Однако, это не сработало, как я ожидал

[root@iz2ze9wve43n2nyuvmsfx5z ~]# ps ax| grep nohup
29360 pts/1    R+     0:00 grep --color=auto nohup

Как я могу использовать nohup для запуска своих кодов python, чтобы я мог выключиться и заснуть, пока сервер работает.

1 Ответ

0 голосов
/ 27 августа 2018

nohup удаляет себя из имени запущенного процесса. По этой причине вы не можете найти его с помощью ps ax| grep nohup.

Проверьте этот файл test.py, который я сделал:

import sys
import time
while True:
    time.sleep(0.5)
    sys.stdout.write('ok\n')
    sys.stdout.flush()

Запуск:

nosklo@stackoverflow:~$ python3 test.py 
ok
ok
^CTraceback (most recent call last):
  File "test.py", line 4, in <module>
    time.sleep(0.5)
KeyboardInterrupt

Теперь с nohup:

nosklo@stackoverflow:~$ nohup python3 test.py > foo.txt &
nohup: ignoring input and redirecting stderr to stdout
[1] 12453
nosklo@stackoverflow:~$ ps ax | grep -i nohup
nosklo  12548  0.0  0.0  15976   944 pts/17   S+   14:14   0:00 grep --color=auto -i nohup
nosklo@stackoverflow:~$ ps ax | grep -i python
nosklo  12453  0.0  0.0  31400  5660 pts/17   S    14:13   0:00 python3 test.py
nosklo  12528  0.0  0.0  15976   940 pts/17   S+   14:14   0:00 grep --color=auto -i python

Как вы можете видеть, он есть с pid 12453, но без nohup в названии.

nosklo@stackoverflow:~$ kill %1
[1]+  Terminated               nohup python3 test.py > foo.txt
nosklo@stackoverflow:~$ tail foo.txt
ok
ok
ok
....

И все это время работало.

...