導航:首頁 > 程序命令 > 蘋果編譯crontab命令

蘋果編譯crontab命令

發布時間:2024-04-12 01:40:21

1. linux下編寫定時任務crontab

linux下的crontab服務:
1、crontab 是用來讓使用者在固定時間或固定間隔執行程序之用
在linux平台上如果需要實現任務調度功能可以編寫cron腳本來實現。
以某一頻率執行任務
linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly

如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh

2、cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,如果它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置

你也可以將這個服務在系統啟動的時候自動啟動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了

查看服務是否已經運行用 ps -ax | grep cron

3、crontab命令
查看該用戶下的crontab服務是否創建成功, 用 crontab -l 命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
任務調度的crond常駐命令crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啟動此 任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。

crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務

4、cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)

5、 新增調度任務
新增調度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

6、 查看調度任務
crontab -l //列出當前的所有調度任務
crontab -l -u jp //列出用戶jp的所有調度任務

7、 刪除任務調度工作
crontab -r //刪除所有任務調度工作

8、 任務調度執行結果的轉向
例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
註:2>&1 表示執行結果及錯誤信息。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行 /etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執行/etc/cron.monthly內的腳本
大家注意」run-parts」這個參數了,如果去掉這個參數的話,後面就可以寫::要運行的某個腳本名,而不是文件夾名了。

總結:
編寫定時任務的兩種方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定時任務的兩種方式:1.sudo cat /etc/crontab 2.sudo crontab -l

*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ && ./back_coupon.sh 2 10 >> /dev/null 2>&1

查看定時任務是否運行:
sudo tail -f /var/log/cron //定時任務日誌(查看剛才設置的任務是否執行)

註:腳本有可執行許可權

sh a.sh(不需要執行許可權)
./sh (需要執行許可權)

1.當shell腳本具有可執行許可權時,用sh filename與./filename執行腳本是沒有區別的。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。

2. 在Linux部署進程守護腳本遇到的坑

    昨天在Linux做個進程守護腳本時發生了幾個小問題,實屬不該。先總結如下,在以後的實踐中一個避免這樣的問題。同時針對cron,再次深入學習實踐。

1、換行符問題

    腳本與運行報錯「:badinterpreter:Nosuchfileordirectory」。

    腳本在windows下編輯,有幾條命令是直接復制過來使用的,雖然vs code可以在右下角選擇行尾序列,但是在實際運行時還是提示無法識別/r,每一行都多了個^M  。

  \r\n: Dos和Windows採用回車+換行(CR+LF)表示下一行,即^M$

\n: 而UNIX/Linux採用換行符(LF)表示下一行

\r: 蘋果機(MAC OS系統)則採用回車符(CR)表示下一行 

2、= 賦值問題

    筆者在使用if條件表達式時,知道條件要放在方括弧之間,並且要有空格。誤以為變數賦值=也要空格,運行時發現變數無法識=識別,後來才知道變數賦值=不能有空格。

3、cron定時任務的環境變數問題

    用戶的crontab定時任務不會使用默認的變數, 需要寫全路徑,包括crontab調用的腳本裡面 。而系統cron定時任務是由定義環境變數的。MAILTO是表示例行性命令發生錯誤時,會將錯誤訊息郵件傳給root,伺服器中關閉postfix,導致郵件發送不成功,全部小文件堆積在/var/spool/postfix/maildrop/裡面。

4、cron中執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啟動所以就產生了/var/spool/mail目錄下的那些文件,日積月累可能撐破磁碟。在cron中命令後面加上 >/dev/null 2>&1 來不輸出。

5、crontab中的指令需要root,配置/etc/sudoers文件來保證sudo可用,其實可用使用系統任務計劃,指定root來執行即可。

     最後,筆者專注於使用cron,現在在以前的文章(樹莓派上測試)- Linux crontab定時任務詳細分解 的基礎上,在騰訊雲伺服器centos上補充以下cron的知識。

用戶計劃任務 :

1、crond時cron的守護進程,crond是由多個配置文件和系統范圍內的文件控制的,每個用戶對應一個配置文件。crond守護進程是cronie軟體的一部分。用戶的配置文件在/var/spool/cron/username。

2、crontab命令

    crontab -e 編輯當前用戶的定時計劃

    crontab -l 列出當前用戶的定時計劃

     crontab -r 刪除當前用戶的所有定時計劃

       crontab filename 刪除當前用戶的所有定時計劃,並從filename中讀取作業,如果未指定任何文件,則使用stdin 。

3、格式,另外*/x表示間隔x個周期。 用戶計劃任務沒有user-name欄位!

  */7  9-16  *  jul 5 command表示7月的每周五的上午9到下午5點 間,每七分鍾執行一次。

系統計劃任務:

1、系統cron不是由crontab來執行的,而是在一組配置文件中定義的,配置文件多了一個欄位-用戶欄位,指定作業在那個用戶下運行。

2、系統計劃任務儲存在/etc/crontab、 /etc/cron.d/*  以及/etc/cron.* ,/etc/crontab的語法規則參照上面的圖。 /etc/cron.d/時軟體產生的一些更新任務,一般不在裡面做操作。

3、預定義作業,cron.daily、cron.hourly、cron.monthly、cron.weekly下面儲存的是可執行腳本。

    /etc/cron.hourly/*腳本是使用runparts命令從/etc/cron.d/0hourly中定義的,表示每小時的第一分鍾將 /etc/cron.hourly/下面的腳本全部執行。

    /etc/cron.daily、 /etc/cron.monthly、 /etc/cron.weekly也是使用runparts命令,但是是從/etc/anacrontab中執行的。

4、/etc/anacrontab語法規則

       START_HOURS_RANGE=3-22,表示Anacron jobs will start between 3am and 10pm.

       RANDOM_DELAY=45,The RANDOM_DELAY variable denotes the maximum number of minutes that will be added to the delay in minutes variable  which  is specified for each job.

     上圖中,對於 /etc/cron.daily,那麼delay 會是 5 minutes + RANDOM_DELAY  。

    接下來就是4個重要的參數:

      period in days ,delay in minutes ,job-identifier,   command

    The period in days variable表示執行周期,每多少天運行一次該作業。

    delay in minutes:上面提到的執行的延時,啟動作業前,crond等待的時間。

    job-identifier:標識作業的唯一名稱,用做日誌記錄。是/var/spool/anacron中文件的名稱,檢查該作業是否已運行,/etc/anacrontab啟動作業時,會更新此文件的時間戳,檢查作業上次運行的時間。anacron 會分析現在的時間與時間記錄文件所記載的上次執行 anacron 的時間,將兩者進行比較,如果兩個時間的差值超過 anacron 的指定時間差值(一般是 1 天、7 天和一個月),就說明有定時任務沒有執行,這時 anacron 會介入並執行這個漏掉的定時任務,從而保證在關機時沒有執行的定時任務不會被漏掉。這也是為什麼/etc/cron.{daily,weekly,monthly} 目錄中的定時任務只會被 anacron 調用,而 /etc/cron.hourly/被cron調用 。

     command:執行命令可以是普通命令或者腳本。

5、cron的訪問控制

    /etc/cron.allow、    /etc/cron.deny ,以決定哪些用戶可以使用調度服務。

    如果只有cron.deny文件,而cron.allow文件不存在,則除了黑名單之外的所有用戶都可以使用;

    如果只有cron.allow文件存在,而cron.deny文件不存在時,則只有白名單用戶才可以使用,,包括root。

    如果兩個文件都存在,則忽略cron.allow文件。

    如果兩個文件都不存在,每個用戶都可以訪問。

3. crontab每周一執行一次(linux crontab命令詳解)

linux定時執行任務命令是我們在日常工作中經常用的,一般情況下,我們都是通過linux的crontab軟體來實現,crontab是定時來執行一個命令或者一個腳本;但是如果你臨時只執行一次命令的話,那麼我們也可以採用at命令,同時可以實現我們的目標。

先從crontab開始分享,我們一般通過命令 crontab -l 來查看已經定時執行的任務,我們要新增呢,我們在命令行輸入

# crontab -e

如果第一次執行,他會提示你選擇默認編譯器,一般我選擇vim(vi、nano也可以)

我舉例定時關機說明:

分 時 日 月 周 命令

0 1 * * 1 /sbin/shutdown -h now

這個意思就是在每周一的一點執行 /sbin/shutdown定時關機(root下才可以關機)當然你可以寫個腳本,給予執行許可權(x),然後輸入腳本的絕對路徑,這里也可以定時執行。

定時很簡單吧,其實linux就是要多用多操作多犯錯(非生產環境)才能成長。

下篇文章我分析at命令用法。

文章來源https://www.237it.com/detail-1479.html

4. linux定時任務

linux定時任務使用crontab命令

crontab命令說明
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鍾會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
語法
crontab(選項)(參數)
選項
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。
參數
crontab文件:指定包含待執行任務的crontab文件。
知識擴展
Linux下的任務調度分為兩類:系統任務調度和用戶任務調度。
系統任務調度:系統周期性所要執行的工作,比如寫緩存數據到硬碟、日誌清理等。在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件。
/etc/crontab文件包括下面幾行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前四行是用來配置crond任務運行的環境變數,第一行SHELL變數指定了系統要使用哪個shell,這里是bash,第二行PATH變數指定了系統執行命令的路徑,第三行MAILTO變數指定了crond的任務執行信息將通過電子郵件發送給root用戶,如果MAILTO變數的值為空,則表示不發送任務執行信息給用戶,第四行的HOME變數指定了在執行命令或者腳本時使用的主目錄。
用戶任務調度:用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定製自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者許可權文件如下:
/etc/cron.deny 該文件中所列用戶不允許使用crontab命令
/etc/cron.allow 該文件中所列用戶允許使用crontab命令
/var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名
crontab文件的含義:用戶所建立的crontab文件中,每一行都代表一項任務,每行的每個欄位代表一項設置,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:
minute hour day month week command 順序:分 時 日 月 周
其中:
minute: 表示分鍾,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這里的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的腳本文件。
在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,「1,2,5,7,8,9」
中杠(-):可以用整數之間的中杠表示一個整數范圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鍾執行一次。
crond服務
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
查看crontab服務狀態:
service crond status
手動啟動crontab服務:
service crond start
查看crontab服務是否已設置為開機啟動,執行命令:
ntsysv
加入開機自動啟動:
chkconfig –level 35 crond on

閱讀全文

與蘋果編譯crontab命令相關的資料

熱點內容
運城機場春運加密 瀏覽:287
安卓手機如何關閉app後台 瀏覽:154
安卓數字密碼忘記怎麼破解 瀏覽:252
pythonzmq模式 瀏覽:180
linux運行php網站 瀏覽:865
實驗室無油壓縮機 瀏覽:805
哪裡可以免費看動畫app 瀏覽:53
文本加密咋解 瀏覽:485
tomcat做伺服器怎麼設置 瀏覽:252
非對稱加密會增大網路包嗎 瀏覽:703
為什麼不能編譯c 瀏覽:261
數據伺服器不能啟動是什麼意思 瀏覽:556
java以什麼開頭 瀏覽:820
蘋果手機相冊文件夾如何清理 瀏覽:405
伺服器雲電腦搭建教程 瀏覽:410
eco怎麼搭建伺服器 瀏覽:468
周轉材料核演算法 瀏覽:358
學nodejs還是php好 瀏覽:280
電信營業廳app怎麼買q幣 瀏覽:918
linux退出登陸 瀏覽:535