Upstart如何在MySQL啟動時自動啟動作業?

Upstart如何在MySQL啟動時自動啟動作業?

我的工作依賴MySQL。所以我希望我的工作可以在 MySQL 之後啟動。

我讀了新貴食譜我發現start on可以自動開始工作。

start on started mysql

它有效。但我不希望mysql啟動後影響我的工作。當我停止工作時,它將透過重新啟動 mysql 來重新啟動。如何避免這種情況?

答案1

在資料夾中建立一個鎖定檔案/tmp/以追蹤您的作業已運行。這裡有一個例子:

  1. 建立這兩個 upstart 作業設定檔:

    /etc/init/joba.conf

    # job A
    
    start on local-filesystems
    stop on runlevel[016]
    
    script
      /bin/echo job-A started >> /tmp/myjobs.log
      exec sleep 5
    end script
    

    /etc/init/jobb.conf

    # job B triggered after A
    
    start on started joba
    
    script
      /bin/echo job-B started >> /tmp/myjobs.log
      if ! [ -f /tmp/jobb.lock ]
      then
        /bin/echo " do job-B tasks" >> /tmp/myjobs.log
        /bin/touch /tmp/jobb.lock
      else
        /bin/echo " bypass job-B tasks"  >> /tmp/myjobs.log
      fi
      exec sleep 5
    end script
    
  2. 重啟

  3. 檢查cat /tmp/myjobs.logsudo tail -f /tmp/myjobs.log在另一個視窗中開啟。
  4. 再次嘗試執行 job-Asudo start joba
  5. 檢查/tmp/myjobs.log,參見旁路註記:

    job-A started
    job-B started
     do job-B tasks
    job-B started
     bypass job-B tasks
    job-A started
    job-B started
    job-A started
     bypass job-B tasks
    

筆記:對於每次運行,我們有 3 行。這裡的行排序並不重要。stdout緩衝問題,與暴發戶無關。作業按正確的順序運行。

相關內容