linux使用crontab定時執行命令過程

2021-10-08 00:07:14 字數 1614 閱讀 5103

最近在寫了乙個資料採集的指令碼,想每天在伺服器上定時自動執行,但是由於是第一次接觸,遇到了問題,最終順利解決,現在總結方法如下:

1.首先還是先將你需要執行的命令指令碼寫好或者上傳上去,我的s**件如下所示

#!/usr/bin/bash

echo

'開始'

>> /home/supervision/log.txt

/usr/bin/python3.6 /home/supervision/supervision_local.py >> /home/supervision/log.txt

echo

'結束'

>> /home/supervision/log.txt

2.將sh執行新增到crontab的執行任務中

crontab -e
然後將自己的指令寫進去

06 14 * * * . /etc/profile;/bin/sh /home/supervision/shengteng.sh
命令格式介紹如下:

minute   hour   day   month   week   command

其中:minute: 表示分鐘,可以是從0到59之間的任何整數。

hour:表示小時,可以是從0到23之間的任何整數。

day:表示日期,可以是從1到31之間的任何整數。

month:表示月份,可以是從1到12之間的任何整數。

week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。

遇到的問題:

自始至終只有乙個,就是所有的檔案或執行命令(比如python,echo)都要寫絕對路徑:(如:/usr/bin/echo)

其他注意事項:

注意清理系統使用者的郵件日誌

每條任務排程執行完畢,系統都會將任務輸出資訊通過電子郵件的形式傳送給當前系統使用者,這樣日積月累,日誌資訊會非常大,可能會影響系統的正常執行,因此,將每條任務進行重定向處理非常重要。

例如,可以在crontab檔案中設定如下形式,忽略日誌輸出:

0 *

/3 ***

/usr/local/apache2/apachectl restart >/dev/null 2>&1

/dev/null 2>&1」表示先將標準輸出重定向到/dev/null,然後將標準錯誤重定向到標準輸出,由於標準輸出已經重定向到了/dev/null,因此標準錯誤也會重定向到/dev/null,這樣日誌輸出問題就解決了。

系統級任務排程與使用者級任務排程

系統級任務排程主要完成系統的一些維護操作,使用者級任務排程主要完成使用者自定義的一些任務,可以將使用者級任務排程放到系統級任務排程來完成(不建議這麼做),但是反過來卻不行,root使用者的任務排程操作可以通過「crontab –uroot –e」來設定,也可以將排程任務直接寫入/etc/crontab檔案,需要注意的是,如果要定義乙個定時重啟系統的任務,就必須將任務放到/etc/crontab檔案,即使在root使用者下建立乙個定時重啟系統的任務也是無效的。

參考:

使用python指令碼備份crontab定時任務

近期打算備份下伺服器crontab任務,以防個人失誤,清空定時任務,其實我覺得shell指令碼更簡單,但是想練習下python,決定使用python指令碼進行,前提執行主機做好對其他節點伺服器ssh免秘鑰登入 vi crontab backup.py usr bin env python codin...

執行任務Ubuntu使用crontab定時任務

因為明天想定時執行postgres的一些指令碼,所以在網上查一下有乙個crontab的命令,就把這個命令的應用記錄一下,便利往後查詢.cron是乙個 守護程式 用於在指定的時光內執行行程類的任務,每乙個使用者都有乙個 crontab 檔案,來允許他們指定需要執行的內容和時光,此外,系統也有乙個 cr...

centos系統crontab實現自動定時重啟教程

例如 設定每天凌晨5點重啟的方法 使用ssh工具成功登陸伺服器後,執行如下命令 crontab e 按insert鍵,進入編輯模式 然後在文件中輸入 0 5 sbin reboot 注意中間的空格,0 5表示每天凌晨四點重啟 以此類推 0 6表示凌晨6點.編輯好後按esc鍵退出編輯模式。鍵入 wq ...