寫一個shell腳本,定時執(zhí)行簡單示例
很多時候我們有希望服務器定時去運行一個腳本來觸發(fā)一個操作酷宵,比如說定時去備份服務器數(shù)據(jù)钩乍、數(shù)據(jù)庫數(shù)據(jù)等 不適合人工經(jīng)常做的一些操作這里簡單說下
Shell俗稱殼溺拱,類似于DOS下的command和后來的cmd.exe卤档。它接收用戶命令蝙泼,然后調(diào)用相應的應用程序。作為命令語言劝枣,它交互式解釋和執(zhí)行用戶輸入的命令或者自動地解釋和執(zhí)行預先設定好的一連串的命令汤踏;作為程序設計語言,它定義了各種變量和參數(shù)舔腾,并提供了許多在高級語言中才具有的控制結構溪胶,包括循環(huán)和分支。
我的虛擬機是centos7.0.2
接下來 寫一個簡單的shell命令:
1.先進入根目錄
cd /root
2.使用vi編輯器 可以直接 # vim hello.sh編寫第一個shell文件 hello.sh稳诚, 注意一定要以.sh結尾
vim hello.sh
3.編寫第一個shell文件哗脖,#!/bin/bash 是必須要寫的,表示要是/bin/bash這個執(zhí)行腳本的命令執(zhí)行接下來寫的腳本, echo "hello world !!"表示想前端打印一句話扳还,具體看各自需求才避。
4.通過chmod命令賦予該腳本的執(zhí)行權限chmod 755 hello.sh,否則沒有執(zhí)行權限普办,/root/hello.sh表示在全路徑下執(zhí)行該shell腳本
就此一個簡單的shell腳本就這樣寫完了 具體的這里就不講了工扎。(說白了,shell腳本就相當于一個文件衔蹲,它專門來干自己獨立的任務)
雖然一個簡單的shell腳本寫完了 但是運行后只能執(zhí)行一次 對很多應用場景來說還是不夠,接下來說一下定時任務
linux應該都有crontab呈础,沒有的話可以安裝一下:
yum install vixie-cron
yum install crontabs
vixie-cron軟件包是cron的主程序舆驶;
crontabs軟件包是用來安裝、卸裝而钞、或列舉用來驅(qū)動 cron 守護進程的表格的程序沙廉。
安裝完以后開啟crontab服務
service crond start
用以下的方法啟動、關閉這個cron服務:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置
查看crontab服務狀態(tài):service crond status
手動啟動crontab服務:service crond start
查看crontab服務是否已設置為開機啟動臼节,執(zhí)行命令:ntsysv
加入開機自動啟動:
chkconfig –level 35 crond on
也可以用設置開機自動啟動crond服務:
[root@CentOS ~]# chkconfig crond on
查看各個開機級別的crond服務運行情況
[root@CentOS ~]# chkconfig –list crond
crond 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
可以看到2撬陵、3珊皿、4、5級別開機會自動啟動crond服務
取消開機自動啟動crond服務:
[root@CentOS ~]# chkconfig crond off
設置需要執(zhí)行的腳本
新增調(diào)度任務可用兩種方法:
1)巨税、在命令行輸入: crontab -e 然后添加相應的任務蟋定,wq存盤退出。
2)草添、直接編輯/etc/crontab 文件驶兜,即vi /etc/crontab,添加相應的任務远寸。
crontab -e配置是針對某個用戶的抄淑,而編輯/etc/crontab是針對系統(tǒng)的任務
查看調(diào)度任務
crontab -l //列出當前的所有調(diào)度任務
crontab -l -u jp //列出用戶jp的所有調(diào)度任務
刪除任務調(diào)度工作
crontab -r //刪除所有任務調(diào)度工作
直接編輯 vim /etc/crontab ,默認的文件形式如下:
前四行是有關設置cron任務運行的環(huán)境變量。
SHELL變量的值指定系統(tǒng)使用的SHELL環(huán)境(該樣例為bash shell)驰后,
PATH變量定義了執(zhí)行命令的路徑肆资。Cron的輸出以電子郵件的形式發(fā)給MAILTO變量定義的用戶名。
如果MAILTO變量定義為空字符串(MAILTO="")灶芝,電子郵件不會被發(fā)送郑原。執(zhí)行命令或腳本時HOME變量可用來設置基目錄。
文件/etc/crontab中每行任務的描述格式如下:
minute hour day month dayofweek command
minute - 從0到59的整數(shù)
hour - 從0到23的整數(shù)
day - 從1到31的整數(shù) (必須是指定月份的有效日期)
month - 從1到12的整數(shù) (或如Jan或Feb簡寫的月份)
dayofweek - 從0到7的整數(shù)监署,0或7用來描述周日 (或用Sun或Mon簡寫來表示)
command - 需要執(zhí)行的命令(可用as ls /proc >> /tmp/proc或 執(zhí)行自定義腳本的命令)
root表示以root用戶身份來運行
run-parts表示后面跟著的是一個文件夾颤专,要執(zhí)行的是該文件夾下的所有腳本
對于以上各語句,星號()表示所有可用的值钠乏。例如在指代month時表示每月執(zhí)行(需要符合其他限制條件)該命令栖秕。
整數(shù)間的連字號(-)表示整數(shù)列,例如1-4意思是整數(shù)1,2,3,4
指定數(shù)值由逗號分開晓避。如:3,4,6,8表示這四個指定整數(shù)簇捍。
符號“/”指定步進設置∏喂埃“/<interger>”表示步進值暑塑。如0-59/2定義每兩分鐘執(zhí)行一次。步進值也可用星號表示锅必。如*/3用來運行每三個月份運行指定任務事格。
以“#”開頭的為注釋行,不會被執(zhí)行。
比如上述圖中 執(zhí)行的是每隔一分鐘執(zhí)行一半hello.sh腳本 上邊腳本輸出的內(nèi)容 大家也知道 >> 符號 指定文件獲取內(nèi)容的存放位置 比如訪問一個地址 命令 curl http://www.baidu.com
linux系統(tǒng)字符界面 無法顯示畫面只能把訪問的頁面編譯后的代碼原樣輸出 如:
這樣大家看著很亂吧
當然也有-I 參數(shù) 靜默訪問 curl -I http://www.baidu.com
這樣只顯示一組http狀態(tài) 但還是很亂 直接把他寫進固定的日志文件就方便多了
cat 一下 查看 這樣就簡單多了
就此一個簡單的定時任務就完成了
結束語》》夕陽無限好搞隐,黃昏又何妨驹愚。