自从上次 Log4j2 的漏洞问题升级了 Logstash 之后,每到凌晨 2 点,进程就会挂掉,那段时间会有一个日志切割的操作导致文件不可读,因此写了一个脚本通过 crontab 来监控进程是否存在:.../bin/bash process=$1 pid=$(ps -ef | grep 进程名称 | grep -v grep | awk '{print $2}') if [ !..."msgtype": "text", # "text": { # "content": "正式环境 Logstash 进程异常..., # "mentioned_list": ["@all"] # } # }' fi 刚开始我的进程名称填的一直是 logstash...,然而每次 kill 掉进程后,依旧能输出 2 个进程号,但是如果手动查询进程号的话输出就是空,最后通过查询 Java 进程来变相达成目的。
https://blog.csdn.net/haluoluo211/article/details/77693818 本文主要内容: shell日志date format shell poll监控重新运行...最终决定使用shell一直监控指定的进程,如果没有运行,则重新启动重新。...相信监控重新是否运行,如果重新意外挂了,需要对重新重新启动这个场景应该十分常见吧,(下面是shell的log截图) ?...下面是shell脚本 下面的shell中test_process=”[p]ython.
业务上的一个需求: 监控进程是否存在,如果检测时不存在则发送告警短信,如果连续10次检测都不存在则发送告警电话。 最近一直在学前端vue.js,今天试着拿python练下,以免手生。.../procmonitor.py DESCRIPTION 解析进程xml,监控进程标示符,不存在sms告警,不存在uwork电话告警 DEMO ....def __init__(self, parse_xml, path, sms_id, uwork_id, threshold): """ parse_xml:要解析的进程文件.../procmonitor.py DESCRIPTION 解析进程xml,监控进程是否存在,不存在sms告警,不存在此uwork告警 DEMO .
进程 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示。...内核根据父进程复制出一个子进程,父进程和子进程的PCB信息相同,用户态代码和数据也相同。因此,子进程现在的状态看起来和父进程一样,做完了初始化,刚调用了fork进入内核,还没有从内核返回。...是父进程先返回还是子进程先返回,还是这两个进程都等待,先去调度执行别的进程,这都不一定,取决于内核的调度算法。...任何进程在刚终止时都是僵尸进程,正常情况下,僵尸进程都立刻被父进程清理了。如果一个父进程终止,而它的子进程还存在(这些子进程或者仍在运行,或者已经是僵尸进程了),则这些子进程的父进程改为init进程。...进程间通信每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走
. # # chkconfig: 2345 90 10 # description: 这个程序用来监控服务器服务软件,以程序挂掉后重启 Author is Sindsun 2019年12月9日15:40
/mianmiyao.sh 脚本执行完毕后,可以先手动执行如下命令,如无需输入密码跳转到对应的目标服务器时,则表示成功。.../bin/bash # @Time : 2023/02/01 # @Author : JackTian # @File : cpufreedisk.sh # @Desc : 使用该脚本监控...| grep Elasticsearch | awk '{print \$1}' | xargs" } function restart { ssh $1 <<EOF echo "请手动启动 ES 进程...restart $rootHost fi else echo "${todaytime}xxx系统$rootHost 的 ES 进程运行状态异常...crontab -e # 使用该脚本监控 ES 系统程序假死、挂掉、异常及服务器断网、宕机服务器恢复后,程序做判断恢复/检测服务器cpu内存磁盘。
/usr/bin/env python import os, sys, time while True: time.sleep(3) try: ret = os.popen('ps -C nginx
supervisor虽然也能拉起来logstash进程,但是有时候supervisor也会挂,也有时会拉不起,就算拉起来了也没有邮件告警功能 ,所以编写一个python脚本监控所有服务器,以下代码只列举了一台服务器...(日志采集过程中连续几天数据异常,由于服务器太多,当时不太想一一去将近40台服务器查看logstash进程,但又一直查不出原因,后来就每台服务器查看logstash进程,果然发现3台采集搜索日志的logstash...进程没了,然后就编写了此脚本监控,效果很好) # coding=utf-8 #!...print("ip为%s,配置文件名称为 %s 不在进程中,正在重启进程......"..._main__': while True: try: checkPS() except Exception as e: print('Error:', e) 以上这篇python脚本监控
本文介绍在Linux系统下几种常见的监控需求及其shell脚本的编写。...CPU 过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程 CPU 进行时时监控,可以在 CPU 利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断等。...内存使用过高可能由于内存泄露,消息堆积等情况,通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警(例如通过短信),便于维护人员及时处理。...句柄使用过高可能由于负载过高,句柄泄露等情况,通过脚本对业务进程句柄使用量进行时时监控,可以在异常时及时发送告警(例如通过短信),便于维护人员及时处理。...总结 在 Linux 平台下,shell 脚本监控是一个非常简单,方便,有效的对服务器,进程进行监控的方法,对系统开发以及进程维护人员非常有帮助。
让我们看看 Monit 的用法,假设我们要监控 Nginx 进程,一旦其 CPU 使用率连续 5 次轮询周期里均超过 50% 的话,就重启进程,此时就可以按照如下方式设置: check process...再让我们看看 Supervisor 的用法,假设我们要监控 100 个 PHP 实现的 Worker 进程,用来提供 Gearman 之类的服务,由于 PHP 本身运行模式的缘故,为了避免严重的内存泄漏问题...不管用什么来监控进程,如果监控者本身挂了,那么被监控者无疑就失控了。...此时需要考虑如何监控监控者本身,这似乎是一个递归问题,不过文章开头我们说过,Linux 本身的初始化系统就能实现简单的监控功能,以 SysVinit 为例,编辑 /etc/inittab 文件: SU:...2345:respawn:/usr/bin/supervisord -c /etc/supervisord.conf 改好后运行「init q」命令让其生效,然后 kill 掉 supervisor 进程看看会不会发生奇迹
不用做任何修改,即可用process_monitor.sh监控各种进程。...运行process_monitor.sh,需要指定两个参数: 1)参数1:被监控的对象,支持同一程序带不同参数的分别监控,典型的如java程序 2)参数2:被监控的对象不存在时,重拉起脚本或命令...参数1又可分成两部分: 1)被监控对象,如java程序,不含参数部分,值需要和ps看到的完全相同,比如ps看到的是绝对路径,则也需为绝对路径; 2)参数匹配部分,一个用于区分同一程序不同进程的源自于参数的字符串...这部分是可选的,只有当被监控对象以不同参数在同一机器上同时运行时才需要指定。 建议将process_monitor.sh放到目录/usr/local/bin下,以方便使用。...示例1:监控ZooKeeper进程(假设ZooKeeper安装目录为/data/zookeeper,JDK安装目录为/usr/local/jdk) /usr/local/bin/process_monitor.sh
/usr/sbin/rinetd > /dev/null 2>&1 & # # 进程监控脚本,当指定进程不存在时,执行重启脚本将它拉起 # 特色: # 1.本监控脚本可重复执行,它会自动做互斥...# 2.互斥不仅依据监控脚本文件名,而且包含了它的命令行参数,只有整体相同时互斥才生效 # 3.对于被监控的进程,可以只指定进程名,也可以包含命令行参数 # 4.不管是监控脚本还是被监控进程,总是只针对属于当前用户下的进程...(可以包含命令行参数) # 参数2:重启被监控进程的脚本 if test $# -ne 2; then printf "\033[1;33musage: $0 process_cmdline...start_seconds=5 # 被监控进程启动需要花费多少秒 cur_user=`whoami` # 执行本监控脚本的用户名 # 取指定网卡上的IP地址 #eth=1&...,用来阻止多个监控脚本进程出现 uid=`id -u $cur_user` self_name=`basename $0` self_cmdline="$0 $*" process_name=$
这个问题就可以使用我们的shell脚本了....原理: 通过监视一段时间内CPU使用情况,找出长期占用CPU的进程并对其进行优化,提高CPU的效率 我们先来写一个监视CPU并计算一小时内CPU的使用情况的脚本: #!....$$ 写惯了python,在写shell脚本,就会觉得shell脚本比较晦涩,而python就不一样了,简单,易懂, 之前有知识星球的星球居民问: shell都能用来干嘛...除了这个脚本外,shell还可以写很多管理脚本这里举例说明几个方向: 图像文件的缩放及格式转换 使用shell读取mysql数据库 用户管理 检查磁盘及文件系统错误 监控用户登录防范黑客入侵...搭建防火墙 写图片加载器及下载工具 跟踪网站变动等 其实有时候不用刻意迷信python,很多时候你觉得python好,shell差,实在是你因为我们写shell脚本能力太差.
由于代码调试进程一直存在需要手动杀死,比较费时,写个小脚本节省下时间 #vi clear.sh !.../clear.sh (进程名) 其中grep -v bash 过滤执行..../clear 的bash进程 参考shell——查找指定进程并且关闭_qq1041663097的博客-CSDN博客_shell 查找进程 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人
print("running") [root@bogon ~]# python monitor.py running [root@bogon ~]# 反思:返回值可以设置成1 或者0 然后结合zabbix做监控
,可以通过 pstree 命令查看进程与子进程的关系,但是其输出图形,不太方便获取所有子进程ID,因此打算自己编写 C++ 代码来实现 思路 用伪码表示: 当待查询进程存在: 遍历用户所有进程,...std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); std::time_t now_c...= std::chrono::system_clock::to_time_t(now); cout<< std::put_time(std::localtime(&now_c), "%F.../pm 25201 2 监控 id 为25201的进程,刷新间隔为2秒 结果输出: 2020-09-18 17:37:05 1932 2020-09-18 17:37:07 1932 2020-09-18...17:37:09 1932 这里输出的内存单位是 KB 注意:由于需要进程启动之后才能开启监控,导致进程内存无法从0开始;当进程结束,则监控程序也会退出 关于结果展示,直接将输出结果的第二列和第三列拷贝到
\",\"tags\": \"$tags\"}]" post_curl } export -f post_curl export -f put_falcon while read port;do #进程总数...| grep -v 'Variable_name' |sed 's/ //g'|awk -F':' '{print $2}' ) echo $value | xargs -n 3 -i bash -c...| grep -v 'Variable_name' |sed 's/ //g'|awk -F':' '{print $2}' ) echo $value | xargs -n 3 -i bash -c...fi #ERROR value=$(echo errorlog port=${port},mail=mysqldb $value) echo $value | xargs -n 3 -i bash -c...}" #死锁 value=$(echo deadlock port=${port},mail=mysqldb ${_value}) echo $value | xargs -n 3 -i bash -c
1.创建用于监控的用户角色:mongo用户的权限按用户角色进行划分 > use admin > db.getRoles() > db.createRole( { role:"mongostatRole...true},actions:["serverStatus"]}], roles:[]} ) //建立一个使用mongostat命令权限的用户角色 2.创建系统监控角色...{ user:"dbmon", pwd:"password", roles:[{role:"mongostatRole",db:"admin"}]} ) 3.编写脚本...aaaaaaaaaaaa" # exit 5 esac if [ -z $rst ];then echo 0 else echo $rst fi mongodb重启脚本...bin/bash curl -s http://ydy.zhongsou.com/Listener/listen_mongo > /tmp/mongostatus.txt if [ `grep -c
1.进程ID 每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的。...1.1分配进程ID 缺省情况下,内核将进程ID的最大值限制为32768,可以在此处设置/proc/sys/kernel/pid_max,在短时间内,内核不会重用已经分配的ID. 2.获得进程id和父进程...当前进程就是父进程,创建成功的进程是子进程。...在父进程成功的fork()调用,会返回子进程的pid 在子进程fork()调用会返回0 #include #include int main(){...,pid=%d , ppid=%d ,我新建的子进程pid=%d\n",pi d,ppid,ret); sleep(3);//父进程不能太快终止,否则看不出子进程ppid
%c 到达\t进程状态\n", a[k].name); printf("\n\t\t\t\t %s\n\n\n", jczt[processztsy]); if (processnum >= 1)...= 0) { printf("\t\t\t进程 %c 完成\n\n\n\n", a[k].name); } if ((k >= 1 && time >= a[k].arrivetime && time...= 0)) { printf("\t\t\t进程 %c 开始\n\n\n\n", a[k].name); } } if (time > a[n - 1].finishtime && a[n - 1]...= 1; } printf("\t\t进程 %c 到达\t进程状态\n\n\n\n", a[k].name); } } if (jcnum == 0) { //遍历数组 for (int i = jcnum...= 0) { printf("\t\t\t进程 %c 完成\n\n\n\n", a[jcnum - 1].name); //遍历数组 for (int i = jcnum; i < n; i++)
领取专属 10元无门槛券
手把手带您无忧上云