[RaspberryPi] 计划任务 - Cron

Cron是Unix操作系统上用于配置计划任务的工具,它用于执行一些周期性的命令或者脚本。从每天半夜备份用户的Home目录到每小时记录一次CPU信息都可以用它来执行。

crontab(cron table)命令可以用来为每个用户编辑计划中或已完成的计划任务列表。每个用户都会一个独立的计划任务列表,包括root用户。

Cron GUI

gnome-scheduleCron的一个图形化工具。你可以这样安装:

sudo apt-get install gnome-schedule

然后从主菜单的计划任务中启动。

编辑crontab

用下面的命令来编辑crontab

crontab -e

选择编辑器

如果你是第一次使用crontab,它会让你选择一个编辑器来编辑任务列表,如下所示:

no crontab for Cocoonshu - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /usr/bin/code

Choose 1-4 [1]: 

如果你没有什么偏好的文本编辑器,则默认推荐nano

添加一个计划任务

一个crontab计划任务有6个部分组成:
分、时、日、月、星期、要执行的命令。
具体的格式如下:

# mim hour dom dow cmd
   ┬   ┬    ┬   ┬   ┬ 
   │   │    │   │   │
   │   │    │   │   └─ command: 要执行的命令
   │   │    │   └───── day of week: 配置要执行命令的星期
   │   │    └───────── day of month: 配置要执行命令的月份
   │   └────────────── hour: 配置要执行命令的小时
   └────────────────── minute: 配置要执行命令的分钟
  • dow的取值为0,1,2,3,4,5,6,分别是周日、周一、周二、周三、周四、周五、周六
  • dom的取值为1~12,表示每年的1~12月
  • hour的取值为0~23,表示每天的0点~23点
  • min的取值为0~59,表示每小时的0分~59分
  • 每个时间配置表达式可以有一下几种组合配置方式:
    • "-": 为从某个时候到某个时候要执行“cmd”。如dow配置为1-3,则表示从周一到周三要执行“cmd”任务
    • "*": 为“每个”时间单位都要执行。如过m配置为*,则每分钟都要执行一次“cmd”;如果m配置为*/n,则每隔n分钟要执行一次“cmd”任务
    • "/": 为每隔多少时间执行一次。如dom配置为*/3,则表示每隔3个月就要执行一次“cmd”任务;如果dom配置为\5-10/3,则表示从5月到10月之间,每隔3个月执行一次“cmd”任务

举例说明:

0 6-12/3 * 12 * /usr/bin/backup

表示在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup

查看计划任务

使用下面的命令来查看你当前的计划任务:

cron -l

在重启时执行任务

如果你想要在树莓派每次启动是执行一个命令,则使用@reboot来替换上面提到的时间表达式。比如说:

@reboot python /home/pi/play_audio.py

则可以在计划任务中计划一个启动树莓派时执行play_audio.py python脚本来播放音频的任务。

非阻塞任务

计划任务都是阻塞执行的,例如上面所述计划一个@reboot任务时,树莓派在启动时会等待play_audio.py脚本执行完毕后再继续执行接下来的开机流程。如果你不希望计划任务阻塞现有的流程,可以在cmd后添加一个空格 + &,如:

@reboot python /home/pi/play_audio.py &

你可能感兴趣的:([RaspberryPi] 计划任务 - Cron)