运行 Python CentOS 上的脚本作为后台任务
Run Python Script on CentOS as a Background Task
我为 python 脚本租用了 CentOS 7 服务器。我创建了一个 python 脚本来连接我的电报帐户并将消息转发给目标。我用 telethon 来做到这一点。
当我通过 ssh 连接到服务器时,我可以 运行 脚本。当我注销时,我的脚本不工作。
我使用了 nohup 和 & 但在重新启动或关机之前仍然无法 运行 编写脚本。使用 nohup 注销后,我的脚本工作了一段时间但再次关闭。
我错过了哪些要点?
后台进程与用户会话相关,一旦断开连接,会话结束,此类进程终止。要解决您的问题,您需要创建一个独立运行的服务。特别是你需要先创建一个服务配置文件:
[Unit]
Description=My Python program
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=<command to start your program>
[Install]
WantedBy=multi-user.target
您用来执行程序的命令在哪里。
此文件需要保存在 /etc/systemd/system/.service 中,其中 是您选择的名称。
让程序在系统重启时启动:
sudo systemctl enable <my_service>.service
要手动启动程序:
sudo systemctl start <my_service>.service
这应该可以解决您的问题
我为 python 脚本租用了 CentOS 7 服务器。我创建了一个 python 脚本来连接我的电报帐户并将消息转发给目标。我用 telethon 来做到这一点。 当我通过 ssh 连接到服务器时,我可以 运行 脚本。当我注销时,我的脚本不工作。
我使用了 nohup 和 & 但在重新启动或关机之前仍然无法 运行 编写脚本。使用 nohup 注销后,我的脚本工作了一段时间但再次关闭。
我错过了哪些要点?
后台进程与用户会话相关,一旦断开连接,会话结束,此类进程终止。要解决您的问题,您需要创建一个独立运行的服务。特别是你需要先创建一个服务配置文件:
[Unit]
Description=My Python program
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=centos
ExecStart=<command to start your program>
[Install]
WantedBy=multi-user.target
您用来执行程序的命令在哪里。
此文件需要保存在 /etc/systemd/system/
让程序在系统重启时启动:
sudo systemctl enable <my_service>.service
要手动启动程序:
sudo systemctl start <my_service>.service
这应该可以解决您的问题