Raspberry Pi OS 上的自动启动程序和调度命令

Jinku Hu 2023年1月30日 2022年5月18日
  1. 使用 Cron Daemon 在 Raspberry Pi OS 上安排任务
  2. 使用 Anacron 在 Raspberry Pi OS 上安排任务
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 的其他配置详细信息。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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