cron 計劃任務 作用: 計劃任務主要是做一些周期性的任務,目前最主要的用途是定期備份數據Schedule one-time tasks with at. 一次性調度執行 atSchedule recurring jobs with cron. 迴圈調度執行 cronSchedule recurr ...
cron 計劃任務
作用: 計劃任務主要是做一些周期性的任務,目前最主要的用途是定期備份數據
Schedule one-time tasks with at. 一次性調度執行 at
Schedule recurring jobs with cron. 迴圈調度執行 cron
Schedule recurring system jobs.
所有計劃任務執行中的輸出都會以郵件的方式發送給指定用戶, 除非重定向
一次性調度執行 at [瞭解]
語法格式:
at <TIMESPEC>
now +5min
teatime tomorrow (teatime is 16:00)
noon +4 days
5pm august 3 2018
例1:
[root@CentOS7 ~]# at now +1min
at> useradd uuuu
at> <EOT>
job 1 at Sat Mar 21 22:34:00 2015
[root@yang ~]# atq
3 Thu Mar 30 09:55:00 2017 a root
[root@CentOS7 ~]# id uuuu
例2:
[root@yang ~]# vim at.jobs
useradd u99
useradd u00
touch /`date +%F`.txt
[root@yang ~]# at now +1min < at.jobs
註: sudo執行需要考慮tty問題
迴圈調度執行 cron
[root@CentOS7 ~]# systemctl status crond.service
[root@CentOS7 ~]# ps aux |grep crond
root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n
crond進程每分鐘會處理一次計劃任務
=====================用戶級=====================
存儲位置:
[root@CentOS7 ~]# ls /var/spool/cron/
管理方式:
crontab -l List the jobs for the current user.
crontab -r Remove all jobs for the current users.
crontab -e Edit jobs for the current user.
管理員可以使用 -u username, 去管理其他用戶的計劃任務
禁止其他用戶使用計劃任務
/etc/cron.deny:
alice
jack
[alice@yang ~]$ crontab -e
You (alice) are not allowed to use this program (crontab)
See crontab(1) for more information
語法格式 Job format:
Minutes Hours Day-of-Month Month Day-of-Week Command
# 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
# | | | | |
# * * * * * command
0 2 * * * /mysql_back.sh
0 2 14 * * /mysql_back.sh
0 2 14 2 * /mysql_back.sh
0 2 * * 5 /mysql_back.sh
0 2 * 6 5 /mysql_back.sh
0 2 2 * 5 /mysql_back.sh
0 2 2 6 5 /mysql_back.sh
*/5 * * * * /mysql_back.sh
0 2 1,4,6 * * /mysql_back.sh
0 2 5-9 * * /mysql_back.sh
* * * * * /mysql_back.sh
0 * * * * /mysql_back.sh
* * 2 * * /mysql_back.sh
示例:
00 02 * * * ls //每天2:00整
00 02 1 * * ls //每月1號2:00整
00 02 14 2 * ls //每年2月14號2:00整
00 02 * * 7 ls //每周日2:00整
00 02 * 6 5 ls //每年6月的周五2:00整
00 02 14 * 7 ls //每月14號2:00整 或者 每周日2:00整,這兩個時間都執行
00 02 14 2 7 ls //每年2月14號2:00整 或者 每周日2:00整,這兩個時間都執行
00 02 * * * ls //每天2:00整
* 02 * * * ls //每天2:00中的每一分鐘
* * * * * ls //每分鐘執行ls
* * 14 2 * ls //2月14號的每分鐘 1440分鐘
*/5 * * * * ls //每隔5分鐘
00 02 1,5,8 * * ls //每月1,5,8號的2:00整
00 02 1-8 * * ls //每月1到8號的2:00整
=====================系統級=====================
臨時文件的清理 /tmp /var/tmp
系統信息的採集 sar
日誌的輪轉(切割)logrotate
通常不是由用戶定義
定義位置一:
[root@CentOS7 ~]# vim /etc/crontab //該文件中預設沒有定義任何計劃任務
* * * * * user-name command to be executed
定義位置二:/etc/cron.d/*
[root@CentOS7 ~]# ls /etc/cron.d
0hourly raid-check sysstat
[root@CentOS7 ~]# cat /etc/cron.d/0hourly //該文件中定義的計劃任務每小時會執行
01 * * * * root run-parts /etc/cron.hourly //每小時01分以root用戶執行/etc/cron.hourly目錄下所有腳本
crond: 僅僅會執行每小時定義的腳本 /etc/cron.hourly
每小時具體執行哪些腳本:
[root@CentOS7 ~]# ls /etc/cron.hourly/
0anacron 0yum-hourly.cron
[root@CentOS7 ~]# cat /etc/cron.hourly/0anacron
/usr/sbin/anacron -s
[root@CentOS7 ~]# vim /etc/anacrontab //該文件是anacron執行調用的文件
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
[root@yang ~]# ls /etc/cron.daily/
0yum-daily.cron logrotate man-db.cron mlocate
[root@yang ~]# ls /etc/cron.weekly/
[root@yang ~]# ls /etc/cron.monthly/
[root@CentOS7 ~]# ls /var/spool/anacron/
cron.daily cron.monthly cron.weekly
[root@CentOS7 ~]# cat /var/spool/anacron/cron.monthly
20170321
=====================cron log=====================
[root@CentOS7 ~]# tail /var/log/cron
Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22456]: finished 0anacron
Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22447]: starting 0yum-hourly.cron
Mar 29 20:01:01 CentOS7 run-parts(/etc/cron.hourly)[22462]: finished 0yum-hourly.cron
Mar 29 20:10:01 CentOS7 CROND[22563]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 29 20:20:01 CentOS7 CROND[22688]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (Syslog will be used instead of sendmail.)
Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 15% if used.)
Mar 30 09:05:31 yang crond[1399]: (CRON) INFO (running with inotify support)
Mar 30 09:10:01 yang CROND[1924]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 30 09:20:01 yang CROND[2109]: (root) CMD (/usr/lib64/sa/sa1 1 1)