1. 程式人生 > 實用技巧 >python3 獲取當前路徑及os.path.dirname的使用

python3 獲取當前路徑及os.path.dirname的使用

一、定義

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不知疲倦的時間表