CRON计划任务
rpm -qa|grep cron
若未安装先安装crontabs模块
yum install -y vixie-cron crontabs
关闭服务 重启服务 重新载入配置 启动服务
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
/sbin/service crond start
服务配置文件: /etc/crontab
[root@sre ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
minute hour day month dayofweek command
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
例如:
每两个小时 0 */2 * * *echo "Good morning." >> /tmp/test.txt //(注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。)
晚上11点到早上8点之间每两个小时,早上八点 0 23-7/28 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 command line
45 4 1,10,22 * * /bin/date
每月1、1 0、2 2日的4 : 4 5运行date
0,30 18-23 * * * /bin/date
在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行date
@reboot 在这里是算作一个特殊的时间,后面就只能接命令,不能再设置别的时间了。
man 5 crontab 可以看到还有其它的,比如我这边的 linux 里面显示有以下八个:
string meaning
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
crontab与执行结果不一致:
在脚本头刷新环境变量
source ~/.bash_profile
source /etc/profile
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
在执行crontab -e命令时,会在/var/spool/cron目录下创建一个文件,文件的名称是你当前的用户名,内容就是你添加的计划任务。
@reboot ( sleep 90 ; sh locationscript.sh )
开机90s延时执行
首先需要为 /etc/rc.local 添加执行权限,
$ sudo chmod +x /etc/rc.local
如果是 CentOS,我们修改的是文件 /etc/rc.d/rc.local 而不是 /etc/rc.local
centos6下安装crontab:
yum -y install vixie-cron
crontab为何自动中断
https://mp.weixin.qq.com/s/KdgIYX4zb_xoYNVIugBLvg
原来,这是由于在部分机器上,crontab对于执行程序的输出有大小限制,输出超出一定的字节之后就会自动停止程序。
而我的程序每发送1000条数据即会输出一条log,所以每次正好输出49000这条log之后,就超出了大小限制,因此每次都会自动停止在48999条了。
解决方案:可以 重定向输出至 >/dev/null,如