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(因为他是在后台运行的是托管不了的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐高小人分类项目

数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …

plc scl编程语言:深度解析与应用探索

plc scl编程语言:深度解析与应用探索 在工业自动化领域,PLC(可编程逻辑控制器)扮演着至关重要的角色。而SCL(结构化控制语言)作为PLC的一种编程语言,因其强大的功能和灵活性备受青睐。本文将从…

利用 Docker 简化Redis部署:快速搭建Redis服务

利用 Docker 简化Redis部署:快速搭建Redis服务 目录 利用 Docker 简化Redis部署:快速搭建Redis服务为什么选择 Docker准备工作拉取Redis镜像快速运行Redis容器验证Redis服务总结 在现代软件开发中,Redis作为一种高性能的键值数据库&#xff0…

52 https

HTTPS是什么 https也是一个应用层协议,是在http协议的基础上引入了一个加密层 http协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况 http和https是可以同时存在的,数据时从应用层自上往下发的&#xff0c…

简述浏览器和 Node.js 中的事件循环 ?

浏览器和Node.js中的事件循环都是用于处理异步任务和回调函数的机制,但它们在某些实现细节和用途上有所不同。下面分别对它们进行简述: 浏览器中的事件循环 目的: 浏览器事件循环是浏览器用于处理用户输入、网络请求、渲染和其他异步事件的机…

OVP、TVS、ESD二极管、稳压二极管的区别

本文介绍OVP、TVS、ESD二极管、稳压二极管简介及TVS与ESD的区别。 文章目录 一、简介1、过压保护(OVP, Over-Voltage Protection)3、稳压二极管(Zener Diode 或齐纳二极管)小结: 二、TVS&ESD的区别1、设计目标2、…

C++的PDF库

PDF(Portable Document Format,可移植文档格式)是一种由 Adobe Systems 开发并推出的文件格式。PDF 主要用于在不同平台和设备之间精确呈现文档,无论是在 Windows、macOS、Linux 还是其他操作系统上打开,文档的外观都保…

springboot 集成minio 实现文件上传

引入依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.0</version> </dependency>因为我是后端开发需要使用knife4j <?xml version"1.0" encoding"UTF-8"…

数仓建模—ChatETL

数仓建模—ChatETL 前面我们介绍过ChatBI ,就是让用户通过自然语言对话的方式可以获取到自己想要的数据,然后通过合适的报表展示出来,其实我们可以将其理解为应用层面的技术创新,但是这个实现的前提就是我们底层已经有加工好的大量的数据模型数据表,并且有完善的元数据建…

vue3使用antdv 组件处理左边菜单栏,刷新菜单栏保持选中状态

//方法1 <a-menuv-model:selectedKeys"selectedKeys"theme"dark"mode"inline"click"activeMenu selectedKeys">const selectedKeys ref([sessionStorage.getItem("activeMenu") || "/home"]); const acti…

【Python】解决Python报错:AttributeError: ‘str‘ object has no attribute ‘xxx‘

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

每日刷题——相遇、宝石(模拟+数学)、相助(模拟+数组)、相依(dp的优化)

相遇 原题链接登录—专业IT笔试面试备考平台_牛客网 题目描述 运行代码 #include<iostream> using namespace std; int main(){ int a,b; cin>>a>>b; if(ab) { cout<<"p"; } else if(a - b 1 || (a 1 && b 3)){cout <<…

Kong网关命令详解

Kong网关的所有命令行指令都在 /usr/local/share/lua/5.1/kong/cmd 目录内。 cd /usr/local/share/lua/5.1/kong/cmdcheck.lua debug.lua hybrid.lua migrations.lua quit.lua restart.lua runner.lua stop.lua vault.lua config.lua health.lua init.lua prepare.…

系统架构设计师【第10章】: 软件架构的演化和维护 (核心总结)

文章目录 10.1 软件架构演化和定义的关系10.1.1 演化的重要性10.1.2 演化和定义的关系 10.2 面向对象软件架构演化过程10.2.1 对象演化10.2.2 消息演化10.2.3 复合片段演化10.2.4 约束演化 10.3 软件架构演化方式的分类10.3.1 软件架构演化时期10.3.2 软件架构静态演…

eNSP学习——连接RIP与OSPF网络

目录 相关主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建RIP和OSPF网络 3、配置双向路由引入 4、手工配置引入时的开销值 相关主要命令 [R1-ospf-1]import-route rip 1 //引入RIP路由 [R1-rip-1]import-route ospf 1 …

vue中编辑器无法识别自定义指令

在根目录新建web-types.json&#xff0c;添加下列内容 {"$schema": "https://json.schemastore.org/web-types","framework": "vue","name": "name written in package.json","version": "versio…

【计算机毕业设计】353微信小程序零食批发交易管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

微信小程序毕业设计-校园服务平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

RabbitMQ二、RabbitMQ的六种模式

一、RabbitMQ的六种模式 RabbitMQ共有六种工作模式&#xff1a; 简单模式&#xff08;Simple&#xff09;工作队列模式&#xff08;Work Queue&#xff09;发布订阅模式&#xff08;Publish/Subscribe&#xff09;路由模式&#xff08;Routing&#xff09;通配符模式&#xff…

代码随想录算法训练营第四十六天 | 完全背包理论基础、518. 零钱兑换 II、377. 组合总和 Ⅳ

完全背包理论基础 视频讲解&#xff1a; https://www.bilibili.com/video/BV1uK411o7c9 https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85.html 完全和01背包的区别&#xff1a; …