start-stop-daemon 守护进程管理
start-stop-daemon 守护进程管理
start-stop-daemon 作为系统自带,简单实用 结合systemctl,用起来很是不错.
示例
PIDFILE=/var/run/nginx.pid
DAEMON=/usr/local/nginx
DAEMON_OPTS="-c /tmp/nginx/nginx.conf"
start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON/sbin/nginx -- $DAEMON_OPTS
上面执行指令通过 start-stop-daemon 来启动一个nginx进程,并且生成一个pid文件。
注意这里只是一个实例,用来说明 start-stop-daemon 的运作方式,真实环境中Nginx不需要这样启动。
参数介绍
- --start 启动一个守护进程
- --stop 终止一个守护进程
- --status 查看一个守护进程运行状态
- --pidfile 记录进程号(pid)的文件
- --exec 启动进程的入口
- --user 启动进程的用户
- --make-pidfile 如果进程自己不创建pidfile,可以通过该参数指定
- --quiet 不输出警告信息
- --retry 启动失败后重试的次数
- --background 指定为后台运行模式,如果进程不是后台模式则需加如这个参数
- -- 空格之后的参数是传给--exec 的 如上列也就是/usr/local/nginx/sbin/nginx
--status 的几个状态说明
0 Program is running.
1 Program is not running and the pid file exists.
3 Program is not running.
4 Unable to determine program status.
一个完整的例子
cat /etc/init.d/frpc
#!/bin/sh
### BEGIN INIT INFO
# Provides: frpc
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: slapd cups
# Should-Stop: slapd cups
# Short-Description: Frpc keep service
# Description: server to provide Frpc
### END INIT INFO
PIDDIR=/var/run/frp
FRPCPID=$PIDDIR/frpc.pid
# clear conflicting settings from the environment
unset TMPDIR
# See if the daemons are there
test -x /home/makeit/apps/frp_0.27.0_linux_amd64/frpc || exit 0
. /lib/lsb/init-functions
case $1 in
start)
log_daemon_msg "Starting frpc daemon" frpc
# Make sure we have our PIDDIR, even if it's on a tmpfs
install -o root -g root -m 755 -d $PIDDIR
if ! start-stop-daemon --start --background --retry 30 --make-pidfile --pidfile $FRPCPID --exec /home/makeit/apps/frp_0.27.0_linux_amd64/frpc -- -c /etc/frpc.ini ; then
log_end_msg 1
exit 1
fi
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping FRPC daemon" frpc
start-stop-daemon --stop --pidfile $FRPCPID
#kill `cat $FRPCPID`
# Wait a little and remove stale PID file
sleep 1
if [ -f $FRPCPID ] && ! ps h `cat $FRPCPID` > /dev/null
then
# Stale PID file, remove it (should be removed by
# smbd itself IMHO).
rm -f $FRPCPID
fi
log_end_msg 0
;;
reload)
log_daemon_msg "Reloading /etc/frpc.ini" frpc
$0 restart
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
status)
status_of_proc -p $FRPCPID /home/makeit/apps/frp_0.27.0_linux_amd64/frpc frpc
exit $?
;;
*)
echo "Usage: /etc/init.d/frpc {start|stop|reload|restart|force-reload|status}"
exit 1
;;
esac
exit 0
注意修改完 要执行 systemctl daemon-reload 重载修改的文件
start-stop-daemon 守护进程管理的更多相关文章
- nohup命令、setsid命令、Daemon(守护进程)简要梳理
nohup命令 当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新 ...
- Linux守护进程管理利器——Supervisor
Supervisor是采用 Python(2.4+) 开发的,它是一个允许用户管理 基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理.安装: yum in ...
- PHP7 网络编程(二)daemon守护进程
前言 在一个多任务的计算机操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的计算机程序.此类程序会被以进程的形式初始化.守护进程程序的名称通常以字母“ ...
- CentOS7 安装supervisor守护进程管理器
supervisor没有发布在标准的CentOS源在,需要安装epel源.这种方式安装的可能不是最新版本,但比较方便,安装完成之后,配置文件会自动帮你生成. 默认配置文件:/etc/superviso ...
- Python—守护进程管理工具(Supervisor)
一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...
- linux下daemon守护进程的实现(以nginx代码为例)
ngx_int_t ngx_daemon(ngx_log_t *log) { int fd; // 让init进程成为新产生进程的父进程: // 调用fork函数创建子进程后,使父进程立即退出.这样, ...
- python中的daemon守护进程实现方法
原文参考:http://blog.csdn.net/tao_627/article/details/49532021 守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理 ...
- Daemon——守护进程
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系统引导装入时启动, ...
- python网络编程--线程join和Daemon(守护进程)
一:什么情况下使用join join([timeout])调用join函数会使得主调线程阻塞,直到被调用线程运行结束或超时. 参数timeout是一个数值类型,用来表示超时时间,如果未提供该参数,那么 ...
随机推荐
- gitlab私有环境搭建
1. 环境准备 安装所需的依赖包 yum install curl openssh-server openssh-clients postfix cronieGitLab使用postfix发送邮件 s ...
- SpringCloud使用Consul作为分布式配置中心
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36027670/article/de ...
- JMeter-03-元件的作用域与执行顺序
JMeter元件的作用域与执行顺序 元件的作用域 先来讨论一下元件有作用域.<JMeter基础元件介绍>一节中,我们介绍了8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样 ...
- VBA Exit For语句
当想要根据特定标准退出For循环时,就可以使用Exit For语句.当执行Exit For时,控件会立即跳转到For循环之后的下一个语句. 语法 以下是在VBA中Exit For语句的语法. Exit ...
- 0-1背包问题——回溯法求解【Python】
回溯法求解0-1背包问题: 问题:背包大小 w,物品个数 n,每个物品的重量与价值分别对应 w[i] 与 v[i],求放入背包中物品的总价值最大. 回溯法核心:能进则进,进不了则换,换不了则退.(按照 ...
- UNIX常用shell
/bin/sh Bourne shell 它是Unix的默认Shell,也是其它Shell的开发基础.Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell /bi ...
- Spark学习笔记3——RDD(下)
目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...
- 安装配置nginx之后访问不了nginx的问题
我刚开通的服务器,没有设置安全组规则. 进入云服务控制台 配置规则 其他不要动,授权对象加0.0.0.0/0 就可以访问nginx了
- aiops相关
AIOPS的能力框架 AIOps平台能力体系 AIOps 常见应用场景 按照时间来分 AIOPS实施的关键技术 1.数据采集(硬件,业务指标等) 2.数据预处理(特征工程) 3.数据可视化 4.数据存 ...
- 织梦阿里云OSS解决方案
准备工作 申请OSS账号,并且创建一个public-read的bucket.这里需要权限为public-read是因为后面需要匿名访问. 详细步骤 1.开启织梦远程附件功能2.现在织梦还有远程附件还有 ...