導航:首頁 > 操作系統 > linux守護腳本

linux守護腳本

發布時間:2023-02-20 02:00:37

1. linux系統如何給java啟動程序命令,寫上守護腳本保證殺死後,能拉起來

建議使用supervisor,非常好用的守護工具,寫腳本不藉助工具的話需要結合crontab,定期去ps -ef|grep 你的程序,做個判斷,如果不在了就執行你的啟動命令,supervisor之前我們使用的比較多,可以守護多個java程序,開源免費。

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文件。

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

閱讀全文

與linux守護腳本相關的資料

熱點內容
excel表格單列數據加密 瀏覽:646
給同事的解壓話語 瀏覽:990
linux關閉網卡命令行 瀏覽:452
史上最漂亮程序員 瀏覽:768
java實現excel的導入 瀏覽:758
光遇賬號如何轉移安卓 瀏覽:266
5分之13除以26的演算法 瀏覽:342
蘭州安寧區買解壓包子 瀏覽:641
php接收圖片代碼 瀏覽:668
hci命令 瀏覽:662
福建伺服器大區雲空間 瀏覽:840
筆桿子程序員 瀏覽:745
手機軟體易驗證加密 瀏覽:589
文檔加密只讀模式也不能看到 瀏覽:431
把jpg轉換成pdf的軟體 瀏覽:874
linuxeth0mac 瀏覽:192
windows編程知乎 瀏覽:442
壓縮工期超過40 瀏覽:249
Android怎麼優化內存 瀏覽:106
linuxetcsysconfig 瀏覽:396