今天这篇日志记录下linux crontab 配置定时任务。
实现linux定时任务有:cron、anacron、at等,我这里主要使用cron服务。
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
查看是否安装了cron
rpm -qa|grep vixie-cron
这个电脑貌似是默认安装的,我的系统是默认安装的。
查看是否安装了crontabs软件包:
rpm -qa|grep crontabs
安装软件命令(这个我没尝试过,有需要可以试下)
yum install vixie-cron yum install crontabs
查看crontab服务状态:
service crond status
启动crontab服务:
service crond start
停止crontab服务
:
service crond stop
重启crontab服务:
service crond restart
重新载入配置
service crond reload
设定某个用户的cron服务
crontab -u
列出某个用户cron服务的详细内容
crontab -l
删除用户的cron服务
crontab -r
编辑某个用户的cron服务
crontab -e
/******************* 这是主要部分 start ********************/
确定服务器安装了 crontab 之后
假设当前用户是root,要建立root用户的定时任务
crontab -e
选择编辑器,编辑定时任务(这里假设是编辑器是vi)
按i进入编辑模式
0 1 * * * /usr/local/etc/rc.d/lighttpd restart #每天1点重启apache
THINKPHP5 访问语句
30 22 * * * /usr/bin/php /var/www/html/xxxxx/public/index.php 模块名/控制器名/方法名 # 每天22点30执行
按esc退出编辑模式进入普通模式,输入:x或:wq保存退出\
这样定时任务就配置完成了。
这里是重点:
linux的vi命令用不明白没有关系。存放定时任务命令的文件在
/var/spool/cron
路径下,每个用户对应一个文件,所以,不愿意使用vi命令,可以去这个目录下,找到对应文件,将命令粘贴进去就好了。
然后可以使用下边这个命令查看当前用户所配置的所有定时任务(这个跟服务器的配置相关,就不截图了)
crontab -l
使用下边命令删除用户的cron服务
crontab -r
/******************* 这是主要部分 end *********************/
crontab 格式
基本格式 :
* * * * * command
分 时 日 月 周 命令
**第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
**
**
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如/10,如果用在minute字段,表示每十分钟执行一次。*
crontab文件的一些例子:
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
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
每半小时同步一下时间
上边只是一些从网上找到的实例,具体执行还是要参照自己的服务器情况。