shell脚本不用nohup如何在后台执行?

supervisord进程管理(go版本) 主要是托管自已的脚本

进程管理工具。
可以监听、启动、停止、重启一个或多个进程
用supervisord管理的进程,当一个进程意外被杀死,supervisord监听到进程死后,会自动将它重启,很方便的做到进程的自动恢复的功能,不在需要自己写脚本来控制
启动文件的程序不能在后台执行(不可以nohup)
项目地址
https://github.com/ochinchina/supervisord

1.安装supervisord
mkdir /data/ (把安装包放在data下)
tar xzvf supervisord_0.7.3_Linux_64-bit.tar.gz
mv supervisord_0.7.3_Linux_64-bit /data/supervisord
chmod o+x /data/supervisord/* && chown -R root:root /data/supervisord

(把安装包supervisord.conf放在 /data/supervisord中)
2.生成配置文件
cat /data/supervisord/supervisord.conf
[supervisord]
##这是写日志的
logfile=/data/supervisord/supervisord.log
logfile_maxbytes=100MB
logfile_backups=10
nodaemon=false

//定义以网页端可以远程查看(工作端口是19001)
[inet_http_server]
port=0.0.0.0:19001

(program是不可以改的 后面是自已取得名字) **
[program:inotify_secure_log]
command =/shell/inotify_secure.sh (要托管的脚本文件就放在这里)
##自已工作启动
autostart=true
##自已重启
autorestart=true
[program:nginx]
command =/usr/local/nginx/sbin/nginx -g “daemon off;”
#nginx前台执行
autostart=true
autorestart=true
只需要改这俩个就可以了
要保证这个脚本是准确无误的 很安全的运行的
[program:inotify_secure_log]
command =/shell/intoify_rsync.sh

3.手动后台启动(效率太低了)
-c 指配置文件 -d指在后面工作
/data/supervisord/supervisord -c /data/supervisord/supervisord.conf -d

如何查看启动成功
ps aux | grep supervisord
ps aux | grep inotify

4.系统自动安装开机自启服务
/data/supervisord/supervisord -c /data/supervisord/supervisord.conf -d service install
服务名称是(go-supervisord)

5.开机自启动
systemctl enable go-supervisord

6.启动
systemctl start go-supervisord

查看端口号
ss -ntpl 19001表示成功
进行查看 此时已经启动成功
ps aux | grep supervisord

在浏览器输入地址也是可以查看的
192.168.171.16:19001

以后要托管很多服务
就去里面修改配置文件
如果还有要托管的脚本 就在写一份
cd /data/supervisord
vim supervisord.conf
[program:inotify_secure_log]
command =/shell/intoify_rsync.sh
autostart=true
autorestart=true

修改完配置文件以后要开启服务
systemctl start go-supervisord
查看状态
systemctl status go-supervisord
查看日志
tail -f supervisord.log
手工去停止服务
systemctl stop go-supervisord

记得要把这俩行给注释掉(开了图形化容易被入侵)
#[inet_http_server]
#port=0.0.0.0:19001

配置参数说明
[supervisord]
#这个主要是定义supervisord这个服务端进程的一些参数的
这个必须设置,不设置,supervisor就不用干活了
logfile=/tmp/supervisord.log
这个是supervisord这个主进程的日志路径,注意和子进程的日志不搭嘎。
logfile_maxbytes=50MB
#日志文件的最大的大小,当超过50M的时候,会生成一个新的日志文件。当设置为0时,表示不限制文件大小
#默认值是50M,非必须设置。
logfile_backups=10
#日志文件保持的数量,supervisor在启动程序时,会自动创建10个buckup文件,用于logrotate
#当设置为0时,表示不限制文件的数量,默认情况下为10。。。非必须设置
loglevel=info
#日志级别,有critical,error,warn,info,debug,trace,orblather等
#默认为info。。。非必须设置项
pidfile=KaTeX parse error: Expected 'EOF', got '#' at position 21: …upervisord.pid #̲supervisord的pid…CWD/supervisord.pid。。。非必须设置
nodaemon=false
#如果是true,supervisord进程将在前台运行
#默认为false,也就是后台以守护进程运行。。。非必须设置
minfds=65536
#这个是最少系统空闲的文件描述符,低于这个值supervisor将不会启动。
#系统的文件描述符在这里设置cat/proc/sys/fs/file-max
#默认情况下为1024。。。非必须设置
minprocs=65536
#最小可用的进程描述符,低于这个值supervisor也将不会正常启动。
#ulimit -u这个命令,可以查看linux下面用户的最大进程数
[inet_http_server]
#侦听在TCP上的socket,WebServer和远程的supervisorctl都要用到他
#不设置的话,默认为不开启。非必须设置
port=127.0.0.1:9001
#这个是侦听的IP和端口,侦听所有IP用:9001或*:9001。
#这个必须设置,只要上面的[inet_http_server]开启了,就必须设置它
username=user
#登录口令
password=123
#登录密码
[program:theprogramname]
#这个就是咱们要管理的子进程了,":"后面的是名字,最好别乱写和实际进程
command=/bin/cat
#这个就是我们的要启动进程的命令路径了,可以带参数
#例子:/home/test.py-a’hehe’
#有一点需要注意的是,我们的command只能是那种在终端运行的进程,不能是
#守护进程。这个想想也知道了,比如说command=servicehttpdstart。
#httpd这个进程被linux的service管理了,我们的supervisor再去启动这个命令
#这已经不是严格意义的子进程了。
#这个是个必须设置的项
autostart=true
#如果是true的话,子进程将在supervisord启动后被自动启动
#默认就是true。。非必须设置
autorestart=unexpected
#这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected
#和true。如果为false的时候,无论什么情况下,都不会被重新启动,
#如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退
#出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无
#条件的重启
startsecs=1
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启
#动成功了默认值为1。。非必须设置
startretries=3
#当进程启动失败后,最大尝试启动的次数。。当超过3次后,supervisor将把
#此进程的状态置为FAIL

只会托管自已的脚本,不会托管systemctl start vsftpd(因为他是在后台运行的是托管不了的)

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值