在進行計畫任務之前,一定要確保伺服器的時間是準確無誤的,否則將造成計畫任務失敗或者無法達到預期效果,尤其是在大規模的集群環境中,更顯得尤為重要,所以我們首先要學會的就是同步伺服器時間。
centos6:
ntpdate 172.x.x
.x 將時間與伺服器同步
vim /etc/ntp.conf 修改此檔案
server 172.x.x
.x iburst 新增此行
chkconfig ntpd on 下次開機自動啟動ntpd服務
service ntpd start 開啟ntpd服務
service ntpd status 檢查ntpd服務狀態
centos7:
ntpdata 172.x.x
.x 將時間與伺服器時間同步
vim /etc/chrony.conf 修改此檔案
server 172.x.x
.x iburst 加上此行
systemctl enable chronyd 下次啟動自動開啟chronyd服務
systemctl start chronyd 開啟chronyd服務
systemctl status chronyd 檢查chronyd服務狀態
at命令用於指定乙個定時任務,在某個特定的時間節點執行一次。at命令也可以用於刪除已經設定好的定時任務,與at命令相關的命令有atq,atrm,batch命令。at和batch名均是從標準輸入中或指定的檔案中讀取相關的命令,並在指定的時間執行對應的命令,其執行過程中使用的shell為/bin/sh。在執行at命令前,需要確保系統啟動了atd服務。
centos7:
systemctl status atd # 確認處於active(running)狀態
systemctl start atd # 如果服務未開啟,請開啟atd服務
如果at.allow和at.deny檔案不存在,則只有root使用者才允許使用at命令
at.allow檔案的優先順序大於at.deny檔案
-f:指定包含具體指令的任務檔案;
-q:指定新任務的佇列名稱;
-l:顯示待執行任務的列表;
-d:刪除指定的待執行任務;
-m:任務執行完成後向使用者傳送e-mail。
例1:三天後的下午 5 點鐘執行/bin/ls
[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at> job 7
at2018-01-08
17:00
例2:明天17點鐘,輸出時間到指定檔案內
[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.
logat> job 8
at2018-01-06
17:20
例3:使用atq命令來檢視系統沒有執行工作任務
[root@localhost ~]# atq
82018-01-06
17:20
a root
72018-01-08
17:00
a root
例4:刪除已經設定的任務
[root@localhost ~]# atq
82018-01-06
17:20
a root
72018-01-08
17:00
a root
[root@localhost ~]# atrm 7
[root@localhost ~]# atq
82018-01-06
17:20
a root
例5:顯示已經設定的任務內容
[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22此處省略n個字元
date >/root/2018.
log
而crontab命令是用於設定、移除或顯示相關為crond守護程序服務的週期性任務。linux系統缺省會安裝crond守護程序, 並在開機的時候自動啟動。每個使用者屬於自己的crontab,並且儲存在/var/spool/cron目錄下。
setvice crond status # 檢視crond的服務狀態
service crond start # 啟動服務
service crond stop
# 關閉服務
service crond restart # 重啟服務
service crond reload # 重新載入配置
linux下的任務排程分為兩類:系統任務排程和使用者任務排程。
系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。
在/etc目錄下有乙個crontab檔案,這個就是系統任務排程的配置檔案。
內容如下
[root@localhost ~]# 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
# run-parts
前三行分別定義了crontab任務執行時使用的shell、環境變數及郵件的收件人。
其後的注釋介紹了crontab任務的使用格式及各個選項的含義。
接著緊跟的四行週期性任務,分別代表每小時、每天、每週、每月執行一次的週期任務,
其執行身份為root,並且使用run-parts bash指令碼抓取隨後緊跟的目錄下的指令碼來執行。
2.使用者任務排程
使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用 crontab 工具來定製自己的計畫任務。所有使用者定義的crontab檔案都被儲存在/var/spool/cron目錄中。其檔名與使用者名稱一致,使用者許可權檔案如下:
-e:編輯該使用者的計時器設定;
-l:列出該使用者的計時器設定;
-r:刪除該使用者的計時器設定;
-u《使用者名稱》:指定要設定計時器的使用者名稱。
例1:每1分鐘執行一次command
* * * * * command
例2:每小時的第3和第15分鐘執行
3,15 * * * * command
例3:在上午8點到11點的第3和第15分鐘執行
3,15
8-11 * * * command
例4:每隔兩天的上午8點到11點的第3和第15分鐘執行
3,15
8-11 */2 * * command
例5:每個星期一的上午8點到11點的第3和第15分鐘執行、
3,15
8-11 * * 1
command
例6:每晚的21:30重啟passwd
3021 * * * /etc/init.d/passwd restart
例7:每月1、10、22日的4 : 45重啟passwd
4541,10,22 * * /etc/init.d/passwd restart
例8:每週
六、週日的1:10重啟passwd
101 * * 6,0 /etc/init.d/passwd restart
例9:每天18 : 00至23 : 00之間每隔30分鐘重啟passwd
0,30
18-23 * * * /etc/init.d/passwd restart
例10:每週三凌晨
三、五點10分執行指令碼,輸出當前時間,時間格式為 2017-12-28
10:00:00
vim date.sh
#!/bin/bash
date +'%f %t'
103,5 * * 3 root /bin/bash date.sh
Linux之計畫任務
1 at 一次性任務配置,其任務只能在指定的時間執行一次,前提是atd服務開啟。root localhost at 17 45 2017 05 30 設定任務 at ls a.txt at job 3 at 2017 05 30 17 45 root localhost atq 檢視一次性任務 ro...
Linux之計畫任務
crond就是計畫任務,類似於我們平時生活中的鬧鐘。定點執行。計畫任務主要分為以下兩種使用情況 1 系統級別的定時任務 臨時檔案清理 系統資訊採集 日誌檔案切割 2 使用者級別的定時任務 定時向網際網路同步時間 定時備份系統配置檔案 定時備份資料庫的資料 檔案說明 etc crontab cront...
Linux筆記之計畫任務
計畫任務有一次性和長期性之分 part 1 一次性任務 引數 作用at 時間 安排一次性任務 atq 或 at l 檢視任務列表 at c 序號 瀏覽任務與設定環境 atrm 序號 刪除任務 root okaka desktop at 14 45 at service network restart...