centos编译start-stop-daemon,支持最新的option(--chdir)


centos编译start-stop-daemon,支持最新的option(--chdir)
 
start-stop-daemon 是 debian的工具。
 
在centos/redhat发布版本中没有此库。为了兼容一些脚本调用此程序,我们需要手工编译此工具。
 
遗憾的是,你编译运行之后,发现此版本不支持 --chdir的option,
 
start-stop-daemon --help
 
start-stop-daemon 1.9.18 for Debian - small and fast C version written by
Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>, public domain.
 
Usage:
  start-stop-daemon -S|--start options ... -- arguments ...
  start-stop-daemon -K|--stop options ...
  start-stop-daemon -H|--help
  start-stop-daemon -V|--version
 
Options (at least one of --exec|--pidfile|--user is required):
  -x|--exec <executable>        program to start/check if it is running
  -p|--pidfile <pid-file>       pid file to check
  -c|--chuid <name|uid[:group|gid]>
                change to this user/group before starting process
  -u|--user <username>|<uid>    stop processes owned by this user
  -n|--name <process-name>      stop processes with this name
  -s|--signal <signal>          signal to send (default TERM)
  -a|--startas <pathname>       program to start (default is <executable>)
  -N|--nicelevel <incr>         add incr to the process's nice level
  -b|--background               force the process to detach
  -m|--make-pidfile             create the pidfile before starting
  -R|--retry <schedule>         check whether processes die, and retry
  -t|--test                     test mode, don't do anything
  -o|--oknodo                   exit status 0 (not 1) if nothing done
  -q|--quiet                    be more quiet
  -v|--verbose                  be more verbose
Retry <schedule> is <item>|/<item>/... where <item> is one of
 -<signal-num>|[-]<signal-name>  send that signal
 <timeout>                       wait that many seconds
 forever                         repeat remainder forever
or <schedule> may be just <timeout>, meaning <signal>/<timeout>/KILL/<timeout>
 
Exit status:  0 = done      1 = nothing done (=> 0 if --oknodo)
              3 = trouble   2 = with --retry, processes wouldn't die
上面没有我需要的--chdir的选项。
 
继续google搜索(ps: 一般这种英文库的搜索使用google, baidu基本搜索不出有用的东东)
 
下面就是我的安装过程
 
wget http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.1.tar.xz
tar -xf  dpkg_1.17.1.tar.xz 
cd dpkg-1.17.1
./configure >/dev/null
make >/dev/null
cd utils
make
sudo cp start-stop-daemon /usr/local/bin/start-stop-daemon  
提示:  make >/dev/null 会报错的,不管它。因为我们只需要后面的 cd utils中的start-stop-daemon
 
现在运行 start-stop-daemon --help, 结果如下,可以找到我想要的--chdir的选项了。
 
 
 
Usage: start-stop-daemon [<option> ...] <command>
 
Commands:
  -S|--start -- <argument> ...  start a program and pass <arguments> to it
  -K|--stop                     stop a program
  -T|--status                   get the program status
  -H|--help                     print help information
  -V|--version                  print version
 
Matching options (at least one is required):
  -p|--pidfile <pid-file>       pid file to check
  -x|--exec <executable>        program to start/check if it is running
  -n|--name <process-name>      process name to check
  -u|--user <username|uid>      process owner to check
 
Options:
  -g|--group <group|gid>        run process as this group
  -c|--chuid <name|uid[:group|gid]>
                                change to this user/group before starting
                                  process
  -s|--signal <signal>          signal to send (default TERM)
  -a|--startas <pathname>       program to start (default is <executable>)
  -r|--chroot <directory>       chroot to <directory> before starting
  -d|--chdir <directory>        change to <directory> (default is /)
  -N|--nicelevel <incr>         add incr to the process' nice level
  -P|--procsched <policy[:prio]>
                                use <policy> with <prio> for the kernel
                                  process scheduler (default prio is 0)
  -I|--iosched <class[:prio]>   use <class> with <prio> to set the IO
                                  scheduler (default prio is 4)
  -k|--umask <mask>             change the umask to <mask> before starting
  -b|--background               force the process to detach
  -C|--no-close                 do not close any file descriptor
  -m|--make-pidfile             create the pidfile before starting
  -R|--retry <schedule>         check whether processes die, and retry
  -t|--test                     test mode, don't do anything
  -o|--oknodo                   exit status 0 (not 1) if nothing done
  -q|--quiet                    be more quiet
  -v|--verbose                  be more verbose
 
Retry <schedule> is <item>|/<item>/... where <item> is one of
 -<signal-num>|[-]<signal-name>  send that signal
 <timeout>                       wait that many seconds
 forever                         repeat remainder forever
or <schedule> may be just <timeout>, meaning <signal>/<timeout>/KILL/<timeout>
 
The process scheduler <policy> can be one of:
  other, fifo or rr
 
The IO scheduler <class> can be one of:
  real-time, best-effort or idle
 
Exit status:
  0 = done
  1 = nothing done (=> 0 if --oknodo)
  2 = with --retry, processes would not die
  3 = trouble
Exit status with --status:
  0 = program is running
  1 = program is not running and the pid file exists
  3 = program is not running
  4 = unable to determine status
 

相关内容

    暂无相关文章