Linux之計畫任務

2021-09-28 22:08:56 字數 3719 閱讀 5985

crond就是計畫任務,類似於我們平時生活中的鬧鐘。定點執行。

計畫任務主要分為以下兩種使用情況

1)系統級別的定時任務: 臨時檔案清理、系統資訊採集、日誌檔案切割

2)使用者級別的定時任務: 定時向網際網路同步時間、定時備份系統配置檔案、定時備份資料庫的資料

檔案說明

/etc/crontab

crontab配置檔案

/etc/cron.deny

該檔案中所列使用者不允許使用crontab命令

/var/spool/cron/*

所有使用者定時檔案都存放在此目錄,檔案以使用者名稱命名

/var/log/cron*/

定時任務執行後的日誌檔案

crontab配置檔案記錄了時間週期的含義

[root@yfy ~]# vim /etc/crontab

shell=/bin/bash                     #執行命令的直譯器

path=/sbin:/bin:/usr/sbin:/usr/bin  #環境變數

mailto=root                         #郵件發給誰

# 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 to be executed

​# * 表示任意的(分、時、日、月、周)時間都執行

# - 表示乙個時間範圍段, 如5-7點

# , 表示分隔時段, 如6,0,4表示周

六、日、四

# /1 表示每隔n單位時間, 如*/10 每10分鐘

表示式例項

00 02 * * * ls      #每天的凌晨2點整執行

00 02 1 * * ls      #每月的1日的凌晨2點整執行

00 02 14 2 * ls     #每年的2月14日凌晨2點執行

00 02 * * 7 ls      #每週天的凌晨2點整執行

00 02 * 6 5 ls      #每年的6月周五凌晨2點執行

00 02 14 * 7 ls     #每月14日或每週日的凌晨2點都執行

00 02 14 2 7 ls     #  

*/10  02 * * * ls   #每天凌晨2點,每隔10分鐘執行一次

* * * * *  ls       #每分鐘都執行

00 00 14 2 *  ls    #每年2月14日的凌晨執行命令

*/5 * * * *  ls     #每隔5分鐘執行一次

00 02 * 1,5,8 * ls  #每年的1月5月8月凌晨2點執行

00 02 1-8 * *  ls    #每月1號到8號凌晨2點執行

0 21 * * * ls       #每天晚上21:00執行

45 4 1,10,22 * * ls #每月1、10、22日的4:45執行

45 4 1-10 * * ls     #每月1到10日的4:45執行

3,15 8-11 */2 * * ls #每隔兩天的上午8點到11點的第3和第15分鐘執行

0 23-7/1 * * * ls   #晚上11點到早上7點之間,每隔一小時執行

15 21 * * 1-5 ls    #周一到周五每天晚上21:15執行

crontab選項引數

說明-l

計畫任務列表

-u指定使用者

-e編輯計畫任務

-r清空計畫任務

#1.為計畫任務增加必要的注釋

[root@yfy cron]# crontab -l

#time sync

*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

​#2.規範計畫任務執行指令碼存放的路徑/soft/scripts

[root@yfy cron]# crontab -l

#backup www to /backup

00 01 * * * /bin/sh /soft/scripts/www.backup.sh &>/dev/null

​#3.執行shell指令碼任務前加/bin/sh,指令碼結尾加&> /dev/null

(1)每天凌晨3點做一次備份?備份/etc/目錄到/backup下面

1) 將備份命令寫入乙個指令碼中

2) 每天備份檔案名要求格式: 2019-10-24_hostname_etc.tar.gz

3) 在執行計畫任務時,不要輸出任務資訊

4) 存放備份內容的目錄要求只保留三天的資料

#1.實現如上備份需求

[root@yfy backup]# mkdir -p /backup

[root@yfy backup]# tar zcf $(date +%f)_$(hostname)_etc.tar.gz /etc

[root@yfy backup]# find /backup -name "*.tar.gz" -mtime -3 -exec rm -f {} \;

#2.將命令寫入至乙個檔案中

[root@yfy backup]# vim /root/back.sh

mkdir -p /backup

cd /backup

tar zcf $(date +%f)_$(hostname)_etc.tar.gz /etc

find /backup -name "*.tar.gz" -mtime +3 -exec rm -f {} \;

#3.配置定時任務

[root@yfy backup]# crontab -e

00 03 * * * /bin/sh /root/back.sh &>/dev/null

(2)書寫乙個定時任務,每天0點將/var/log/nginx下7天之前大於1g的日誌檔案轉移到/backup/2019-xx-xx的目錄中

#1.建立指令碼

[root@yfy backup]# vim find.sh

#!/bin/sh

​dir=/backup/$(date +%f)

mkdir -p $dir

find /var/log/nginx -type f -size +1g -name "*.log" -mtime +7 -exec mv {} \dir \;

#2.配置定時任務

[root@yfy backup]# crontab -e

00 03 * * * bash /root/find.sh &>/dev/null

linux之計畫任務

在進行計畫任務之前,一定要確保伺服器的時間是準確無誤的,否則將造成計畫任務失敗或者無法達到預期效果,尤其是在大規模的集群環境中,更顯得尤為重要,所以我們首先要學會的就是同步伺服器時間。centos6 ntpdate 172.x.x x 將時間與伺服器同步 vim etc ntp.conf 修改此檔案...

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筆記之計畫任務

計畫任務有一次性和長期性之分 part 1 一次性任務 引數 作用at 時間 安排一次性任務 atq 或 at l 檢視任務列表 at c 序號 瀏覽任務與設定環境 atrm 序號 刪除任務 root okaka desktop at 14 45 at service network restart...