📌  相关文章
📜  在启动树莓派上运行 python 脚本 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:37:41.330000             🧑  作者: Mango

在启动树莓派上运行 python 脚本

有时候,我们想要在树莓派启动时自动运行某个 Python 脚本,这样可以方便我们在开机后就开始自动执行一些任务。下面介绍几种方法供参考。

方法一:将脚本放在 /etc/rc.local 中

/etc/rc.local 是 Linux 系统中启动时最后一个执行的脚本,我们可以将需要启动的 Python 脚本加入该文件中。

  1. 编辑 /etc/rc.local 文件:

    sudo nano /etc/rc.local
    
  2. exit 0 前面添加一行:

    python3 /path/to/your/script.py &
    

    其中,/path/to/your/script.py 是你需要执行的 Python 脚本的路径。

    & 表示在后台运行该脚本。

  3. 保存并退出编辑器。

  4. 重启树莓派,应该会自动运行你的脚本。

注意:如果你的 Python 脚本需要使用网络,你需要确保在树莓派启动的时候网络已经被正常连接。

方法二:使用 systemd

systemd 是 Linux 系统中一个管理系统和服务的工具,使用它可以方便地将你的脚本注册为系统服务。

  1. 新建一个服务文件,比如 /etc/systemd/system/myscript.service,内容如下:

    [Unit]
    Description=My Python Script
    After=multi-user.target
    
    [Service]
    Type=idle
    ExecStart=/usr/bin/python3 /path/to/your/script.py
    
    [Install]
    WantedBy=multi-user.target
    
    • Description 是该服务的描述,可以自行修改。
    • After 表示该服务需要在 multi-user.target 后启动,可根据需求调整。
    • Type 表示启动该服务的方式,idle 表示当所有任务都完成时才启动该服务,具体可参考 systemd 的文档
    • ExecStart 是需要执行的命令,其中 /usr/bin/python3 应该是所有树莓派系统中 Python 的路径,如果不是可以自己找到相应路径修改。
    • WantedBy 表示该服务所属的 target,即所属的系统运行级别,multi-user.target 表示在多用户模式下运行。
  2. 启动该服务:

    sudo systemctl start myscript.service
    
  3. 设置该服务开机自启:

    sudo systemctl enable myscript.service
    

    这样,下次树莓派重启时,这个服务就会自动运行了。

  4. 查看服务是否成功启动:

    sudo systemctl status myscript.service
    

    若服务已经启动并正常运行,会输出类似于以下内容:

    myscript.service - My Python Script
        Loaded: loaded (/etc/systemd/system/myscript.service; enabled; vendor preset: enabled)
        Active: active (running) since Thu 2021-08-26 08:00:48 CST; 1 day 3h ago
      Main PID: 440 (python3)
         Tasks: 1 (limit: 4063)
        Memory: 10.1M
        CGroup: /system.slice/myscript.service
                └─440 /usr/bin/python3 /path/to/your/script.py
    
    Aug 26 08:00:48 raspberrypi systemd[1]: Started My Python Script.
    

    如果遇到问题,可以查看系统日志:

    sudo journalctl -u myscript.service
    
执行 Python 脚本的代码片段
方法一:

/etc/rc.local 文件中添加以下命令即可:

python3 /path/to/your/script.py &
方法二:

新建服务文件 /etc/systemd/system/myscript.service,内容如下:

[Unit]
Description=My Python Script
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/python3 /path/to/your/script.py

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl start myscript.service

开机自启:

sudo systemctl enable myscript.service