首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本地服务器上运行Python无头程序

在本地服务器上运行Python无头程序
EN

Stack Overflow用户
提问于 2018-08-30 08:49:47
回答 1查看 2K关注 0票数 1

所以,我的小问题是:

我有一个小python程序,必须运行它24/7与互联网接入。所以用我的笔记本电脑并不是真正的解决方案。但我可以使用本地服务器。我的程序保存在服务器上。是否有一种方法可以在服务器上启动无头程序,这样它就可以长时间运行?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 09:14:41

本文假设您使用的是linux。如果不是这样的话,我仍然会为其他人保留这个答案。一般原则将适用于任何操作系统。

虽然setsid是将程序放到后台的一种方法,但它通常不是您想要的,原因有以下几点:

  • 如果您再次将ssh输入服务器,则无法轻松查看程序的输出。任何输出都不会保留。
  • 如果程序崩溃,它将不会被重新启动。
  • 如果服务器重新启动,它将不会启动。
  • 没有简单的方法可以查看状态、停止或重新启动它。

一个稍微好一点的方法是使用tmux (或旧的screen)。这些可以用于分离进程,但仍然可以访问进程的输出。(see this answer)。

但是,如果您想要正确地处理事情,则应该使用流程管理器/主管,例如systemd或supervisord。

对于systemd,可以创建以下文件:/etc/systemd/system/yourprogramname.service

在其中放置以下文本:

代码语言:javascript
复制
[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)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52092806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档