2019-02-22 Linux定时任务 & Shell脚本练习
Linux定时任务
1.crontab命令
检查是否安装crontab
rpm -qa | grep crontab
/*
结果:
crontabs-1.11-6.20121102git.el7.noarch
*/
crontab服务启动和关闭
/etc/init.d/crond stop
/etc/init.d/crond start
/etc/init.d/crond restart
/etc/init.d/crond reload #重新载入配置
配置文件
[root@localhost etc]# ll | grep cron
-rw-------. 1 root root 541 Apr 11 2018 anacrontab
drwxr-xr-x. 2 root root 54 Aug 13 2018 cron.d #系统自动定期需要做的任务
drwxr-xr-x. 2 root root 57 Aug 13 2018 cron.daily #每天执行一次的任务
-rw-------. 1 root root 0 Apr 11 2018 cron.deny #控制不让哪些用户执行crontab功能
drwxr-xr-x. 2 root root 41 Aug 13 2018 cron.hourly #每小时执行一次的任务
drwxr-xr-x. 2 root root 6 Jun 10 2014 cron.monthly #每月执行一次的任务
-rw-r--r--. 1 root root 451 Jun 10 2014 crontab #设置定时任务执行文件
drwxr-xr-x. 2 root root 6 Jun 10 2014 cron.weekly #每周执行一次的任务
用户自定义配置文件
#每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.
crontab 文件格式
* * * * * command
minute hour day month week command
分 时 天 月 星期 命令
minute 0-59
hour 0-23
day 1-31
month 1-12
week 0-7 #0或7代表星期日
command 要执行的命令 也可以是shell脚本
星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。
逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。
中杠(-):表示一个时间范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
示例1
test.sh
#/bin/bash
for((i=1;i<=9;i++))
do
for((j=1;j<=i;j++))
do
echo -e "$i * $j = $(($i*$j))\t\c"
done
echo -e "\n"
done
[root@localhost tmp]# crontab -e
* * * * * /home/tmp/test.sh >> /home/tmp/shlog.log 2 >& 1 #每分钟执行一次test.sh 结果定向shlog.log
#注:
如果在设置crontab定时任务时没有指明对应的输出文件, 则会将定时任务日志输出到/var/spool/cron 下对应用户的文件中
设置定时任务的开机启动
chkconfig --list crond // 查看crond是否开机自动启动
chkconfig --level 35 crond on // 设置crond开机自动启动