【问题标题】:Autostarting Python scripts on boot using crontab on rasbian在 raspbian 上使用 crontab 在启动时自动启动 Python 脚本
【发布时间】:2021-05-28 21:16:27
【问题描述】:

我是一个相当新的 python 程序员,对 crontab 有点熟悉。我正在尝试做的可能不是最佳实践,但它是我最熟悉的。

我有一个带有几个 python 脚本的树莓派,我想在启动时运行并保持在后台运行。它们是无限循环程序。它们经过测试并在 cmd 终端中工作,并且已经运行了几周。只是厌倦了手动启动它们。当 pi 经历一个电源循环时。

所以我做了一个sudo crontab -e 并将这一行添加为我唯一的条目

@reboot /usr/bin/python3 /usr/bin/script.py &

如果我完全复制粘贴此内容(减去@reboot),它将在 cmd 行中成功运行。

我正在使用 cmd: pgrep -af python检查它是否正在运行。我通常会看到两个脚本在那里运行,但不是我要添加的那个。

我不确定自己哪里出错了,也不确定解决问题的最佳方法。从我一直在做的研究来看,它似乎应该有效。

感谢您的帮助 凯文

【问题讨论】:

    标签: python cron reboot


    【解决方案1】:

    您可能会发现为您想要在 Raspberry Pi 启动时启动的每个程序创建一个 systemd 服务文件更容易。 systemd 附带了一些工具来帮助您调试配置。

    这是一个示例 systemd 服务文件(位于 /etc/systemd/system/myscript.service)的样子:

    [Unit]
    Description=My service
    After=network.target
    
    [Service]
    ExecStart=/usr/bin/python3 /usr/bin/script.py
    WorkingDirectory=/home/pi/myscript
    StandardOutput=inherit
    StandardError=inherit
    Restart=always
    User=pi
    
    [Install]
    WantedBy=multi-user.target
    
    

    然后您可以使用以下命令使该程序在启动时运行:

    sudo systemctl enable myscript.service
    

    这些示例来自Raspberry Pi's documentation about systemd。但是因为 systemd 在 Linux 世界中被广泛使用,所以您也可以关注其他 Linux 发行版的文档和 StackOverflow 答案。

    【讨论】:

    • 你是对的。这更容易,更好!感谢您的帮助,它现在按预期工作。如果我想运行一个不是无限循环的 python 脚本。有没有办法让它在每次完成时自动再次运行?
    • @KevinLay,很高兴听到我的回答有帮助。如果您的程序作为无限循环运行,那么您将创建一个如上所述的 systemd“服务”。如果您想重复重新运行一个结束的程序,那么您可以创建一个 systemd “计时器”。 Here is an article 介绍了 systemd 计时器。
    猜你喜欢
    • 2015-10-25
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2017-10-25
    • 2017-03-21
    相关资源
    最近更新 更多