詳解Linux下crontab的使用與注意事項_Linux

來源:腳本之家  責任編輯:小易  

噢,你把這個文件保存下來嘛。然后你運行 crontab-e然后在vi編輯器里輸入5*root./temp.sh然后保存就可以了。crontab的具體用法我復一個文檔給你。噢,下午已有一個高手回答了,答得很簡略也很實用。你可以聽他的。linux 下的crontab如何寫wscdlzhom發布于 2008-2-24|439次閱讀 字號:大 中 小(網友評論 0 條)我要評論crontab命令的功能是在一定的時間間隔調度一些命令的執行。在/etc目錄下有一個crontab文件,這里存放有系統運行的一些調度程序。每個用戶可以建立自己的調度crontab。cron 的主配置文件是/etc/crontab,它包括下面幾行:SHELL=bin/bashPATH=sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=run-parts01*root run-parts/etc/cron.hourly02 4*root run-parts/etc/cron.daily22 4*0 root run-parts/etc/cron.weekly42 4 1*root run-parts/etc/cron.monthly前四行是用來配置 cron 任務運行環境的變量。SHELL 變量的值告訴系統要使用哪個 shell 環境(在這個例子里是 bash shell);PATH 變量定義用來執行命令的路徑。cron 任務的輸出被郵寄給 MAILTO 變量定義的用戶名。如果 MAILTO 變量被定義為空白字符串(MAILTO=""),電子郵件就不會被寄出。HOME 變量可以用來設置在執行命令或腳本時使用的主目錄。etc/crontab 文件中的每一行都代表一項任務,它的格式是:minute hour day month dayofweek commandminute—分鐘,從 0 到 59 之間的任何整數hour—小時,從 0 到 23 之間的任何整數day—日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)month—月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)dayofweek—星期,從 0 到 7 之間的任何整數,這里的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)command—要執行的命令(命令可以是 ls/proc>>/tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味著在滿足其它制約條件后每月都執行該命令。整數間的短線(-)指定一個整數范圍。譬如,1-4 意味著整數 1、2、3、4。用逗號(,)隔開的一系列值指定一個列表。譬如,3,4,6,8 標明這四個指定的整數。正斜線(/)可以用來指定間隔頻率。在范圍后加上/意味著在范圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘字段定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份字段中表示每三個月運行一次任務。開頭為井號(#)的行是注釋,不會被處理。如你在/etc/crontab 文件中所見,它使用 run-parts 腳本來執行/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和/etc/cron.monthly 目錄中的腳本,這些腳本被相應地每小時、每日、每周、或每月執行。這些目錄中的文件應該是 shell 腳本。如果某 cron 任務需要根據調度來執行,而不是每小時、每日、每周、或每月地執行,它可以被添加到/etc/cron.d 目錄中。該目錄中的所有文件使用和/etc/crontab 中一樣的語法。record the memory usage of the system every mondayat 3:30AM in the file/tmp/meminfo 30 3*mon cat/proc/meminfo>>/tmp/meminforun custom script the first day of every month at 4:10AM 10 4 1*/root/scripts/backup.sh同時在寫crontab執行的.sh腳本時要注意添加權限和路徑。例如:crontab語句:30 14*/opt/apps/ems_query/bin/start.sh相應的腳本:source/home/tvgame/.bash_profilecd/opt/apps/ems_query/bin/java-Xmx64M-jar./lib/ems_query.jar&www.13333515.buzz防采集請勿采集本網。

crontab是一個用于設置周期性被執行的指令。其守護進程為crond. crontab分為兩種配置模式,一種為用戶級的crontab,一種為系統級的crontab,這里我們分開來談。

at是單一的工作調度,就是在某時某刻只執行一次的“計劃任務”(其實應該是命令,“計劃任務”的概念是Windows的啦),就是這次完成以后就不執行了;crontab是循環執行的工作調度,就是每隔幾分鐘或幾小時

用戶級crontab

ron 程序使用兩種不同類型的配置文件,第六個字段是用于執行命令的用戶名。這給予了系統 crontab 以任意用戶身份執行命令的能力,即系統 crontab 和用戶 crontabs。兩種格式的唯一區別是第六個字段。在

用戶使用新建循環型工作調度時,使用的crontab命令,crontab -e所有用戶都可以使用,普通用戶也只能為自己設置計劃任務。然后自動寫入/var/spool/cron/usename

相應的Shell環境變量沒有加載到腳本中。解決方法: 將oracle 相關環境變量加入到腳本中。1. whereis sqlplus#執行這條命令,會返回命令所在的完整路徑。或者找到命令所在目錄

用戶控制文件

一次性的任務也可以考慮at這個工具(service atd start)。用腳本也可以實現循環定時任務,每次做完事情sleep就行了。yyxfx

/etc/cron.allow :

少年,哥只能幫你到這兒了。其實Java有個第三方的類庫。名稱叫做quartz。你可以看看。如果直接用這個類庫的話,分分鐘就能解決你的問題。既然,你要真正的算法。沒辦法,我看了一下類庫中的源碼

將可以使用crontab的用戶寫入,僅該文件內的用戶可以使用crontab,相當于白名單

/etc/cron.deny :

將禁止使用crontab的用戶寫入,僅該文件內的用戶禁止使用crontab,相當于黑名單

其中/etc/cron.allow優先級大于/etc/cron.deny,為避免混淆,建議二者僅使用一個。

命令

crontab [-u usename] [-l|-e|-r] 參數: -u:只有root才能進行這個任務,也即幫其他用戶新建/刪除crontab工作調度 -e: 調用vi編輯crontab的工作內容 -l: 列出crontab的工作內容 -r: 刪除所有crontab的工作內容。

語法

# .---------------- 分鐘 (0 - 59) # | .------------- 小時 (0 - 23)# | | .---------- 日期 (1 - 31)# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- 周幾 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * 命令

語法與系統級crontab很相似,不同點在于此處不需要指定執行用戶,而系統級crontab(/etc/crontab)中需要。

舉例如下:

*/10 * * * * /home/test.sh #每隔10分鐘就以當前用戶執行一次/home/test.sh腳本0 2 * * * /home/test.sh #每天2點 0 5,17 * * * /home/test.sh #每天5點、17點0 17 * * sun /home/test.sh #每周日17點0 4,17 * * sun,mon /home/test.sh#每周一、周日@reboot /home/test.sh #系統重啟時

這里推薦一個在線小工具:在線生成cron表達式

系統級crontab

系統級crontab一般用于系統的例行性任務,這種方法更加方便與直接直接給其他用戶設置計劃任務,而且還可以指定執行shell等。配置文件為/etc/crontab,該文件僅root用戶能夠編輯。

編輯/etc/crontab

默認內容如下:

SHELL=/bin/bash 這里是指定使用哪種shell接口 PATH=/sbin:/bin:/usr/sbin:/usr/bin 這里指定文件查找路徑 MAILTO=root 如果有額外的STDOUT,以email將數據送給誰,可以指定系統用戶,也可以指定email地址,如[email protected]# For details see man 4 crontabs# Example of job definition:# .---------------- 分鐘 (0 - 59) # | .------------- 小時 (0 - 23)# | | .---------- 日期 (1 - 31)# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- 周幾 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * 用戶名 命令

即:

分 時 日 月 周 執行用戶 任務命令

比如我要添加一個計劃任務,每隔10分鐘就以root身份執行一次/home/test.sh腳本,則在后面添加:

*/10 * * * * root /home/test.sh

這里注意,不要漏掉執行者root(用戶級的crontab中不需要指定執行者),否則會在/var/log/cron日志中出現”ERROR (getpwnam() failed)”錯誤,計劃任務無法正常運行。

重啟服務

一般來說Linux下的crontab會自動幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項,但是出于某些原因或者是其他的Unix系統中,由于crontab是讀到內存當中的,所以栽修改完 /etc/crontab 之后,可能并不會馬上執行,這時候需要重啟crontab服務。

這里以CentOS為例:

service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重載配置 service crond status //服務狀態

如果是CentOS 7則:

systemctl restart crond.service //重啟服務 systemctl start crond.service //啟動服務 systemctl stop crond.service //停止服務 systemctl reload crond.service //重載配置 systemctl status crond.service //服務狀態

其他注意事項

取消不需要的輸出

當執行結果或者執行的選項中有輸出的數據時,該數據會通過mail發送給MAILTO指定的賬號,若某一個調度一直出錯,同時mail服務出現問題(事實上我根本就沒開這個服務),將會產生大量的文件于 /var/spool/clientmqueue/ ,所以最好是將crontab里面的命令后面加上> /dev/null 2>&1

2>:重定向錯誤。

2>&1:把錯誤重定向到輸出要送到的地方。即把上述命令的執行結果重定向到 /dev/null ,即拋棄,同時,把產生的錯誤也拋棄。

檢查日志

日志保存在 /var/log/cron 中

語法區別

crontab -e命令會檢查語法,而vim編輯 /etc/crontab 則不會,這里注意的是,crontab -e不需要寫執行者用戶名,而 /etc/crontab 需要指定。 執行路徑必須使用絕對路徑,否則可能無法正常執行。 周與日、月不能共存,即你可以分別以周或者是日、月為單位進行循環,但不可指定“幾月幾號且為星期幾”的模式工作。

參考資料

鳥哥的Linux私房菜

1、編輯計劃任務crontab-e編輯計劃任務,其實就是編輯一個計劃任務的文件,一行一個計劃任務。每行的格式如下:m h dom mon dow commandm:minute 分鐘(0-59)h:hour 小時(0-23)dom:日(1-31)mon:month 月(1-12)dow:周(0-7,其中0和7都代表星期天)command:執行的命令時間的最小單位是分鐘,為了測試出結果,我使用每分鐘將當前時間保存到/home/text.txt下來進行測試:1*date>/home/text.txt等待一分鐘,檢查下/home/text.txt文件,如果有看到時間就成功了。除了*號和/符號還有其它符號來設定時間:符號含義*(星號)表示什么時候都可以,(逗號)如果有多個時段,用逗號分開,例如我想每小時的30分和59分執行命令30,59*date>/home/text.txt-(減號)一個時間段內執行任務,例如每小時的3-10分執行命令3-10*date>/home/text.txt/(斜線)每隔多少時間就執行一次命令,例如上例*/1*date>/home/text.txt就是每隔1分鐘執行一下命令2、查看任務列表crontab-l這個命令可以查看計劃任務列表,其實就是查看任務文件了。3、刪除計劃任務crontab-r這個命令建議不要用,這個命令會刪除系統上的所有計劃任務,我曾在服務器上誤刪除了一次,結果花了不少時間恢復。建議通過crontab-e編輯,直接刪除不需要的那一行,就可以了。友情提示:執行的命令中的路徑建議使用全路徑,這樣一定不會有問題。例如我上例就是直接使用/home/text.txt;在ubuntu下,如果沒有選擇默認的編輯器,則會提示選擇編輯器,如下:ubuntu計劃任務選擇編輯器如果需要重新選擇編輯器,運行命令select-editor就可以了。我習慣用vim這個編輯器內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • 如何使用linux的crontab定時執行php腳本的方法
  • linux使用crontab實現php執行計劃定時任務
  • 詳解使用python crontab設置linux定時任務
  • 使用linux命令crontab間隔時間執行其它命令
  • linux centos使用crontab設置定時重啟的方法
  • linux使用find和crontab命令定期清理過期文件
  • linux定時器crontab的使用教程
  • linux定時任務crontab命令使用詳解與總結
  • linux中使用crontab命令啟用自定義定時任務實例
  • linux使用crontab定時訪問某個路由地址的方法
  • linux定時任務crontab的使用方法
  • linux下使用cmake編譯安裝mysql的詳細教程
  • apache 安裝和使用文檔
  • 使用光盤配置本地yum源的方法 yum源配置
  • ubuntu中添加應用程序快速啟動器的方法
  • linux 基于centos的lnmp 服務器部署標準 新手簡明版
  • 詳解supervisor安裝與配置(linux/unix進程管理工具)
  • 嵌入式linux重啟qt應用程序的簡單辦法(基于qt4.8 qws)
  • ubuntu環境下ssh的安裝及使用詳解
  • linux+php+apache+oracle環境搭建之centos下安裝oracle數據庫
  • 判斷cc攻擊 netstat命令詳解
  • linux下怎么來利用crontab實現計劃任務非常有用
  • linux 中的crontab使用方法
  • 新手請教linux下該crontab內容怎么寫?
  • 如何知道linux下crontab的使用者都有誰?
  • linux下crontab 與 at命令的區別
  • 關于LINUX的crontab任務
  • 關于linux crontab的一點疑惑
  • linux 下定時任務除了crontab 還有 別的更好的方案么
  • 求算法:根據Linux的Crontab時間規則算出下一時間點
  • 關于linux crontab
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全星外虛擬主機華眾虛擬主機linuxwin服務器ftp服務器dns服務器tomcat nginxzabbix云和虛擬化服務器其它首頁服務器linux如何使用linux的crontab定時執行php腳本的方法linux使用crontab實現php執行計劃定時任務詳解使用python crontab設置linux定時任務使用linux命令crontab間隔時間執行其它命令linux centos使用crontab設置定時重啟的方法linux使用find和crontab命令定期清理過期文件linux定時器crontab的使用教程linux定時任務crontab命令使用詳解與總結linux中使用crontab命令啟用自定義定時任務實例linux使用crontab定時訪問某個路由地址的方法linux定時任務crontab的使用方法linux下使用cmake編譯安裝mysql的詳細教程apache 安裝和使用文檔使用光盤配置本地yum源的方法 yum源配置ubuntu中添加應用程序快速啟動器的方法linux 基于centos的lnmp 服務器部署標準 新手簡明版詳解supervisor安裝與配置(linux/unix進程管理工具)嵌入式linux重啟qt應用程序的簡單辦法(基于qt4.8 qws)ubuntu環境下ssh的安裝及使用詳解linux+php+apache+oracle環境搭建之centos下安裝oracle數據庫判斷cc攻擊 netstat命令詳解apache開啟.htaccess及.htaccesslinux下實現免密碼登錄(超詳細)service temporarily unavailablapache rewrite url重定向功能的linux下用cron定時執行任務的方法apache性能測試工具ab使用詳解centos 6.4安裝配置lamp服務器(acentos+nginx+php+mysql詳細配置apache you don""t have permissflume環境部署和配置詳解及案例大apache下.htaccess的功能及寫法詳解centos7使用firewalld打開關閉防火墻linux組基本介紹知識點總結centos配置mutt和msmtp實現郵件發送centos系統為php安裝memcached擴展步驟centos 7.2中雙網卡綁定及相關問題踩坑記linux發郵件之mail命令詳解windows apache多端口虛擬主機配置方法ssh遠程登陸沒有用戶名和主機名的解決方法centos7下 yum方式安裝nginx的實現步驟
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果