5分鐘白嫖我常用的免費效率軟體/工具!效率300% up!
阿新 • • 發佈:2020-07-29
一、定義
CRONTAB是一個用於設定週期性執行任務的工具
優勢:相容幾乎所有Linux版本
二、遠端終端工具推薦
1、Git Bash(Windows)
- 優點:模擬Linux命令列、自帶強大的命令庫
2、Terminal(Linux,MacOS)
- 優點:系統原生、操作簡單、功能庫強大
三、crontab安裝
1、安裝crond服務和crontab工具(CentOS7)
yum clean all
yum update
yum install -y cronie crontabs
四、驗證CROND服務
1、驗證crond服務和crontab工具(CentOS7)
-
檢查crond服務是否安裝及啟動
# && 判斷左側執行成功,才執行右側 # systemctl status crond:檢查crond當前服務是否安裝在當前系統服務中 # 返回:inactive(未啟動)與active(running)(已啟動) 兩種狀態 yum list cronie && systemctl status crond
-
檢查crond工具是否安裝
# yum list crontabs:檢查crontabs工具是否已經安裝到yum的安裝包列表當中 # which crontab:檢查crontabs工具安裝在系統的哪個目錄中 # crontab -l:返回當前crontabs的任務列表 yum list crontabs && which crontab && crontab -l
五、CRONTAB架構
# 1、登入主機
# 2、登入crontab表單
crontab -e
# 3、輸入
# * * * * *:分 時 日 月 周
# my command:要執行的命令或者指令碼
* * * * * my command
# 儲存並退出
:wq
# 4、返回crontabs的任務列表
crontab -l
# 5、重啟守護程序
systemctl restart crond
# 6、檢視執行狀態
systemctl status crond
六、CRONTAB檔案格式
1、格式
* * * * * my command
佔位符 | 含義 | 範圍 |
---|---|---|
第一個佔位符* | 分 | 0~59 |
第二個佔位符* | 時 | 0~23 |
第三個佔位符* | 日 | 1~31 |
第四個佔位符* | 月 | 1~12 |
第五個佔位符* | 周 | 0~6(0代表星期日,1-6代表星期一至星期六) |
my command | 命令或指令碼 |
2、特殊符號代表某一個時間的特定含義
特殊符號 | 含義 |
---|---|
* | 取值範圍內的數字,通常代表對應時間區間內所涵蓋的所有數字 |
/ | 每,通常與*組合.例如:每多少分鐘/小時 |
- | 到。2-10(分佔位符):2到10分鐘 |
, | 分開幾個離散的數字。2,10(分佔位符):第2分鐘和第10分鐘 |
注:佔位符和命令要有空格隔開。每行都是一個表單任務。設定後需重啟守護程序
3、示例
# 每分鐘列印一行shell輸出並寫入檔案
* * * * * echo -e "Hello" > /root/test.out
七、CRONTAB配置檔案
1、系統配置檔案
vim /etc/crontab
2、系統使用者crontab配置檔案儲存目錄
crontab -e
# 儲存目錄:/var/spool/cron/
# 如果是root使用者,實際編輯的是:/var/spool/cron/root
# 如果是其他使用者(例:user01),實際編輯的是:/var/spool/cron/user01
八、CRONTAB環境變數
1、新增PATH到/etc/crontab
# 例如新增java環境變數
vim /etc/crontab
# 追加PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_111/bin
2、在執行具體任務前引入系統/使用者環境變數(推薦)
# 每天2:30
# source /etc/profile:手動新增一個系統級別的環境變數,給當前使用者使用。以便給sh命令使用
30 2 * * * source /etc/profile;sh /root/test.sh
# 新增一個使用者級別環境變數
30 2 * * * source ~/.bash_profile;sh /root/test.sh
# 重啟,使crond任務生效
systemctl restart crond
注:要在/etc/profile和~/.bash_profile配置要用到的環境變數
九、CRONTAB命令列
1、編輯並儲存當前使用者的計劃任務
crontab -e
systemctl restart crond
2、檢視當前使用者(root)儲存的計劃任務
crontab -l
cat /var/spool/cron/root
十、CRONTAB日誌
1、Cron日誌儲存在系統目錄/var/log/cron
# 檢視任務記錄
tail -n 2 /var/log/cron
輸出
Mar 25 18:53:01 crontab CROND[8900]: (root) CMD (source /etc/profile;sh /root/test.sh)
# Mar 25 18:53:01:時間
# CROND[8900]:守護程序執行的第8900條任務
# (root):使用者
# CMD ():crond的命令
十一、CRONTAB實戰
1、清理系統日誌
1.1、命令清除
# 1、進入存放系統日誌的目錄
cd /var/log
# 2、列出所有日誌檔案的大小
du -sh *
# 3、開啟任務表單
crontab -e
# 新增記錄
# 每日1點
# messages系統的主要日誌
# cat /dev/null 空檔案 放到 /var/log/messages,達到清空messages的目的
* 1 * * * cat /dev/null > /var/log/messages
:wq
# 4、檢視任務表單
crontab -l
# 5、使任務生效
systemctl restart crond
1.2、指令碼清除
# 建立指令碼
vim /root/log_clean.sh
#!/bin/sh
cat /dev/null > /var/log/messages
cat /dev/null > /var/log/secure
:wq
# 新增任務
* 1 * * * sh /root/log_clean.sh
2、備份原始碼(Source Code)
2.1、準備
/home/backup : 備份存放的目錄
/home/script : 執行備份指令碼存放的目錄
/home/www : 原始碼存放的目錄
2.2、建立指令碼檔案
vim /home/scrip/www_backup.sh
#!/bin/sh
basedir=/home/backup
www_src=$basedir/www_src/$(date +%F_%H%M)
[ ! -d "$www_src" ] && mkdir -p $www_src
cd /home
tar -jpcf $www_src/www.tar.bz2 www
crontab -e
* * * * * sh /home/scrip/www_backup.sh
:wq
systemctl restart crond
十二、CRONTAB在iptables上的應用
時時監控網路狀態,並將blacklist的IP地址新增iptables鏈中,並將這些IP加入黑名單中,禁止訪問主機。
1、關閉firewalld
# 檢視防火牆狀態
systemctl status firewalld
# 禁用該服務
systemctl disable firewalld
# 關閉該服務
systemctl stop firewalld
2、安裝iptables-services
# 安裝
yum install iptables-services
# 確認
y
# 開啟服務
systemctl enable iptables
# 啟動服務
systemctl start iptables
# 驗證
iptables -V
3、編寫指令碼
cd /data/script
vim /data/script/firewall.sh
#!/bin/sh
# 清空iptables的所有目錄
iptables -F
list=/data/script/blacklist.txt
for line in `cat $list`;do
iptables -I INPUT -s$line -j DROP
echo "$line is dropped into blacklist"
done
crontab -e
* * * * * source /etc/profile;sh /data/script/firewall.sh
:wq
systemctl restart crond
iptables -nvl
十三、CRONTAB在Jenkins拓展
1、安裝Jenkins
# 安裝jenkins
yum install jenkins
# 確認
y
# 檢視java的安裝路徑
which java
# 檢視java版本
java -version
# 編輯jenkins的配置檔案
vim /etc/init.d/jenkins
# 找到candidates 新增 當前機器的java所在路徑
# 啟動服務
systemctl start jenkins
# 檢視jenkins服務是否正常啟動 並檢視jenkins是否開啟8080埠監聽服務
lsof -i:8080
2、WEB配置jenkins
- 主機IP:8080:登入jenkins配置介面
- 安裝推薦外掛
- 建立管理員使用者
- 開始使用Jenkins
- 建立一個新任務
- 輸入名稱 並 點選“構建一個自由風格的軟體專案”
- 構造觸發器下 ==> 勾選“Build periodically”
- 日程表輸入表示式(例如:* * * * *)
- 構建下 ==> 增加構建步驟 ==> 選擇“Execute shell” ==> command輸入 echo "Hello"
- 儲存
十四、常用的CRON(來自網路)
#1、在 12:01 a.m 執行,即每天凌晨過一分鐘。這是一個恰當的進行備份的時間,因為此時系統負載不大。
1 0 * * * /root/bin/backup.sh
# 2、每個工作日(Mon – Fri) 11:59 p.m 都進行備份作業。
59 11 * * 1,2,3,4,5 /root/bin/backup.sh
# 下面例子與上面的例子效果一樣:
59 11 * * 1-5 /root/bin/backup.sh
# 3、每5分鐘執行一次命令
*/5 * * * * /root/bin/check-status.sh
# 4、每個月的第一天 1:10 p.m 執行
10 13 1 * * /root/bin/full-backup.sh
#5、每個工作日 11 p.m 執行。
0 23 * * 1-5 /root/bin/incremental-backup.sh
該內容學習自慕課網Crontab不知疲倦的時間表