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是一个数值类型,用来表示超时时间,如果未提供该参数,那么 ...
随机推荐
- web开发工具flask中文英文书籍-持续更新
web开发工具flask中文英文书籍-持续更新 python测试开发_AI命理关注 0.9222018.11.10 07:48:43字数 625阅读 885 python测试开发项目实战-目录 pyt ...
- redis有序集合数据类型---sortedset
一.概述 redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数. redis正式通过分数来为集合中的重圆进行从小到大的 ...
- 怎样修改vim的缩进
默认vim的tab缩进是八个空格, 太长了, 需要改短一点. 第一步: 找到vimrc文件所在位置 # find / -name vimrc 第二步: 找到以后用vim打开vimrc文件并增加下面两行 ...
- LINUX CGROUP总结
简介: Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU.内存.磁盘输入输出等).这个项目最早是由Go ...
- Python Django mysqlclient安装和使用
一.安装mysqlclient 网上看到很过通过命令:pip install mysqlclient 进行安装的教程,但是我却始终安装失败,遇到的错误千奇百怪,后来通过自己下载mysqlclient客 ...
- Gitlab Runner实现CI/CD自动化部署asp.net core应用
环境说明 一台git服务器(192.168.169.7),安装gitlab,docker. 一台web服务器(192.168.169.6),安装git,gitlab runner,docker,dot ...
- (面试题)请用C语言实现在32位环境下,两个无符号长整数相加的函数,相加之和不能存储在64位变量中
分析:长整数相加,将结果分为高位和低位部分,分别保存在两个32整数中. 比如:unsigned int a = 0xFFFFFFFF, unsigned int b = 0x1, 结果用unsigne ...
- vue函数化组件 functional
需要在组件中把functional 设置为true 一个函数化组件像这样: Vue.component('testcomponent', { functional: true, // 为了弥补缺少的实 ...
- 解决 React-Native: Android project not found. Maybe run react-native android first?
在终端运行命令react-native run-android时报错Android project not found. Maybe run react-native android first? 解 ...
- 基于数组的shell脚本编写
基于数组的shell脚本编写 2017年08月17日 22:56:36 momokuku123 阅读数:369 数据:变量,文件,数组 变量:存储单个元素的内存中的一块存储空间 数组:存储多个元素的内 ...