天天看點

Linux crond 計劃任務添加

############  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    #檢視記錄           

繼續閱讀