{eval=Array;=+count(Array);}
這個非常簡單,crontab命令就可以輕松實現,下面我簡單介紹一下操作過程:
1.首先,新建需要定時執行的shell腳本,這里我為了方便說明問題,新建了一個打印當前時間的腳本date.sh,內容如下,非常簡單,就是一行date命令,然后將輸出重定向到一個date.txt文本中:
2.接著就是將這個date.sh腳本添加到定時任務中,直接運行“crontab -e”命令添加就行,如下,這里先以每分鐘執行一次腳本為例,看定時任務能否正常執行,編輯“*/1 * * * * /root/date.sh”保存就行,如下:
至于這6個字段的含義,官方文檔有詳細說明,如下,分別代表分、時、天、月、星期和執行的命令,網上介紹資料也非常豐富,感興趣的話,可以搜索一下:
3.最后,我們再查看一下輸出文件date.txt和crontab日志,如下,說明添加的定時任務已經正常運行,這里再替換成你每天定時執行的時間,只需要修改第一、二個字段就行,例如,每天10:30執行,則編輯“30 10 * * * /root/date.sh”保存就行:
至此,我們就完成了每天定時執行shell腳本。總的來說,整個過程非常簡單,只要你有一定的Linux基礎,熟悉一下crontab命令,很快就能掌握的,網上也有相關資料和教程,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。
每天定時去執行shell腳本,說明你已經開始走向自動化運維之路了,再往后走就會開始制定標準化,有了標準化作為基礎,可以繼續下一步,平臺化運維,最后就是智能化運維,回歸正題,如何讓shell腳本每天定時執行,在這里,我提供2種方法
無論你的系統是aix還是linux,都可以使用crontab去定時執行shell腳本,舉個例子
* * * * * . /monitor/
disk.sh
> /monitor/
disk.sh.log
2>&1,這樣配置,表示系統會每分鐘調用一次
disk.sh
腳本。在這里要重點說明一下“* * * * *”,每個星星代表的含義。
第一個*代表分鐘0~59
第二個*代表小時0~23(0表示子夜)
第三個*代表日1~31
第四個*代表月1~12
第五個*代表星期0~7(0和7表示星期天)
如果你想要
disk.sh
每天晚上22點30分執行,可以修改成這樣
30 22 * * * . /monitor/disk.sh > /monitor/disk.sh.log 2>&1
用Rundeck平臺,可以規模化的去管理每臺主機的shell腳本的運行,crontab最小時間單位是分鐘,而Rundeck平臺可以精確到秒。
Rundeck是一個基于Java和Grails的開源的運維自動化工具,提供了Web管理界面進行操作,同時提供命令行工具和WebAPI的訪問控制方式。他象Ansible之類的工具一樣,Rundeck能夠幫助開發和運維人員更好地管理各個節點。
總之,無論用crontab,還是用Rundeck平臺,你的shell一定要標準化,不然后期會給你后期規模化運維帶來很大的難度。
crontab可以讓shell腳本每天定時執行,“crontab -e”進入編輯頁面,“crontab -l ”查看當前的定時任務。
比如每天00:00執行腳本clean.sh:
0 0 * * * /bin/clean.sh
linux系列的定時任務最簡單的辦法就是依賴系統提供的定時調度工具crontab
使用 crontab -e 命令,然后在打開的編輯器里新加一條記錄類似下面這樣的
前面的那段是時間相關的后面的是你要執行的命令
從左往右按順序依次為
秒(0~59)----
分(0~59)
時(0~23)
日(0~31,但是你需要考慮你月的天數)
月(0~11)
周(0~6 0=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年(1970-2099)
其中每個元素可以是一個值(如6),一個連續區間(9-12),一個間隔時間(8-18/4)(/表示每隔4小時),一個列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"這兩個元素互斥的,必須要對其中一個設置?.
篇幅有限,如果還是不會,可以評論留言,我給你詳細解釋
我自己的話是通過云幫手實現這一操作的,會比較方便一點。
首先是在服務器的管理面板里找到系統管理頁面,點擊計劃任務,在下方點擊添加計劃任務
在計劃任務的類型里選擇shell腳本
然后就根據你自己的需求設定腳本名稱、執行周期時間和上傳腳本內容
設定完成后,回到操作列表點擊執行就可以了
更多詳情你可以去他家官網地址看看:https://www.cloudx.cn/download?utm_source=zhan-wukong
如我們要執行一個命令同步時間,通常我們使用ntpdate這個命令具體如下:
[root@mpkwiki ~]# ntpdate
ntp.sjtu.edu.cn
#執行命令看看可行不* * * * * 這個五個星分別代表:分、時、天、月、星期。
而 */5 * * * * /usr/sbin/ntpdate 10.93.0.33 >/dev/null 2>&1 代表的意思是每5分鐘執行一次時間同步任務,并把結果輸出到/dev/null 下面去。
Linux使用crontab來執行每天的計劃任務,在編寫計劃任務之前還是要確定你的命令是否能正常執行。我一般會使用which ntpdate 得到這個絕對路徑下的命令。
接下來打開計劃任務寫下你命令代碼,使用crontab -e。
1,新建腳本/scripts/
backup_db.sh
,最好是一看就能知道是干嘛的那種。2,給這個文件夾chmod +x 賦權限。
3,編輯腳本內容,大致如下;
#auto backup mysql
#tony 2019-03-01
#Define PATH
BAKDIR=/data/backup/mysql/`date +%Y-%m-%d`
MYSQLDB=database
MYSQLPW=Pa55w0rd
MYSQLUSR=root
#must use root user run scripts
if
[ $UID -ne 0 ];then
echo This script must use the root user ! ! !
sleep 2
exit 0
fi
#Define DIR and mkdir DIR
if
[ ! -d $BAKDIR ];then
mkdir -p $BAKDIR
else
echo This is $BAKDIR exists....
fi
#Use mysqldump backup mysql
/usr/bin/mysqldump -u$MYSQLUSR -p$MYSQLPW -B -F -R -x --master-data=2 $MYSQLDB|gzip >$BAKDIR/wikidatabase_db.sql.gz
echo "The mysql backup successfully "
4,執行命令測試[root@mpkwiki scripts]# which mysqldump
5,在計劃任務里執行每天夜里12:00備份數據庫
6,測試命令查詢結果。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答