一.
一个php脚本,经常跑了好几个小时,然后莫名其妙的挂掉,不胜其烦。在没有找到真正的原因之前,只好先写一个daemon作用的shell script来monitor,在发现脚本挂掉后,重启脚本.
以下是在chinaunix找到的相关内容,汇集了各位大神们的意见:
http://bbs.chinaunix.net/thread-1487627-1-1.html
============================================================
请教如何写一个shell监控我的一个进程状态,死了重启
#/bin/sh
while true; do
count=`ps -fe |grep "main" | grep -v "grep"`
if [ "$?" != "0" ]; then
echo ">>>>no main,run it"
else
echo ">>>>main is running"
fi
sleep 2
done
---------------------------------分割线----------------------------------------------
按照2楼的方法,我的板子里没有wc,也没有crontab
我在终端上执行这个脚本./test,能正确检测,
但是我执行./test &,不管main有没有,都是输出no main,run it
---------------------------貌似解决了------------------------------------
在done后面加 &
============================================================
整体思路看来就是:实现查找进程(ps -ef|grep命令),截取进程字符串关键信息判断是否为空(字符串赋值),执行重启命令(为空时)或跳过(不为空时),用crontab或者循环语句实现定时判断。
发现一个哥们儿写的比我好,拿过来给大家借鉴一下。
#!/bin/bash
CheckProcess()
{
if [ "$1" = ""];
then
return 1
fi
PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
if [ $PROCESS_NUM -eq 1 ];
then
return 0
else
return 1
fi
}
while [ 1 ] ; do
CheckProcess "./a.out"
CheckQQ_RET=$?
if [ $CheckQQ_RET -eq 1 ];
then
killall -9 a.out
exec ./a.out &
fi
sleep 1
done
二.
然后, if 的真正模型是:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
其实, bash中的help if就给了你正确的答案, 但我不知道什么原因无数人就是忽略了它, 而非常多的bash教学资料中都采用了本文开头提出的那种模型来告诉你关于if 结构的事.
注意: [ "$1" = "-a" ] 只一个命令, [ 是命令名!, "$1"是第一个参数, =是第二个参数, "-a"是第三个, ]是第4个. 是[这个命令, 而不是bash本身在报怨 [ "$1" = "-a"] 这样的结构造成的错误, 因为[这个命令对它的参数有所期望, 它期望最后一个参数是 ], 而你用"-a"] 这种连写的形式, 它得到的就只有3个参数: $1, = 和 -a].
三.
在运行该脚本时,发现如下错误:syntax error near unexpected token `else'
问题解决:
1.使用 sh -x change.sh看看哪个地方的有问题
2.使用 dos2unix 字符转换工具 convert file formating
3.如果还没有解决,那只能手动将内容重写一遍
老外这么说:
Solution:
The customer in this case had downloaded the script off our website from a Win95 box,
and then moved the file to the Linux box. This caused DOS ASCII end-of-line characters
to be placed in the script. The solution is to download the script from the Linux box, as
moving it from the Windows environment will always place undesireable characters in
the script.
Or ftp the file in ASCII mode when transfering from Win95 to Linux.
分享到:
相关推荐
Shell脚本定时监控tomcat,服务挂掉自动重启
本文将深入探讨如何使用Shell脚本实现服务器进程监控,这不仅有助于及时发现异常情况,还能提高系统的可用性和稳定性。接下来,我们将根据提供的文件信息详细解释其原理、步骤以及实际应用。 #### 一、写作背景 在...
作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。 在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell...
linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。 crontab...
为了使进程监控脚本能够定期运行,可以使用 `cron` 任务来定时执行脚本。 - **添加定时任务**:通过 `crontab -e` 命令编辑定时任务列表。 - **定时任务格式**:`分钟 小时 日 月 星期 命令`,其中星期的范围是从 `...
#功能:weblogic守护进程:监控weblogic进程,当发现进程停止时调用重启脚本重启 #参数:进程唯一标识码,例如“weblogic” #依赖脚本:数据库操作脚本dbExecurteSQL.sh,weblogic重启脚本$PSSC_DOMAIN/startPssc.sh...
标题"shell脚本监控rabbitmq异常发送邮件通知.rar"表明这个压缩包包含了一个用Shell编写的脚本,其主要功能是对RabbitMQ集群进行健康检查,并在发现异常时通过邮件通知管理员。这对于及时发现和解决问题至关重要,...
这个压缩包文件"shell脚本监控kafka-connect集群节点异常发送邮件通知"应该包含了这个完整的脚本以及相关的配置文件,用户只需根据自己的环境进行适当的修改即可投入使用。对于那些不熟悉shell脚本或者Kafka Connect...
在Linux系统管理中,Shell脚本是常用的工具之一,它能帮助我们自动化各种任务,包括系统和进程资源的监控。本文将详细介绍如何使用Shell脚本来实现这些监控功能。 1. **检查进程是否存在** 使用`ps`命令可以查看...
关键字监控脚本 为了实现日志监控功能,需要编写 CheckLogs.sh 脚本,该脚本可以监控日志文件,并在出现关键字时触发邮件告警操作。该脚本可以自定义配置文件目录, chklist 文件用于存储日志监控配置信息。 ...
在IT行业中,shell脚本是一种强大的工具,它允许我们通过编写简单的命令行指令来自动化复杂的任务,例如定时重启机器和自动测试网络连接。这个压缩包包含的两个脚本可能就是实现这些功能的具体代码。 首先,让我们...
Linux系统自动不停重启并计数的shell脚本
2. 使用`grep -v "grep"`来排除`grep`命令自身,否则`grep`的进程也会被误认为是要监控的进程,导致脚本无法正常判断。 这个脚本设计的目的是确保`loader`服务始终处于运行状态。当服务意外停止时,脚本会在10秒后...
Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少。下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考。 1、监控磁盘的空闲空间shell脚本 robin@SZDB:~/dba_scripts/...
在这个文档中,作者详细介绍了如何使用Shell脚本来监控Linux系统下MySQL的主从同步状态,并且通过邮件通知管理员同步错误。以下是根据文档内容总结的关键知识点: 1. **Shell脚本的作用**:Shell脚本能够自动化执行...
实验报告“中北大学操作系统云沙箱实验报告-使用Shell脚本实现局域网MAC地址收集和FTP服务监控”详细介绍了如何通过Shell脚本在Linux操作系统中管理和监控局域网内的设备。实验主要分为三个部分:FTP服务器的部署、...
1. **CPU监控**:在Shell脚本中,我们可以使用`top`或`mpstat`命令来实时查看CPU的使用率。`top`命令提供了实时的系统资源使用情况,包括CPU负载、进程信息等;`mpstat`则能够显示每个CPU核心的使用情况。通过定时...
shell监控tomcat进程,宕机重启,其他服务也是类似。
shell脚本实现java服务启动,重启,停止 启动:./java-server.sh start 重启:./java-server.sh restart 停止:./java-server.sh stop