############ crond 服務指令 ############
/sbin/service crond start # 啟動服務
service crond status # 檢視狀态
/sbin/service crond stop # 關閉服務
/sbin/service crond restart # 重新開機服務
/sbin/service crond reload # 重新載入配置
chkconfig –level 35 crond on # 加入開機啟動
ntsysv # 檢視狀态
cd /etc/logrotate.d/ # 處理任務的路徑
less syslog # 檢視系統日志
ls /etc/ | grep cron* # 過濾cron 任務路徑
cron.d # 同路徑2 ,可以寫定時任務
cron.deny # 控制普通使用者使用定時任務crontab
############ crond 基本用法 ############
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace [dɪˈfɔlt] 預設 [ˌɑpəˈreʃn] 操作 是 [ˌriˈples] 替換)
-e (edit user's crontab [ˈɛdət] 編輯 [ˈjuzər] 使用者的 )
-l (list user's crontab [lɪst] 列出 使用者的 )
-r (delete user's crontab [dɪˈlit] 删除 使用者的 )
-i (prompt before deleting user's crontab [prɑmpt] 提示 [bɪˈfɔr] 以前 [dɪ'litɪŋ] 删除 使用者的
删除使用者前的提示)
-s (selinux context [ˈkɑntɛkst] 環境)
-r 删除某個使用者的cron服務(慎用)
############ cat /etc/crontab ############
SHELL=/bin/bash # 變量指定了系統要使用哪個shell,這裡是bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# PATH變量指定了系統執行指令的路徑
MAILTO=root # mail to電子郵件任務執行資訊發送給root使用者
# For details see man 4 crontabs
# details ['di:teɪlz] 詳情,see [siː] 領悟,參見
# Example of job definition: 工作定義示例
# [ɪgˈzæmpəl] 示例, [ʌv] 屬于...的, [ʤɑb] 工作, [ˌdɛfəˈnɪʃən] 定義
# .---------------- minute (0 - 59) [ˈmɪnɪt] 分鐘
# | .------------- hour (0 - 23) [ˈaᴜər] 小時
# | | .---------- day of month (1 - 31) [de] 天,[ʌv] 屬于...的,[mʌnθ] 月:每月的第幾天
# | | |
# | | | .------- month (1 - 12) [mʌnθ] 月,1到12月
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | | [wik] 周, 周的第幾天:星期幾;
# | | | | |
# * * * * * user-name command to be executed
使用者名字, [kəˈmænd] 指令, [tu bi] 的, ['ɛksɪ,kjʊtɪd] 執行
# 分 時 日 月 周 指令
1 * * * * # 每小時的第一分鐘,小時:1分 如:1:01 2:01 3:01 為等效于每小時,是屬于時鐘
# 星号(*) 代表所有可能的值
# 逗号(,) 清單範圍: 1,2,3,4
# 中杠(-) 整數範圍1到4: 1-4
# 正斜線(/) 時間的間隔頻率: 0-23/2 每兩個小時執行一次
5 * * * * Command 每小時的第5分鐘執行一次指令
30 18 * * * Command 指定每天下午的 6:30 執行一次指令
30 7 8 * * Command 指定每月8号的7:30分執行一次指令
30 5 8 6 * Command 指定每年的6月8日5:30執行一次指令
30 6 * * 0 Command 指定每星期日的6:30執行一次指令
1 * * * * root 每分鐘執行
0 4 1 jan * 1月1号4:00
0 11 4 * mon-wed 每月的4号與每周一到周三的11點
mon 星期1; wed 星期3
20-30/1 1-10/5 * * * # 1點的20-30分和6點的20-30分執行
# 注意開始時間也要執行,先有時間,然後才有間隔
一月 January [ˈʤænjuˌɛri] 八月 August
二月 February [ˈfɛb(j)uˌɛri] 九月 September
三月 March 十月 October
四月 April 七月 July
五月 May 十一月 November
六月 June 十二月 December
星期一Monday 星期二Tuesday
星期三Wednesday 星期四Thursday
星期五Friday 星期六Saturday
星期天Sunday
注意:
數字的表示最好用2為阿拉伯數字顯示
周和日最好不要同時用
定時任務要加注解
可以定向到日志檔案或者空檔案
定時任務一定是絕對路徑,且目錄必須存在才能出結果
crontab 服務一定要開啟運作
############ crond 定義定時任務 ############
vi /etc/crontab # 編輯任務配置檔案,追加一行任務
*/1 * * * * root /root/1.sh
# 每 1分鐘執行一次,root 使用者的任務,是:執行腳本/root/1.sh
# 直接将 /root/1.sh 修改為指令即可,如:echo "1111" >> 1.txt
# */1 * * * * root reboot 每分鐘重新開機伺服器
systemctl restart crond # 重新開機服務,開始執行計劃任務
vi 1.sh
#!/bin/bash
# catalog=( # 素組的格式是小括号:請将IP位址放置括号内,分隔符是換行或者空格
# 111
# 222
# )
# catalog[$i] # 指定數組角标對應的元素
# ${#filecatalog[*]} # 素組元素個數
read -p "請輸入目錄:" catalog
# [ˈkætəlɔg]目錄
filecatalog=(
$(ls $catalog)
)
quantity=${#filecatalog[*]} # [ˈkwɑn(t)ədi] 數量;kuan t ti
echo "目前目錄(數組)中檔案個數數量為:$quantity"
frequency=$quantity # [ˈfrikwənsi] 次數; fei ou kuan si
for((i=1;i<=$frequency; i++))
do
sleep 1
echo "
`date`
正在依次列印改目錄的的檔案資訊: ${filecatalog[$i]}
"
done
sed -i "/^$/d" 1.sh ; chmod 755 1.sh
# =========
其他方式執行指令:
crontable -e #寫入指令
crontable -l #檢視記錄