如何在Ubuntu服务器的后台运行Python程序

时间:2018-02-16 08:39:48

标签: python selenium server ubuntu-16.04 nohup

我有一个python脚本。脚本与Chrome一起使用selenium并访问网站,获取数据并输入CSV文件 这是一项很长的工作 我把脚本放在服务器上。并运行。一切工作。 但我需要在后台编写脚本。

chmod +x createdb.py
nohup python ./createdb.py &

我看到了

(env)$ nohup ./createdb.py &
[1] 32257
(env)$ nohup: ignoring input and appending output to 'nohup.out'

按Enter键。

(env)$ nohup ./createdb.py &
[1] 32257
(env)$ nohup: ignoring input and appending output to 'nohup.out'
[1]+  Exit 1                  nohup ./createdb.py

然后它运行并立即将错误写入文件,Chrome没有启动或没有点击。
我想提醒你,如果你没有nohup开始,那么一切都会奏效 我究竟做错了什么?如何运行脚本?
非常感谢你。

3 个答案:

答案 0 :(得分:2)

您可以创建一个后台守护程序(服务)
您对Ubuntu 16.04进行了测试,这意味着您已获得systemd,有关如何设置的更多信息,请访问此link

创建一个名为<my_service>.system的文件 并把它放在那里:/etc/systemd/system

你的systemd单位看起来像这样:

[Unit]
Description=my service
After=graphical.target

[Service]
Type=simple
WorkingDirectory=/my_dir
ExecStart=python my_script.py

[Install]
WantedBy=multi-user.target

然后您需要做的就是重新加载systemd manage并启动您的服务:

sudo systemctl daemon-reload
sudo systemctl myservice start

答案 1 :(得分:1)

您可以使用screen命令,它可以正常工作。

这是一个非常好的链接:https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

答案 2 :(得分:0)

您可以使用env目录中的简单命令:

(env)$ python /path/to/createdb.py > logger.txt 2>&1 &

这有助于将程序日志存储在名为&#34; logger.txt&#34;

的定义文件中