GVKun编程网logo

用Shell脚本定时监控Linux下的进程状态并自动重启(shell脚本实现监控进程)

15

在这篇文章中,我们将带领您了解用Shell脚本定时监控Linux下的进程状态并自动重启的全貌,包括shell脚本实现监控进程的相关情况。同时,我们还将为您介绍有关Linuxshell脚本中如何读取跟s

在这篇文章中,我们将带领您了解用Shell脚本定时监控Linux下的进程状态并自动重启的全貌,包括shell脚本实现监控进程的相关情况。同时,我们还将为您介绍有关Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件、Linux Shell脚本检测tomcat并自动重启、Linux shell脚本监控tomcat,宕机自动重启、linux shell脚本监控进程是否存在的知识,以帮助您更好地理解这个主题。

本文目录一览:

用Shell脚本定时监控Linux下的进程状态并自动重启(shell脚本实现监控进程)

用Shell脚本定时监控Linux下的进程状态并自动重启(shell脚本实现监控进程)

以MysqL为例,先上shell脚本,如下:

#!/bin/bash

ps -ef | grep MysqLd | grep -v grep
if [ $? -ne 0 ]
then
echo "start process......"
/etc/rc.d/init.d/MysqLd start
else
echo "runing......"
fi

保存脚本,手动运行一下,确保没有错误。

执行crontab -e,来进入定时设置:

crontab -e

* 8,18 * * * /test/test.sh
这里设置每天的上午8点到下午6点之间每分钟执行一次脚本

/test/test.sh 是shell脚本的绝对路径

设置好后重启crontab服务,命令如下:

service crond restart
设置完成!

查看邮件了解脚本定时执行的情况:

mail
转载请注明出处:http://blog.csdn.net/xiezuoyong/article/details/73776313

Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件

Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件

配置文件如下

##########BACKUP MYSQL CONFIG#######
#database name
db_name=test

db_user=root
db_pass=123456

#####backup day config	begin #####
day_backupdir=/home/backup/db/day
day_backup_fix=day
day_interval=1
#####backup day config	end #######

#####backup week config	begin #####
week_backupdir=/home/backup/db/week
week_backup_fix=week
week_interval=2
#####backup week config	end #######

#####backup month config begin #####
month_backupdir=/home/backup/db/month
month_backup_fix=month
month_interval=3
#####backup month config end #######

名称为: db_config

shell脚本如下:

#!/bin/bash
# Name:bak_ftp_day.sh
# This is a ShellScript For Auto File Backup and Delete old Backup
#
#DIR变量为当前shell脚本的目录
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#使用source命令导入平级目录下的配置文件,引入以后就可以直接用配置中的变量名来获取文件中的值了
source $DIR"/"db_config
time=_` date +%Y_%m_%d_%H_%M_%S `_
echo "------bakup---<<<--`date +%Y-%m-%d-%H-%M-%S`----begin--->>>---";
echo $day_backupdir/$db_name$time$day_backup_fix.sql.gz"---is --begin---";
mysqldump -u $db_user -p$db_pass $db_name | gzip > $day_backupdir/$db_name$time$day_backup_fix.sql.gz
echo $day_backupdir/$db_name$time$day_backup_fix.sql.gz"---is --finsh---";
find $day_backupdir -name $db_name"*.sql.gz" -type f -mmin +$day_interval -exec rm -rf {} \; > /dev/null 2>&1
echo "------bakup----<<<---`date +%Y-%m-%d-%H-%M-%S`----finsh--->>>---";
echo "";



Linux Shell脚本检测tomcat并自动重启

Linux Shell脚本检测tomcat并自动重启

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

#!/bin/bash
while [ true ]
do
        url="http://www.oschina.net/";
        httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk 'NR==1{print $2}'`;
        if [ $httpOK == "200" ];then
                tomcat6=`ps -ef | grep tomcat | awk 'NR==1{print $1" "$2;}'`;
                user=`echo $tomcat6 | awk 'NR==1{print $1}'`;
                pid=`echo $tomcat6 | awk 'NR==1{print $2}'`;
                if [ $user != "tomcat" ]; then
                        service tomcat6 start;
                else
                        kill -9 $pid;sleep 5s;service tomcat6 start;service tomcat6 start;service tomcat6 status;
                fi;
        fi;
        sleep 5m;
done;

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

Linux shell脚本监控tomcat,宕机自动重启

Linux shell脚本监控tomcat,宕机自动重启

1.shell脚本编写

#!/bin/sh  
  
TomcatID=$(ps -ef|grep tomcat|grep java|grep -v "grep"|awk ''{print $2}'')  
  
StartTomcat=/usr/local/apache-tomcat-7.0.78/bin/startup.sh  
TomcatCache=/usr/local/apache-tomcat-7.0.78/work  
  
WebUrl=http://123.18.25.111:8080/ 
  
GetPageInfo=/dev/null  
TomcatMonitorLog=/usr/local/shell/TomcatMonitor.log  
  
Monitor()  
{  
  echo "[info]start monitor tomcat...[$(date +''%F %H:%M:%S'')]"  
  if [[ $TomcatID ]];then   
    echo "[info]current tomcat pid ID is:$TomcatID,go on check page..."  
    TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})  
    if [ $TomcatServiceCode -eq 200 ];then  
        echo "[info]tomcat run successful,and test page is normal......"  
    else  
        echo "[error]tomcat get error"  
        echo "[error]restart tomcat"  
        kill -9 $TomcatID    
        sleep 3  
        rm -rf $TomcatCache 
        $StartTomcat  
    fi  
  else  
    echo "[error]tomcat process in not exist! tomcat auto restart..."  
    echo "[info]$StartTomcat,please in wait......"  
    rm -rf $TomcatCache  
    $StartTomcat  
  fi  
  echo "------------------------------"  
}  
Monitor>>$TomcatMonitorLog 

脚本中StartTomcat,TomcatID,根据自己tomcat位置及tomcat名自定义 ,WebUrl可以是一个比较小的页面,也可以是服务器的资源图片

2.window上编辑后的sh脚本在linux执行报错 原因:window上保存文件,换行是\r\n ,Linux上\n 解决方案 : 在linux 上用vim编辑器 打开sh脚本, 输入:set ff = unix 在输入 :wq 保存并退出

3.Linux 定时器使用
crontab -e 编辑定时器 详细定时器格式 可自行百度查看 crontab -l 可查看当前执行的定时任务 */1 * * * * /usr/local/shell/monitor.sh

linux shell脚本监控进程是否存在

linux shell脚本监控进程是否存在

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:
    
#!/bin/sh
ps -fe|grep processString |grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
else
echo "runing....."
fi

#####
processString 表示进程特征字符串,能够查询到唯一进程的特征字符串
0表示存在的
$? -ne 0 不存在,$? -eq 0 存在

定时执行:

命令行输入:crontab -e
0 04,12,21 * * * /bin/bash /home/mysh/monitorprocess.sh
每天晚上4点,中午12点,晚上21点检测

* 04,12 * * * 这个是指4点和12点中每分钟执行一次
0 4,12 * * * 4点12点 第0分钟执行一次

m:分钟,0-59
h:小时,0-23
dom:日期,1-31
mon:月份,1-12
dow:星期,0-6,0为星期天
command:命令

第一个表示分钟,所以第一个你就随便写个,表示第几分钟执行的意思

你要做的就是限制第二个参数,小时
1 */3 * * * php /path/to/your/cron.php       
每隔3小时的第一分钟执行一次任务

这里的每怎么理解?*/1和*无区别,所以可以省略。这里可以想想,*/3表示能被3整除的时间就好理解了。

每五分钟执行  */5 * * * *

每小时执行     0 * * * *

每天执行        0 0 * * *

每周执行        0 0 * * 0

每月执行        0 0 1 * *

每年执行        0 0 1 1 *

 

扩展相关知识:

shell的if else 语法以及大于,小于等逻辑表达式:

if ....; then

  ....

elif ....; then

  ....

else

  ....

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…   通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等          -r file     用户可读为真
  -w file     用户可写为真
  -x file     用户可执行为真
  -f file     文件为正规文件为真
  -d file     文件为目录为真
  -c file     文件为字符特殊文件为真
  -b file     文件为块特殊文件为真
  -s file     文件大小非0时为真
  -t file     当文件描述符(默认为1)指定的设备为终端时为真
######################################################### 含条件选择的shell脚本
    对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,包括比较运算、判断文件是否存在等。基本的if条件命令选项有: - eq —比较两个参数是否相等(例如,if [ 2 –eq 5 ])
-ne —比较两个参数是否不相等
-lt —参数1是否小于参数2
-le —参数1是否小于等于参数2
-gt —参数1是否大于参数2
-ge —参数1是否大于等于参数2
-f — 检查某文件是否存在(例如,if [ -f "filename" ])
-d — 检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。

 

判断文件是否存在
    
#!/bin/sh
today=`date -d yesterday +%y%m%d`
file="apache_$today.tar.gz"
cd /home/chenshuo/shell
if [ -f "$file" ];then
echo "OK"
else
echo "error $file" >error.log
mail -s "fail backup from test" chenshuo@soufun.com <error.log
fi

shell基本命令
(1)ps aux    显示系统全部进程,一行一个
(2)grep “abc” 从标准输入读取字符流,输出包含字符串“abc”的行
(3)grep -v "acb"   从标准输入读取字符流,输出不包含字符串“abc”的行
(4)wc -l        从标准输入读取字符流,输出行数

例如需要检测进程httpd是否存在,操作流程如下:
(1)读取系统所有进程
(2)判断包含指定进程名字的信息是否存在
通过管道连接,命令如下:

ps axu      |    grep "httpd"           |      grep -v "grep"    |      wc -l
所有进程-->获取包含“httpd”的行-->删除grep进程信息-->输出最后的行数

通过判断命令的执行结果是否为 0 ,可以知道进程是否存在。

脚本如下:
    
#!/bin/sh
while true;do
    count=`ps -ef|grep http|grep -v grep`
    if [ "$?" != "0" ];then
echo  ">>>>no httpd,run it"
service httpd start
else
echo ">>>>httpd is runing..."
fi
sleep 5
done
分类: linux

 

https://www.cnblogs.com/anitinaj/p/7457000.html

关于用Shell脚本定时监控Linux下的进程状态并自动重启shell脚本实现监控进程的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件、Linux Shell脚本检测tomcat并自动重启、Linux shell脚本监控tomcat,宕机自动重启、linux shell脚本监控进程是否存在的相关信息,请在本站寻找。

本文标签: