[RaspberryPi] 计划任务 - Cron
2019-03-01 本文已影响0人
Cocoonshu
Cron是Unix操作系统上用于配置计划任务的工具,它用于执行一些周期性的命令或者脚本。从每天半夜备份用户的Home目录到每小时记录一次CPU信息都可以用它来执行。
crontab
(cron table)命令可以用来为每个用户编辑计划中或已完成的计划任务列表。每个用户都会一个独立的计划任务列表,包括root
用户。
Cron GUI
gnome-schedule是Cron的一个图形化工具。你可以这样安装:
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 &