Raspberry 定时运行一个脚本或程序

在实际应用中,有时需要定时运行一个脚本程序去监测任务,或者开机自启动等,这就需要树莓派可以实现定时任务,这里讲定时程序简单总结,后期会实际套一个定时闹钟的例子应用。
官方英文版简介

在Linux系统下有一个定时运行的程序命令叫“crontab”,它是是任务调度的crond常驻命令,是Linux系统下的定时任务触发器 。
限制用户使用crontab的文件有:/etc/cron.allow /etc/cron.deny 。当使用crontab建立工作排程后,将被记录到/var/spool/cron里。
cron执行的每一项工作都被记录到/varlog/cron里去。

树莓派定时执行脚本,可以通过如下指令,进入事件编辑功能

sudo crontab -e

crontab参数列表:
-u:只有root才可能,帮其他用户建立或移除工作排程。
-l:查阅crontab的当前工作内容
-r:移除所有的crontab的工作内容
-e:编辑或移除一项

每项工作有六个字段分别是:
分钟 小时 日期 月份 周 指令
0-59 0-23 1-31 1-12 0-7 指令 #0和7都代表星期天

辅助特殊字符:
*(星号)代表任何时刻
,(逗号)代表分隔时候。如3点与6点 就是3,6
-(减号)代表一段时间范围内。如:3点到6点 就是3-6
/n(斜线)n代表数字,即每隔n单位。如每隔五分钟,/5

举个例子,比如每晚定时23:50分需要关机
1.编辑crontab 任务:

sudo crontab -e

2.再文件的最后一行添加以下这行内容:

50 23 * * * sudo reboot

注:50 23 代表 每天的23:50,执行的命令就是“ sudo reboot”

编辑完成后,最好执行一下如下命令,让定时任务生效

sudo /etc/init.d/cron restart
或者
service cron restart

这样一个定时任务就写好了,查看本地时间的指定为“date”,不过为了防止意外断电,常常在实际应用中会加入硬件时钟,确保定时任务正常运行,不受断电干扰。

最后再写一个例子:
比如我的脚本是 /home/pi/get_photo.sh

执行环境为 /usr/bin/python3.6

要求每5分钟执行一次

则语句为

sudo crontab -e
*/5 * * * * /usr/bin/python3.6 /home/pi/get_photo.sh
service cron restart

顺便附上常用的周期格式

每五分钟执行 */5 * * * *

每小时执行 0 * * * *

每天执行 0 0 * * *

每周执行 0 0 * * 0

每月执行 0 0 1 * *

每年执行 0 0 1 1 *

  • *:表示所有的值,如果m字段是星号,这说明每分钟都运行。
  • ,:表示一个列表,如果m字段是 “1,5,15,58”,这说明在第1分钟,第5分钟,第15分钟和第58分钟会运行
  • -:表示一个范围,如果m字段是 1-5,这说明第1分钟、第2分钟、第3分钟、第4分钟和第5分钟都会运行
  • /:表示时间间隔,如果m字段是 */10,这说明每隔10分钟运行
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#一月一号的4点重启apache

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37273544/article/details/86565233