在这篇文章中,我们将带领您了解用Shell脚本定时监控Linux下的进程状态并自动重启的全貌,包括shell脚本实现监控进程的相关情况。同时,我们还将为您介绍有关Linuxshell脚本中如何读取跟s
在这篇文章中,我们将带领您了解用Shell脚本定时监控Linux下的进程状态并自动重启的全貌,包括shell脚本实现监控进程的相关情况。同时,我们还将为您介绍有关Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件、Linux Shell脚本检测tomcat并自动重启、Linux shell脚本监控tomcat,宕机自动重启、linux shell脚本监控进程是否存在的知识,以帮助您更好地理解这个主题。
本文目录一览:- 用Shell脚本定时监控Linux下的进程状态并自动重启(shell脚本实现监控进程)
- Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件
- Linux Shell脚本检测tomcat并自动重启
- Linux shell脚本监控tomcat,宕机自动重启
- 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设置完成!
查看邮件了解脚本定时执行的情况:
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并自动重启
下面是小编 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,宕机自动重启
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脚本监控进程是否存在
用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脚本监控进程是否存在的相关信息,请在本站寻找。
本文标签: