Linux Shell自动拉起进程

Linux Shell自动拉起进程,第1张

新建文件夹/root/test/,test文件夹中有myCPP.cpp,myTEXT.txt,restart.sh

该文件的功能是每隔5s往myTEXT.txt中写入当前时间

编译得到可执行文件mycpp: g++ myCPP.cpp -std=c++11 -o mycpp

注意有时候因为权限问题会导致shell拉起失败,这里粗暴地开放所有权限 chmod 777 mycpp

shell脚本,检测目标程序是否处于运行状态,如果不运行则将其拉起。

加上crontab就可以让脚本定时执行,一旦发现进程没有运行,则启动该进程,这样就实现了进程的自动拉起。

通过 crontab -e 进入类似vim的 *** 作界面,在文件末尾补充 */1 * * * * /root/test/restart.sh /root/test/mycpp&,让restart.sh脚本每一分钟运行一次(即每分钟检测一次mycpp是否正在执行)

查看mycpp进程是否在执行 ps -ef | grep mycpp

查看mycpp执行写入的结果 tail -f myTEXT.txt

一、supervise

Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序。

使用:

mkdir test

cd test

vim run 写入希望执行的 *** 作

supervise test (注意这里是的参数是run文件上层的文件夹,改变run的为可执行 chmod +x run)

二、monit

monit是一个小型的开放源码工具来管理和监控Unix系统。Monit可以自动维护进程,及时避免进程异常退出等产生的问题。

系统: monit可以监控问题的发生,包括进程状态、系统cpu负载、内存占用情况等,例如当apache服务的cpu负载以及内存闸弄情况过高时候,它会重启apache服务。

进程: monit可以监控守护进程,包括系统进程。例如当某个进行down掉,它会自动恢复重启该进程。

文件系统:Monit可以监控本地文件、目录、文件系统的变化,包括时间戳、校验值、大小的变化。例如,可以监控文件sha1以及md5的值,来监控文件是否发生变化。

网络:monit可以监控网络连接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。

定时脚本:monit可以用来定时测试程序和脚本,获取程序输出结果,进而判断是否成功或其他情况。

安装:

sudo apt-get install monit

编辑配置:

sudo vim /etc/monit/monitrc

启动、停止、重启:

sudo /etc/init.d/monit start

sudo /etc/init.d/monit stop

sudo /etc/init.d/monit restart

设置页面监控状态:

set httpd port 2812 and

allow 0.0.0.0/0.0.0.0

allow localhost

增加监控:

需要注意的是,这里需要添加start和stop,缺一个都是不行的

1.根据程序名称来监控

check process test with MATCHING test.py

start program = "/home/yxd/test.py"

stop program = "xxxxx"

2.根据pid监控

check process apache with pidfile /var/run/httpd.pid

start program = "/etc/init.d/rcWebServer.sh start https"

stop program = "/etc/init.d/rcWebServer.sh stop https"

if changed pid then aler

参考:用monit监控系统关键进程

supervisord

Supervisor是一个C/S系统,它可以在类unix *** 作系统让用户来监视和控制后台服务进程的数量。它是由python编写的,常用于进程异常退出的重启保护。

安装:

pip install supervisor

查看配置文件:

echo_supervisord_conf

从该命令的结果中,可以看到各个模块的配置信息。

创建配置文件:

echo_supervisord_conf >/etc/supervisord.conf

配置应用:

[program:test]

command=python /root/test_supervisor.py

process_name=%(program_name)s

stdout_logfile=/root/test.log

stderr_logfile=/root/test.log

保存,启动:

/usr/bin/supervisord -c /etc/supervisord.conf


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8399685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存