所以,我的小问题是:
我有一个小python程序,必须运行它24/7与互联网接入。所以用我的笔记本电脑并不是真正的解决方案。但我可以使用本地服务器。我的程序保存在服务器上。是否有一种方法可以在服务器上启动无头程序,这样它就可以长时间运行?
谢谢
发布于 2018-08-30 09:14:41
本文假设您使用的是linux。如果不是这样的话,我仍然会为其他人保留这个答案。一般原则将适用于任何操作系统。
虽然setsid是将程序放到后台的一种方法,但它通常不是您想要的,原因有以下几点:
一个稍微好一点的方法是使用tmux (或旧的screen)。这些可以用于分离进程,但仍然可以访问进程的输出。(see this answer)。
但是,如果您想要正确地处理事情,则应该使用流程管理器/主管,例如systemd或supervisord。
对于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 yourprogramnamesystemctl restart yourprogramnamesystemctl stop yourprogramnamesystemctl status yourprogramnamejournalctl -u yourprogramname(这些命令都需要sudo)
https://stackoverflow.com/questions/52092806
复制相似问题