[RaspberryPi] 开机服务 - systemd

为了在树莓派启动时执行一个命令或程序,你可以设置一个服务。一旦你有了一个服务,则可以使用start/stop/enable/disable来控制服务的执行。

创建服务

在Pi上,你需要以root身份在/etc/systemd/system目录下创建一个.service文件来创建服务。如下:

background_music.service

[Unit]
Description=BackgroundMusic
After=network.target

[Service]
ExecStart=/usr/bin/python3 -u play_audio.py
WorkingDirectory=/home/pi/myscript
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

在这个示例中,服务会在使用python3来执行/home/pi/myscript目录下的play_audio.py脚本。服务不仅限于执行python脚本,修改ExecStart后的命令即可执行程序或者shell命令。

启动/停止服务

  • 使用下面的命令可以启动一个服务:
    sudo systemctl start background_music.service
    
  • 使用下面的命令可以停止一个服务:
    sudo systemctl stop background_music.service
    

开机启动服务

  • 使用下面的命令把服务设置为开机自动启动
    sudo systemctl enable background_music.service
    
  • 使用下面的命令取消服务的开机自动启动
    sudo systemctl disable background_music.service
    

需要注意服务的启动依赖顺序:

  • 服务需要在它所依赖的服务启动之后再启动。background_music.service服务被指定在网络有效之后才启动(After=network.target
  • 服务的启动顺序和依赖可以在.service文件里配置

更多关于服务控制的细节,可以参考man systemctl

你可能感兴趣的:([RaspberryPi] 开机服务 - systemd)