1. 程式人生 > >start-stop-daemon

start-stop-daemon

pat 執行 stdout -m root pidfile sig debian 文件的

start-stop-daemon是OpenRC計劃的一部分,這個程序最先出現在Debian系的Linux發行版中,這裏有個比較古老的手冊頁面,更詳細更直觀的辦法當然是通過man start-stop-daemon來查看手冊了。

start-stop-daemon最基本的兩個功能就是--start--stop,簡寫為-S-K,然後再加上一個-s|--signal來給進程發送信號,功德圓滿。

  • -x, --exec daemon,daemon就是真正要執行的進程腳本,比方說啟動nginx,那麽就是start-stop-daemon -x nginx
  • -p, --pidfile pidfile
    ,指定pid文件,至於pid文件的用途就多了,stop,status都少不了它。
  • -n, --name,如果沒有指定pid文件,那麽就要通過指定name來停止進程了。
  • -u, --user user[:group],指定腳本用哪個用戶或用戶組執行,init腳本是必須使用root權限來執行的,但是它fork出來的子進程我們一般會選擇一個權限較低的用戶。
  • -b, --background,強制腳本在後臺執行。
  • -m, --make-pidfile,這個一般和-b配合,用於生成pid文件
  • -d, --chdir path,切換進程的主目錄,這個在構建守護進程的時候是很常用的。
  • -r, --chroot path
    ,在某些安全性要求較高的情況下,我們就需要用到chroot將進程工作環境與物理環境完全隔離開來。
  • -1, --stdout logfile,將標準輸出記錄到log文件,與之相對應的就是-2, --stderr標準錯誤流。
  • -w, --wait milliseconds,進程啟動後,有這個參數會等待幾毫秒來檢測進程是否仍然存活。

-x daemon後面跟的執行腳本必須只能是一個文件名,有些程序運行時還需要指定一些參數,比如nginx -c file來指定nginx的配置文件,使用start-stop-daemon -x "nginx -c file"是會報錯的,這些程序內的參數以另一種方式加載,start-stop-daemon -x daemon -- $ARGV

,這裏的雙橫線--後面跟的所有參數就會被帶到程序中了,比如start-stop-daemon -x nginx -c /etc/nginx.conf

start-stop-daemon