📅  最后修改于: 2023-12-03 15:37:41.330000             🧑  作者: Mango
有时候,我们想要在树莓派启动时自动运行某个 Python 脚本,这样可以方便我们在开机后就开始自动执行一些任务。下面介绍几种方法供参考。
/etc/rc.local
是 Linux 系统中启动时最后一个执行的脚本,我们可以将需要启动的 Python 脚本加入该文件中。
编辑 /etc/rc.local
文件:
sudo nano /etc/rc.local
在 exit 0
前面添加一行:
python3 /path/to/your/script.py &
其中,/path/to/your/script.py
是你需要执行的 Python 脚本的路径。
&
表示在后台运行该脚本。
保存并退出编辑器。
重启树莓派,应该会自动运行你的脚本。
注意:如果你的 Python 脚本需要使用网络,你需要确保在树莓派启动的时候网络已经被正常连接。
systemd 是 Linux 系统中一个管理系统和服务的工具,使用它可以方便地将你的脚本注册为系统服务。
新建一个服务文件,比如 /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
表示在多用户模式下运行。启动该服务:
sudo systemctl start myscript.service
设置该服务开机自启:
sudo systemctl enable myscript.service
这样,下次树莓派重启时,这个服务就会自动运行了。
查看服务是否成功启动:
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
在 /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