🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 1. start-stop-daemon * 借鉴nginx启动脚本 > * start-stop-daemon是一个用于控制系统级别的进程的开启和关闭,也可以寻找进程是否正在运行。 * * * * * ### 1. 1检查进程是否在运行 `sudo start-stop-daemon --start --pidfile /run/nginx.pid --exec /usr/sbin/nginx --test` >* --start:检查进程是否存在,若进程存在什么也不做,退出返回错误代码1,不存在返回0。当进程不存在时加--pidfile和--exec开启一个进程。 >* --pidfile:保留进程运行时的ID的文件 >* -exec:检查可执行的进行实体 > * --test测试进程是否存在,不会新建进程 ![](https://box.kancloud.cn/638830ceb22ed2c32c2a1fd69d126ee3_1071x67.png) * 因为进程存在,返回状态码1 * * * * * ### 1.2 建立一个进程 * start不加--test测试模式就可以了 ~~~ sudo start-stop-daemon --start --pidfile /run/nginx.pid --exec /usr/sbin/nginx ~~~ ![](https://box.kancloud.cn/d034f4cf7eb9083ecb6bb46e37f06f13_1034x245.png) ### 1.3 销毁或者停止一个进程 ~~~ sudo start-stop-daemon --stop --pidfile /run/nginx.pid --retry 5 --name nginx ~~~ > * --stop:进程存在,停止进程返回0,不存在返回1 > * --retry:加timeout|schedule,schedule是以/分割的组TERM/30/KILL/5。 重复地检查进程是否停止,signal/timeout/KILL/timeout > * --signal:通常和stop一起使用。指定给进程发送的信号量,默认TERM,nginx可以使用以下信号量 ![](https://box.kancloud.cn/fa11579af45374a6f263f04ee2707609_775x339.png) 发送重新读取配置的信号量 ~~~ sudo start-stop-daemon --stop --pidfile /run/nginx.pid --signal HUP --name nginx ~~~ ~~~ --retry=TERM/30/KILL/5 或者 --retry 5 ~~~ ### 1.4 给可执行文件传递参数 ~~~ -- + 参数 例如启动haproxy --exec $HAPROXY -- -f "$CONFIG 传递配置文件 ~~~ ~~~ start-stop-daemon --quiet --oknodo --start --pidfile "$PIDFILE" \ --exec $HAPROXY -- -f "$CONFIG" -D -p "$PIDFILE" \ $EXTRAOPTS || return 2 return 0 ~~~