【问题标题】:Run Python Script on CentOS as a Background Task在 CentOS 上运行 Python 脚本作为后台任务
【发布时间】:2021-07-06 17:20:16
【问题描述】:

我为我的 python 脚本租用了一个 CentOS 7 服务器。我创建了一个 python 脚本来连接我的电报帐户并将消息转发到目标。我用电视节目来做到这一点。 当我通过 ssh 连接到服务器时,我可以运行脚本。当我退出时,我的脚本不工作。

我使用了 nohup 和 & 但仍然无法运行脚本,直到重新启动或关闭。使用 nohup 注销后,我的脚本运行了一段时间但又关闭了。

我错过了什么?

【问题讨论】:

    标签: python ssh centos telethon


    【解决方案1】:

    后台进程与用户会话相关,一旦您断开该会话结束并且此类进程终止。要解决您的问题,您需要创建一个独立运行的服务。特别是你需要先创建一个服务配置文件:

    [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
    

    这应该可以解决您的问题

    【讨论】:

    • 除此之外,不要忘记使用以前登录的会话。否则,systemd 将运行将尝试提示用户输入(“输入收到的电报代码”)的进程,这可能会失败。因此,我们鼓励您使用绝对会话文件路径来确保不会发生这种情况(并检查文件权限)。
    • 我首先知道了,我必须登录我的电报。我做到了,我的脚本创建了会话文件。现在我可以创建我的服务了。
    • 我开始重复太快错误并且我的服务无法正常工作。我该如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多