2.4.4 自定义启动

crontab中的@reboot配置符可以让我们在启动时打开一个服务。相较于之前提到的systemd配置,crontab的配置更为简单一些。在使用crontab配置启动服务时有两点需要特别注意一下:

· 在启动时$PATH环境变量是无效的,因为$PATH环境变量只有在导入了.bashrc文件后才能生效。在启动时,还没有对应的终端环境,所有使用了$PATH环境变量的命令要手动写出完整的路径,比如/home/pi/bin/test.sh,同时也要确认文件权限是否正确。

· systemd是并行进行服务启动的。这样一来,可能在你的@reboot对应的命令执行时网络连接的服务还没有启动完成。如果你觉得自己可能遇到了类似的问题,那么你应该在crontab的配置信息里将时间延后几秒钟。

      @reboot sleep 10; /usr/bin/python3 /home/pi/Documents/
      Python_Projects/hello_gpio.py

安装mlocate后系统会添加一些脚本到/etc/cron.daily,之后locate命令会每天自动更新它的数据库,如图2-14所示。

图2-14

在crontab的配置文件里你会看到anacron(被用来管理那些已经很久没有启动的进程)。在anacrontab配置里,你可以手动定义一个最长时间,超过这个时间以后anacron就执行指定的进程。anacron常常被用来管理备份脚本,这是下一节将要讨论的内容。