學習Linux運維的個人筆記 計畫任務(三十一)

2021-10-05 01:28:32 字數 3765 閱讀 1857

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

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

crond只能控制,這個任務多久執行一次,至於是什麼任務與crond無關

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

#每年的2月14日或每年2月的周天的凌晨2點執行

*/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 *

* l #每月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執行

引數

含義-e

編輯定時任務

-l檢視定時任務

-r刪除定時任務

-u指定其他使用者

#1.如何同步時間

ntpdate time.windows.com &>/dev/null

#2.配置定時任務

crontab -e -u root

crontab -l -u root

*/5 ***

* ntpdate time.windows.com &>/dev/null

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

每天備份檔案名要求格式:2020-04-10_15_54etc.tar.gz

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

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

#1.實現需求命令

mkdir -p /backup

tar czf /backup/$(date +

%f_%h_%m)etc.tar.gz /etc/

find -

type f -name '*.tar.gz'

-mtime +3 -delete

#2.將命令放入指令碼中

cat/tmp/backup.sh

#!/user/bin/bash

mkdir -p /backup

tar czf /backup/$(date +

%f_%h_%m)etc.tar.gz /etc/

find -

type f -name '*.tar.gz'

-mtime +3 -delete

#3.放入計畫任務

crontab -l

#測試*/2 ***

*/usr/bin/sh /tmp/backup.sh &>/dev/null

通過查詢/var/log/cron中執行的記錄,去推算任務執行的時間

#1.拿到所有執行過的任務

grep "cmd"

/var

/log/cron | awk -f '('''|

sort

|uniq

#2.根據執行的任務。去過濾 ,然後找到他的執行時間和週期。

grep "/usr/bin/sh /tmp/backup.sh &>/dev/null"

/var

/log/cron

定時的備份/var/spool/cron/

(檔名取決於你是什麼使用者)

#使用root將需要拒絕的使用者加入/etc/cron.deny

echo

"u1" >> /etc/cron.deny

調整任務每分鐘執行的頻率, 以便做後續的除錯。

如果使用cron執行指令碼,請將指令碼執行的結果寫入指定日誌檔案, 觀察日誌內容是否正常。

命令使用絕對路徑, 防止無法找到命令導致定時任務執行產生故障。

通過檢視/var/log/cron日誌,以便檢查我們執行的結果,方便進行除錯。

手動執行命令,然後保留執行成功的結果。

編寫指令碼

指令碼需要統一路徑/scripts

指令碼內容複製執行成功的命令(減少每個環節出錯機率)

指令碼內容盡可能的優化, 使用一些變數或使用簡單的判斷語句

指令碼執行的輸出資訊可以重定向至其他位置保留或寫入/dev/null

執行指令碼

使用bash命令執行, 防止指令碼沒有增加執行許可權(/usr/bin/bash)

執行指令碼成功後,複製該執行的命令,以便寫入cron

編寫計畫任務

加上必要的注釋資訊, 人、時間、任務

設定計畫任務執行的週期

貼上執行指令碼的命令(不要手敲)

除錯計畫任務

增加任務頻率測試

檢查環境變數問題

檢查crond服務日誌

初級運維個人運維筆記

實時抓取並顯示當前系統中tcp 80埠的網路資料資訊,請寫出完整操作命令 tcpdump nn tcp port 80 如何重置mysql root密碼?一 在已知mysql資料庫的root使用者密碼的情況下,修改密碼的方法 1 在shell環境下,使用mysqladmin命令設定 mysqladm...

linux運維學習筆記

1 顯示 etc目錄下所有以l開頭,以乙個小寫字母結尾,且中間出現至少一位數字的檔案或目錄 ls d etc l digit lower 2,顯示 etc目錄下以任意一位數字開頭,且以非數字結尾的檔案或目錄 ls d etc digit 1 3 顯示 etc 目錄下以非字母開頭,後面跟了乙個字母及其...

學習Linux運維的個人筆記 基本許可權(十三)

許可權的定義 許可權的意義 許可權與使用者之間的關係ll root d dr xr x 2 root root 215 mar 15 19 43 root d 檔案型別 第乙個r x 屬主權限位 讀和執行許可權 第二個r x 屬組許可權位 讀和執行許可權 其他使用者許可權位 無許可權 root無視許...