Raspberry Pi OS 上的自动启动程序和调度命令
本文将介绍几种在树莓派操作系统上在特定时间自动调度程序和命令的方法。
使用 Cron Daemon 在 Raspberry Pi OS 上安排任务
cron
守护程序的基础知识在我们的一篇文章中进行了介绍,如果你不熟悉它,我们建议你先阅读。在这种情况下,我们将演示如何在操作系统成功启动后立即自动启动程序。
请记住,crontab
文件包含每个计划作业的一行,其中前五项是时间-日期字段。相反,当我们想安排一个 cron 作业在系统启动时运行时,我们必须使用一个特殊的关键字说明符 - @reboot
。
cron
为常见时期提供了几个关键字,例如 @daily
、@weekly
、@monthly
、@hourly
等。
以下 crontab 条目定义了一个 cron 作业以在系统启动时运行 sleep
命令。请注意,所有五个日期时间字段都使用 @reboot
关键字替换。
当在同一个 cron 作业条目中使用特殊关键字时,你不会指定其他字段。
@reboot sleep 30m
在这种情况下,我们选择了 sleep
命令,因为它是一种创建长时间运行进程的简单方法,以后可以使用不同的命令对其进行检查。
上面的示例命令运行 sleep
程序 30 分钟,然后自动退出。
你可以通过传递信号来显式终止它。首先,你需要使用以下命令查找进程 ID。
ps -A | grep sleep
输出:
514 ? 00:00:00 sleep
然后你可以运行带有 PID(进程 ID)参数的 kill
命令来终止 sleep
程序。
kill 514
关于 crontab
配置文件的更多详细信息可以在相应的 Debian 手册页中找到。
使用 Anacron 在 Raspberry Pi OS 上安排任务
cron
非常适合在不停机的情况下运行系统,而普通用户经常关闭他们的设备。后一种情况可能会导致错过 cron 作业,因此我们可能需要一个解决方案来在系统运行后运行这些作业。
anacron
类似于 cron
,它提供异步调度任务,这意味着错过的任务最终将在某个时间运行。但是,anacron
仅支持一天的最小时间间隔;因此它可能不适合许多场景。
anacron
任务条目位于 /etc/anacrontab
配置文件中。
配置文件通常包含多个条目,但你可以在文件末尾附加用户定义的任务,甚至可以添加以 #
字符开头的自定义注释。
在下面的示例中,我们创建了一个日常任务来运行 sleep 30m
命令。
1 10 cron.daily sleep 30m
请注意,第一列 (1
) 指定任务运行之间的间隔天数,而第二列表示给定任务在系统启动时运行时延迟的分钟数。
错过的任务预计会出现后一种情况,因为系统在指定时间没有运行,anacron
将在下次启动时运行它们。但是,你可能希望延迟一些任务以减轻系统启动时的过度负载,因此是第二列。
anacron
的一个缺点是你的用户必须具有管理员权限才能设置任务。在 Raspberry Pi OS 上,pi
用户可以通过使用 sudo
前缀命令修改 /etc/anacrontab
来设置 anacron
任务。
你可以在此处找到 anacron
的其他配置详细信息。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn相关文章 - Raspberry Pi
- Raspberry Pi OS 上的 Cron 作业和任务调度
- 保护你的 Raspberry Pi - SSH 协议安全
- 查找你的 Raspberry Pi 的 MAC 地址
- 查找你拥有的 Raspberry Pi OS 版本
- 查找树莓派的 IP 地址