日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 定时执行shell 脚本

發布時間:2023/12/10 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 定时执行shell 脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019年第 85 篇文章,總第 109 篇文章

本文大約2000字,閱讀大約需要6分鐘

crontab 可以在指定的時間執行一個shell腳本以及執行一系列 Linux 命令。

定時執行shell 腳本

簡單給出執行 shell 腳本的步驟。

  • 首先是編寫一個測試腳本--test.sh

  • # 創建腳本 $ vim test.sh # 在腳本中做寫入文件操作 date >> data.txt
  • 修改腳本的權限,確保腳本有執行的權限

  • chmod 777 test.sh
  • 設置 crontab 定時任務

  • # 打開定時任務配置文件 crontab -e # 在配置文件中寫入定時任務的操作, 這里就是指定每天12點定時執行腳本,并把執行腳本的日志寫入文件 test.log 0 12 * * * sh test.sh > test.log
  • 保存退出,也就是 :wq

  • 如果有錯,linux 會在執行的時候發送一份郵件給你

  • cat /var/spool/mail/root

    注意:

    crontab 是運行在系統默認環境里,如果運行的腳本是執行 python 代碼,即腳本的內容可能是:

    python test.py

    這里的 python 會是系統默認的 python 版本,而如果你是運行在 conda 環境里,那么這里就需要采用當前環境里 python 版本的執行文件的絕對路徑,即先用以下命令查找當前 python 版本的執行文件位置:

    $ which python # 假設輸出的文件位置為: /root/anaconda3/py3/bin/python

    這里輸出的路徑,直接替換腳本里的 python:

    /root/anaconda3/py3/bin/python test.py

    這樣才能保證運行不出錯,否則可能因為版本問題出錯;


    crontab命令詳解

    常用命令

    crontab –e //修改 crontab 文件,如果文件不存在會自動創建。 crontab –l //顯示 crontab 文件。 crontab -r //刪除 crontab 文件。 crontab -ir //刪除 crontab 文件前提醒用戶。service crond status //查看crontab服務狀態 service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重新載入配置

    所以如果需要取消某個定時任務,就是可以刪除在配置文件中的對應命令,即 crontab -e 打開文件,然后刪除對應哪行的命令即可

    基本格式

    *  *  *  *  *  command 分 時  日  月  周  命令

    第1列表示分鐘 00~59 每分鐘用*或者 */1表示

    第2列表示小時 00~23(0表示0點)

    第3列表示日期 01~31

    第4列表示月份 01~12

    第5列標識號星期 0~6(0表示星期天)

    第6列要運行的命令

    此外每一列除了數字,還可以有這些符號,其含義如下所示:

    * 代表任何時間,比如第一個 * 就代表一小時中的每分鐘都執行 , 代表不連續的時間,比如 0 8,12,16 * * * 代表每天8,12,16點0分執行 - 代表連續的時間范圍,比如0 5 * * 1-6 代表在周一到周六凌晨5點0分執行 */n 代表每個多久執行一次,比如*/10 * * * *代表每隔10分鐘執行一次

    示例

    1、在 凌晨00:10運行

    10 0 * * * sh test.sh

    2、每個工作日23:59都進行備份作業。

    59 23 * * 1,2,3,4,5 sh test.sh 或者 59 23 * * 1-5 sh test.sh

    3、每分鐘運行一次命令

    */1 * * * * sh test.sh

    4、每個月的1號 14:10 運行

    10 14 1 * * sh test.sh

    5、每10分鐘定時請求一個地址

    0 */10 * * * /usr/bin/curl http://www.aaa.com/index.php

    注意,一般最好不要同時采用幾號和每周幾,可能會出現混淆;

    正確、錯誤日志的輸出是否寫入到文件方法

    1.不輸出任何內容(建議使用方法一)

    */1 * * * * /root/XXXX.sh >/dev/null 2>&1 或 */1 * * * * /root/XXXX.sh &>/dev/null //&表示任何內容

    2.將正確和錯誤日志都輸出到 /tmp/load.log

    */1 * * * * /root/XXXX.sh > /tmp/load.log 2>&1

    3.只輸出正確日志到 /tmp/load.log

    */1 * * * * /root/XXXX.sh > /tmp/load.log 或 */1 * * * * /root/XXXX.sh 1> /tmp/load.log //1可以省略

    4.只輸出錯誤日志到 /tmp/load.log

    */1 * * * * /root/XXXX.sh 2> /tmp/load.log

    部分解釋:

    /dev/null 代表空設備文件 > 代表重定向到哪里 1 表示stdout標準輸出,系統默認值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr標準錯誤 & 表示等同于的意思,2>&1,表示2的輸出重定向等同于1

    參考文章:

    • Linux 定時執行shell腳本命令之crontab:https://www.cnblogs.com/wenzheshen/p/8432588.html

    • linux定時執行sh文件:https://blog.csdn.net/IT_xiaocao/article/details/78206364


    歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

    如果覺得不錯,在看、轉發就是對小編的一個支持!

    總結

    以上是生活随笔為你收集整理的Linux 定时执行shell 脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。