所以,这是我的小问题:
我有一个小型python程序,必须通过Internet访问24/7运行。因此,使用笔记本电脑并不是真正的解决方案。但是我可以使用本地服务器。我的程序保存在服务器上。有没有办法在服务器上无头启动程序,因此它可以长时间运行?
谢谢
答案 0 :(得分:0)
使用setsid
分离程序:
setsid python myprog.py
答案 1 :(得分:0)
本文假定您使用的是Linux。如果不是这种情况,我仍然会为其他任何人保留这个答案。通用原则将适用于任何操作系统。
尽管setsid
是将程序置于后台的一种方法,但是由于多种原因,通常它不是您想要的:
一种更好的方法是使用tmux
(或较旧的screen
)。这些可以用来分离一个进程,但是仍然可以访问它的输出。 (see this answer)。
但是,如果您想正确执行操作,则应该使用流程管理器/主管,例如systemd或supervisor。
对于systemd,您可以创建以下文件:/etc/systemd/system/yourprogramname.service
在其中放置以下文本:
[Unit]
Description=YourDescription
[Service]
ExecStart=/usr/bin/python3 /your/full/script/location.py
Restart=always
[Install]
WantedBy=multi-user.target
(这些文件支持许多其他选项,您可以在http://0pointer.de/public/systemd-man/systemd.service.html上查看它们)
然后使用systemctl daemon-reload
重新加载单元,并使用systemctl enable yourprogramname.service
在启动时启用单元。
然后,您可以:
systemctl start yourprogramname
systemctl restart yourprogramname
systemctl stop yourprogramname
systemctl status yourprogramname
journalctl -u yourprogramname
(这些命令都需要sudo)