0x01 先来一个小小的例子
查看当前路径:
[root@root test]# pwd
/home/admin/test
[root@root test]# crontab -l
查看当前用户的定时任务 也可以 crontab -uroot -l查看指定用户的定时任务。
千万不要忘了中间的 sh 表示用户拿什么来执行命令
00 02 * * * sh /home/admin/optbash/dailyBackup.sh
00 02 * * * sh /home/admin/optbash/deleteDebugSql.sh
建立一个用定时任务跑的bash脚本:
[root@root test]# touch test.sh
[root@root test]# vim test.sh
编辑如下内容,将系统当前时间输出到 console.txt 文件然后保存,增加可执行权限
/bin/echo `date` > /home/admin/test/console.txt
[root@root test]# ll
-rw-r--r-- 1 root root 29 Mar 27 21:31 console.txt
-rwxr-xr-x 1 root root 48 Mar 27 21:28 test.sh
[root@root test]# chmod +x ./test.sh
追加 crontab 定时任务,每分钟触发:
[root@root test]# crontab -e
00 02 * * * sh /home/admin/optbash/dailyBackup.sh
00 02 * * * sh /home/admin/optbash/deleteDebugSql.sh
* * * * * sh /home/admin/test/test.sh
前面是已经存在的定时任务,后面执行test.sh脚本的是追加的
保存后提示已经装载了新的定时任务
"/tmp/crontab.HauiiV" 3L, 143C written
crontab: installing new crontab
再次查看定时任务列表,可以看到定时任务已经添加
[root@root test]# crontab -l
00 02 * * * sh /home/admin/optbash/dailyBackup.sh
00 02 * * * sh /home/admin/optbash/deleteDebugSql.sh
* * * * * sh /home/admin/test/test.sh
查看console.txt有没有每分钟写入console.txt文件
[root@root test]# vim console.txt
Fri Mar 27 21:40:01 EDT 2015
可以看到最近一次的写入时间。
0x02 看看crontab 的时间表达式
基本格式 :
* * * * * command
分 时 日 月 周 命令
然后来几个实际的例子:
1、每分钟执行一次
* * * * *
2、每隔一小时执行一次
00 * * * * *
或
* */1 * * * (/表示频率)
3、每小时的15和30分各执行一次
15,45 * * * * (,表示并列)
4、在每天上午 8- 11时中间每小时 15 ,45分各执行一次
15,45 8-11 * * * command (-表示范围)
5、每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
6、每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
7、在每天的下午17:01执行一次reboot重启服务器操作 :
1 17 * * * root reboot
0x03 其他命令介绍
名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
0x04 crond 安装与配置服务
安装crontab:
yum install crontabs
服务操作说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:
service crond status
手动启动crontab服务:
service crond start
查看crontab服务是否已设置为开机启动,执行命令:
ntsysv
加入开机自动启动:
chkconfig –level 35 crond on
linux
对于centos7 systemd配置
yum install vixie-cron
yum install crontabs
/bin/systemctl restart crond.service #启动服务
/bin/systemctl reload crond.service #重新载入配置
/bin/systemctl status crond.service #查看crontab服务状态
编辑完了以后重新重启一下cron的任务
systemctl restart crond.service
对于ubuntu 18.04
service cron status –查看cron的状态
service cron restart –重启crontab服务
这两个命令通用
systemctl restart cron
systemctl status cron
与centos7 不同在于cron与crond之间的区别,差一个字母