計劃任務分爲臨時性和週期性。
一、臨時性計劃任務
一般使用at命令,常用方法:
1、at 時間,例如二天後執行復制/etc/passwd文件到/root目錄下:
[root@localhost ~]# at now +2days
at> cp /etc/passwd /root/
at> <EOT>
job 8 at Mon Dec 21 15:10:00 2015
[root@localhost ~]# at -l
8 Mon Dec 21 15:10:00 2015 a root
也可以使用具體時間來執行計劃任務:
[root@localhost ~]# at 15:12 2015-12-21
at> cp /etc/passwd /root/
at> <EOT>
job 12 at Mon Dec 21 15:12:00 2015
2、查看at計劃任務:at -l 或 ls -a /var/spool/at/*(at命令會在/var/spool/at目錄下生成腳本)
[root@localhost ~]# at -l
8 Mon Dec 21 15:10:00 2015 a root
9 Mon Dec 21 15:11:00 2015 a root
12 Mon Dec 21 15:12:00 2015 a root
[root@localhost ~]# ls -la /var/spool/at/*
-rwx------. 1 root root 3133 12月 19 15:11 /var/spool/at/a000080170ed6e
-rwx------. 1 root root 3111 12月 19 15:15 /var/spool/at/a000090170ed6f
-rwx------. 1 root root 3133 12月 19 15:16 /var/spool/at/a0000c0170ed70
可以通過vim或cat查看/var/spool/at目錄下的計劃任務腳本。
3、計劃任務取消:atrm
例如取消剛纔下達的2個計劃任務(先用at -l 查看剛纔下達的任務ID)
[root@localhost ~]# at -l
8 Mon Dec 21 15:10:00 2015 a root
9 Mon Dec 21 15:11:00 2015 a root
12 Mon Dec 21 15:12:00 2015 a root
[root@localhost ~]# atrm 8 12
[root@localhost ~]# at -l
9 Mon Dec 21 15:11:00 2015 a root
二、週期性計劃任務
1、計劃任務配置文件:/etc/crontab
[root@localhost ~]# vim /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
配置文件中5個星號按順序表示分時日月周(*號之間有空格)
每個取值範圍:
分:0-59
小時:0-23
日:1-31
月:1-12
周:0-7 ( 0 、7 都是週日)
例:
1)9,18,22這幾天的3點,開始執行備份腳本 /root/backup.sh
0 3 9,18,22 * * /root/backup.sh
2)每月9-18日,這幾天,3:00執行
0 3 9-18 * * /root/backup.sh
3)每5分鐘,執行一次
*/5 * * * * /root/backup.sh
2、crontab 命令常用參數語法
1)、下達計劃任務:crontab -e
2)、查看計劃任務:crontab -l
3)、刪除計劃任務:crontab -r
4)、給用戶指定任務(下達、查看、刪除):crontab -u username [-e|-l|-r]
注:使用crontab命令下達的計劃任務在/var/spool/cron目錄下生成腳本,並不會寫入到/etc/crontab腳本中