CRONTAB

什么是CRONTAB?

CRONTAB是一個(gè)用于設(shè)置周期性執(zhí)行任務(wù)的工具

crontab命令常見(jiàn)于Unix和類Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行。該詞來(lái)源于希臘語(yǔ) chronos(χρνο),原意是時(shí)間。通常,crontab儲(chǔ)存的指令被守護(hù)進(jìn)程激活, crond常常在后臺(tái)運(yùn)行,每一分鐘檢查是否有預(yù)定的作業(yè)需要執(zhí)行。這類作業(yè)一般稱為cron jobs。

CRONTAB案例應(yīng)用

1、每分鐘需要執(zhí)行一個(gè)腳本進(jìn)行系統(tǒng)Health Check

2、每天凌晨對(duì)過(guò)去的一天系統(tǒng)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)

3、每周對(duì)系統(tǒng)日志進(jìn)行備份切割

4、每個(gè)月對(duì)系統(tǒng)關(guān)鍵數(shù)據(jù)進(jìn)行備份

CRONTAB安裝

安裝crond服務(wù)和crontab工具(CentOS7)

yum clean all??????????????????????????????????????????????????? 清理yum緩存

yum update????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 更新系統(tǒng)安裝包到最新版本

yum install -y cronie crontabs?????????????????????? 安裝crond服務(wù)和crontab工具到centos中

驗(yàn)證CROND服務(wù)

驗(yàn)證crond服務(wù)和crontab工具(CentOS7)

檢查crond服務(wù)是否安裝及啟動(dòng):yum list cronie&&systemctl status crond

檢查crontab工具是否安裝:yum list crontabs&&which crontab&&crontab -l


驗(yàn)證crond服務(wù)


驗(yàn)證crontab工具

CRONTAB架構(gòu)


CRONTAB文件格式


說(shuō)明:

第一個(gè)占位符代表分鐘。范圍是0-59

第二個(gè)占位符代表小時(shí)。范圍是0-23

第三個(gè)占位符代表日。范圍1-31

第四個(gè)占位符代表月。范圍1-12

第五個(gè)占位符代表星期。范圍是0-6

My Command。要允許的命令,范圍:命令或腳本

*代表取值范圍的數(shù)字,通常代表對(duì)應(yīng)時(shí)間區(qū)間內(nèi)所涵蓋的所有數(shù)字

/代表每,通常與*組合。例如2/*,在分這個(gè)占位符中代表每2分鐘。5/*,在時(shí)這個(gè)占位符代表每5小時(shí)

連字符-代表某個(gè)時(shí)間或者某個(gè)數(shù)字到某個(gè)數(shù)字之間的區(qū)間。例如2-10,在分這個(gè)占位符代表第二分鐘到第10分鐘

,分開幾個(gè)離散的數(shù)字。例如在分這個(gè)占位,2,10就是代表第二分鐘,第10分鐘

EXAMPLE

每分鐘打印一行shell輸出并寫入文件

* * * * * echo -e "This is a test output">/root/test.out

查看表單任務(wù):crontab -l

緩存生效:systemctl? restart? crond

CRONTAB配置文件

系統(tǒng)配置文件

/etc/crontab

系統(tǒng)用戶crontab配置文件保存目錄(crontab -e)

說(shuō)明:crontab -e是將任務(wù)寫入/var/spool/cron/文件

root:/var/spool/cron/root

user01:/var/spool/cron/user01

創(chuàng)建一個(gè)use01的用戶

useradd user01

su - user01

CRONTAB環(huán)境變量


LINUX系統(tǒng)環(huán)境變量設(shè)置

vi /etc/profile

在文件最底部添加

PATH=$PATH:/usr/local/jdk1.8.0_111/bin

export PATH

用戶級(jí)別環(huán)境變量設(shè)置

vi /root/.bash_profile

如果原來(lái)有PATH=$PATH:$HOME/bin

在后面追加

PATH=$PATH:$HOME/bin:/usr/local/jdk1.8.0_111/bin

export PATH

在配置系統(tǒng)與用戶級(jí)別環(huán)境變量后編寫shell腳本與環(huán)境變量配合完成crontab表單任務(wù)的執(zhí)行操作。

vi /root/test.sh

java -version 2>/root/script.out

crontab? -e?? 添加crontab計(jì)劃任務(wù)

* * * * *?? source /etc/profile;sh? /root/test.sh

* * * * *??? source /root/.bash_profile;sh /root/rest.sh

systemctl? restart crond 重啟計(jì)劃任務(wù),使任務(wù)生效

CRONTAB命令行

編輯并保存當(dāng)前用戶的計(jì)劃任務(wù)

crontab -e

重啟crond服務(wù),使剛添加的任務(wù)生效

systemctl?? restart? crond

查看當(dāng)前用戶(root)保存的計(jì)劃任務(wù)

crontab? -l

cat /var/spool/cron/root

CRONTAB日志


查看crontab日志? cat /var/log/cron

查看最后2條crontab日志? tail? -n 2 /var/log/cron

清理系統(tǒng)日志

系統(tǒng)日志存放目錄 /var/log

cron???? crontab日志

firewalld ? ? 系統(tǒng)防火墻日志信息

lastlog? 登錄保存日志信息

message? 系統(tǒng)的總?cè)罩?/p>

secure? ssh相關(guān)服務(wù)的日志信息

查看當(dāng)前目錄下所有文件日志大小

du -sh? *

日志清理

* * * * *? cat?? /dev/null >? /var/log/messages

crontab? -l

systemctl?? restart crond

shell腳本清理多條日志

在root下創(chuàng)建一個(gè)shell腳本log_clean.sh

#!/bin/sh

cat?? /dev/null?? >/var/log/messages

cat?? /dev/null?? >/var/log/secure

crontab -e

* * * * * sh /root/log_clean.sh

crontab -l

systemctl?? restart? crond

備份Source? Code

編寫shell腳本www_backup.sh

#!/bin/sh

basedir=/data/backup

www_src=$basedir/www_src/$(date +%F_%H%M)

[ ! -d "$www_src" ] && mkdir -p $www_src

cd /data

tar -jpcf $www_src/www.tar.bz2 www

crontab -e

* * * * * sh /data/script/www_backup.sh

crontab -l

systemctl restart? crond

CRONTAB在iptables上的應(yīng)用

禁用firewalld??? systemctl? disable firewalld

關(guān)閉firewalld??? systemctl stop firewalld

查看firewall???????? systemctl? status?? firewalld

安裝iptables服務(wù)? yum? install?? iptables-services

開啟iptables服務(wù)? systemctl enable? iptables

啟動(dòng)iptables服務(wù)? systemctl start? iptables

查看iptbles是否安裝成功? iptables? -V

編寫firewall.sh

#!/bin/sh

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容