linux 利用 cron 實現 程序開機啟動/cron任務的多種實現方法/cron重啟/cron日志開啟



方法一、登錄服務器,直接修改:

  crontab -e
  然后添加:
    @reboot [nohup] {命令}

    ...
    # 或者定時任務指令

  保存退出:
    ctrl + O 
    ctrl + x


方法二、指定用戶進行修改:
  sudo crontab -u {username} -e
  然后添加:
    @reboot [nohup] {命令}

    ...
    # 或者定時任務指令

  保存退出:
    ctrl + O 
    ctrl + x


以上兩種方法,可以提前將 任務指令 封裝進一個文件,然后再統一導入: sudo crontab -u {username} {filename}
務必注意,用導入文件的形式添加定時任務,會進行覆蓋重寫操作(先清空已有定時任務,再從文件中導入)
解決辦法:https://www.cnblogs.com/lowmanisbusy/p/12048054.html


方法三、修改 /etc/crontab:
  sudo vim /etc/crontab
  添加:
    @reboot {username} [nohup] {命令}

    ...
    # 或者定時任務指令

  保存退出


  該方法必須指定用戶,該方法的好處是,可以將所有用戶的crontab任務都在/etc/crontab文件中進行管理
  (方法一和方法二會為用戶單獨維護一份crontab任務文件,不方便管理人員統一管理所有定時任務)
  
  該方法本人在實際的操作過程中,無法通過遠程發送指令的方式完成,必須需要打開一個交互式的shell窗口,手動修改.這里應該有權限限制

說明:
  1. nohup 是用來讓運行的程序忽略 SIGHUP 指令(因為在父程序退出后,所有的子程序會受到 SIGHUP 指令)從而保證運行的程序不退出, 根據實際情況決定是否使用該參數
  (本人實際操作過程中,加入該參數時無法成功執行任務,請自測)
  2. @reboot 只針對可登錄服務器的用戶生效, 如果使用不可登錄服務器的用戶執行該類型crontab任務,將會遭到忽略,執行失敗

注意:
  1.如果修改了服務器的時區或時間,必須將cron服務重啟,否則仍然會按照原來的時區及時間執行定時任務
    sudo -s
    啟動cron:/etc/init.d/cron start 或者 service cron start
    重啟:/etc/init.d/cron restart ( service cron restart )
    關閉:/etc/init.d/cron stop ( service cron stop )

  2.默認情況下,cron 服務的日志是關閉的,如果需要開啟 cron 日志,可以執行以下步驟(本人操作環境 ubuntu 16.04)
    sudo vim /etc/rsyslog.d/50-default.conf
    
    找到以下行,將注釋取消即可
      # cron.*  /var/log/cron.log

    重啟 rsyslog:
      sudo  service rsyslog  restart

    重啟 cron:
      sudo service cron restart

    查看日志:
      tail -f /var/log/cron.log
      



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM