一.如何创建crontab定时任务:
通常情况下,只有root用户和具有sudo权限的用户才能执行crontab此操作。
1.添加/编辑crontab文件:
如何 添加/编辑 Crontab:crontab -e
#这将打开文本编辑器以编辑当前用户的cron作业。#默认情况下,系统会编辑 当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,需要使用到如下的命令: crontab -u username -e
2.添加或修改你的定时任务:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday to Saturday;
# | | | | | 7 is also Sunday on some systems)
# | | | | |
# * * * * * user-name command to be executed
按照上面的格式添加你的定时任务。
3.保存并退出编辑器:
4.重启crond服务以使更改生效:
systemctl restart crond.service
注意:
linux的crontab中的执行文件,必须要有可执行权限,才能被crontab定时执行。如果没有可执行权限,及时配置到了crontab中 也是无法被定时触发执行的。
linux中如何添加文件的执行权限:
要在Linux上增加文件的执行权限,可以使用以下方法:
1. 使用chmod命令:chmod命令用于改变文件的权限。例如,要为文件添加执行权限,可以使用以下命令:
chmod +x filename
这将为文件添加执行权限。
2.使用文件权限数字表示法:文件权限可以用数字表示,每个权限都有一个对应的数字值。执行权限的数字值为1。要为文件添加执行权限,可以使用以下命令:
chmod 755 filename
这将为文件添加所有者可读、写、执行权限,组用户和其他用户只有可读和执行权限。
ps:请注意,要使用chmod命令,您需要有足够的权限。如果您不是文件的所有者或root用户,您可能需要使用sudo命令来提升权限。
r:读权限,w:写权限, x:执行权限
这样你添加的cron作业就会按照预定的时间执行了。如果你只是想查看当前用户的crontab而不编辑,可以使用crontab -l命令。
二 查看Crontab命令集合
查看当前系统登录用户的Crontab命令集合: crontab -l
查看其他用户的Crontab命令集合 :crontab -u ussername -l
情况一:正常情况(系统有service命令)
重启服务命令:[root@centos6 /]# service crond restart
启动服务命令:[root@centos6 /]# service crond start
停止服务命令:[root@centos6 /]# service crond stop
情况二:当linux发行的版本没有service这个命令时候,用如下命令进行停止启动:
停止服务:[root@centos6 /]# /etc/init.d/cron空格stop
启动服务:[root@centos6 /]# /etc/init.d/cron空格start
下面是利用这个方式恢复cron的一个小例子。(看看就行~)
首先:检查当前的cron
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
然后:备份cron到文件中
# crontab -l > cron-backup.txt
# cat cron-backup.txt
MAIL=rahul
0 2 * * * /script/backup.sh
接着:移除当前的cron
# crontab -r
# crontab -l
no crontab for root
恢复:从text file中恢复
# crontab cron-backup.txt
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
3.crontab配置规则
20个超实用的Crontab使用实例
1.每天 02:00 执行任务
0 2 * * * /bin/sh backup.sh
2.每天 5:00和17:00执行任务
0 5,17 * * * /scripts/script.sh
3.每分钟执行一次任务
通常情况下,我们并没有每分钟都需要执行的脚本(默默的想到了12306--)
* * * * * /scripts/script.sh
4.每周日 17:00 执行任务
0 17 * * sun /scripts/script.sh
5.每 10min 执行一次任务
*/10 * * * * /scripts/monitor.sh
6.在特定的某几个月执行任务
* * * jan,may,aug * /script/script.sh
7.在特定的某几天执行任务
0 17 * * sun,fri /script/scripy.sh
在每周五、周日的17点执行任务
8.在某个月的第一个周日执行任务
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
9.每四个小时执行一个任务
0 */4 * * * /scripts/script.sh
10.每周一、周日执行任务
0 4,17 * * sun,mon /scripts/script.sh
11.每个30秒执行一次任务
我们没有办法直接通过上诉类似的例子去执行,因为最小的是1min。但是我们可以通过如下的方法。
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh
12.多个任务在一条命令中配置
* * * * * /scripts/script.sh; /scripts/scrit2.sh
13.每年执行一次任务
@yearly /scripts/script.sh
@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行,通常我们可以用这个发送新年的问候。
14.系统重启时执行
@reboot /scripts/script.sh
15.将 Cron 结果重定向的特定的账户
默认情况下,cron 只会将结果详情发送给 cron 被制定的用户。如果需要发送给其他用户,可以通过如下的方式:
# crontab -l
MAIL=bob
0 2 * * * /script/backup.sh
16.将所有的 cron 命令备份到文本文件当中
这是一个当我们丢失了cron命令后方便快速的一个恢复方式。
Crontab 配置规则
