中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux 定時任務(wù)調(diào)度(crontab),太實(shí)用了!

點(diǎn)擊關(guān)注公眾號,Java干貨及時送達(dá)

作者:悠悠
來源:http://uusama.com/827.html

概述

crontab命令用于設(shè)置周期性被執(zhí)行的指令。該命令從標(biāo)準(zhǔn)輸入設(shè)備讀取指令,并將其存放于“crontab”文件中,以供之后讀取和執(zhí)行。

可以使用crontab定時處理離線任務(wù),比如每天凌晨2點(diǎn)更新數(shù)據(jù)等,經(jīng)常用于系統(tǒng)任務(wù)調(diào)度。

服務(wù)啟動和關(guān)閉

一般Linux系統(tǒng)中都會裝有crontab,如果沒有安裝可以使用包管理工具安裝:

# vixie-cron 軟件包是 cron 的主程序
yum -y install vixie-cron
yum -y install crontabs

crontab服務(wù)的啟動和關(guān)閉命令如下:

service crond start     # 啟動服務(wù)
service crond stop      # 關(guān)閉服務(wù)
service crond restart   # 重啟服務(wù)
service crond reload    # 重新載入配置
service crond status    # 查看crontab服務(wù)狀態(tài)

# 可以使用下面的命令加入開機(jī)啟動
chkconfig --level 345 crond on

任務(wù)調(diào)度全局配置

crontab全局任務(wù)調(diào)度配置在如下的目錄:

cron.d/       
cron.daily/   
cron.deny     
cron.hourly/  
cron.monthly/ 
crontab       
cron.weekly/
  • cron.daily是每天執(zhí)行一次的job
  • cron.weekly是每個星期執(zhí)行一次的job
  • cron.monthly是每月執(zhí)行一次的job
  • cron.hourly是每個小時執(zhí)行一次的job
  • cron.d是系統(tǒng)自動定期需要做的任務(wù)
  • crontab是設(shè)定定時任務(wù)執(zhí)行文件
  • cron.deny文件就是用于控制不讓哪些用戶使用Crontab的功能

用戶配置文件

每個用戶都有自己的crontab配置文件,使用crontab -e命令進(jìn)行編輯。保存后系統(tǒng)會自動存放與/var/spool/cron/目錄中,文件以用戶名命名。

linux的crontab服務(wù)每隔一分鐘去讀取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的內(nèi)容。另外,Linux 系列面試題和答案我都整理好了,關(guān)注公眾號Java技術(shù)棧,回復(fù):面試,可以在線閱讀。

crontab命令一覽:

  • crontab -e: 編輯當(dāng)前用戶的定時任務(wù)列表
  • crontab -l: 查看當(dāng)前用戶的定時任務(wù)列表
  • crontab -r: 刪除當(dāng)前用戶的定時任務(wù)列表

crontab定時任務(wù)格式

crontab每一條記錄為一個定時任務(wù),定時人遵循相應(yīng)的定義規(guī)則。

其中前面的6個星號表示的含義如下:

  • minute:表示分鐘,可以是從0到59之間的任何整數(shù)。
  • hour:表示小時,可以是從0到23之間的任何整數(shù)。
  • day:表示日期,可以是從1到31之間的任何整數(shù)。
  • month:表示月份,可以是從1到12之間的任何整數(shù)。
  • week:表示星期幾,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日。
  • command:要執(zhí)行的命令,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件。

每一個星號部分可用下面的特殊符號:

  • 星號(*):通配符匹配,代表所有可能的值。
  • 逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”。
  • 中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”。
  • 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。

crontab定時任務(wù)實(shí)例

時間頻次示例

下面列舉常用的時間頻次示例。

  • 00 05 * * * : 每天凌晨5點(diǎn)執(zhí)行
  • 20 12 1,10,20 * * : 每個月的1號,10號,20號的12:30執(zhí)行
  • 10 1 * * 6,0 : 表示每周六、周日的1:10分執(zhí)行
  • 0,30 18-23 * * * : 每天18:00至23:00之間每隔30分鐘執(zhí)行
  • 0 23-7/1 * * * : 晚上11點(diǎn)到早上7點(diǎn)之間,每隔一小時執(zhí)行
  • 0 6-12/3 * 10 * : 每年10月的每天早上6點(diǎn)到12點(diǎn)每隔3個小時執(zhí)行一次
  • 30 17 * * 1-5 : 周一到周五下午5點(diǎn)30分執(zhí)行一次
  • 0 */2 * * * :每兩個小時執(zhí)行一次

比如我們需要每天23點(diǎn)58分的時候執(zhí)行一個更新數(shù)據(jù)的shell腳本,可以用crontab -e命令在最后添加一行:

58 23 * * * sh /home/work/update.sh

輸入輸出重定向

在上面更新數(shù)據(jù)定時任務(wù)的實(shí)例中,如果執(zhí)行update.sh的時候有錯誤信息輸出,會輸出到哪兒呢?

在沒有配置輸出重定向的時候,定時任務(wù)會見錯誤輸出到下面的文件:/var/log/mail/{$user},這是很不好的,我們往往需要把不同的腳本輸出到不同的日志文件,方便查看腳本的執(zhí)行情況,這個時候需要使用輸出重定向。

58 23 * * * sh /home/work/update.sh >> /home/work/log/update.log 2>&1

Linux中使用0-3作為文件描述符來表示標(biāo)準(zhǔn)流。

名稱類型文件描述符操作
stdin 標(biāo)準(zhǔn)輸入standard input0<,<<
stdout 標(biāo)準(zhǔn)輸出standard output1>,>>
stderr 標(biāo)準(zhǔn)錯誤輸出standard error output22>,2>>

在上面的定時任務(wù)腳本中,update.sh后面的>>表示將輸出追加到update.log文件中,2>&1表示標(biāo)準(zhǔn)錯誤輸出重定向等同于標(biāo)準(zhǔn)輸出。

推薦閱讀:Linux 知識大全。

忽略輸入nohup

有時候我們還會看到在定時任務(wù)腳本前面有一個nohup的命令,該命令用于指定后面的腳本忽略輸入。

58 23 * * * nohup sh /home/work/update.sh >> /home/work/log/update.log 2>&1

后臺執(zhí)行&

無論是在控制臺直接執(zhí)行,還是在定時任務(wù)腳本中,我們在某一條命令的最后面加上&符號,表示當(dāng)前命令在后臺運(yùn)行,不占用控制臺。

58 23 * * * nohup sh /home/work/update.sh >> /home/work/log/update.log 2>&1 &

這里需要注意,如果執(zhí)行的命令有等待輸入的交互,把這個命令使用&放在后臺運(yùn)行時,它會一直等待輸入,但是有沒有輸入,就卡住不動了。

時間處理

再回顧上面的更新任務(wù),它是將每一天的運(yùn)行結(jié)果都重定向到update.log文件,如果輸出比較多,我們就需要每一天輸出的不同的文件,可以通過在輸出目錄中指定日期用來分割。如下:

58 23 * * * nohup sh /home/work/update.sh >> /home/work/log/`update_"date +\%Y\%m\%d".log` 2>&1 &

# 或者下面的形式
58 23 * * * nohup sh /home/work/update.sh >> "/home/work/log/update_"date +\%Y\%m\%d".log" 2>&1 &

這里使用date函數(shù),需要注意的是,crontab里面的腳本命令和直接在命令行運(yùn)行的腳本可能是不一樣的,尤其是date函數(shù)中的%需要轉(zhuǎn)義。

可以直接在命令行運(yùn)行下面命令:

sh /home/work/update.sh >> /home/work/log/update_`date +"%Y%m%d".log` 2>&1 &

達(dá)到和定時任務(wù)里面相同的效果,都是輸出到update_20201120.log的文件。

但是如果直接在crontab中這樣配置,則無法識別,不會執(zhí)行該定時任務(wù)。下面的crontab任務(wù)是不會執(zhí)行的,date函數(shù)將會報(bào)錯。

58 23 * * * nohup sh /home/work/update.sh >> /home/work/log/`update_"date +%Y%m%d".log` 2>&1 &

最后,Linux 系列面試題和答案我都整理好了,關(guān)注公眾號Java技術(shù)棧,回復(fù):面試,可以在線閱讀。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Shell腳本之crontab定時任務(wù)
centos crontab定時任務(wù)用法
Linux 設(shè)置定時任務(wù)crontab命令
Linux系統(tǒng)如何創(chuàng)建任務(wù)?操作方法!
在Linux上設(shè)置定時任務(wù)
Linux之定時任務(wù)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服