Shell脚本实现检测进程是否正在运行(合集6篇)由网友“踽踽麦是湖”投稿提供,下面是小编帮大家整理后的Shell脚本实现检测进程是否正在运行,欢迎阅读,希望大家能够喜欢。
篇1:Shell脚本实现检测进程是否正在运行
这篇文章主要介绍了Shell脚本实现检测进程是否正在运行,本文给出的代码简洁清晰,并给出了使用方法,需要的朋友可以参考下
这里简单介绍一个自己写的检测某个进程是否存在的bash小脚本,直接上代码。
代码如下:
#!/bin/bash
ps_out=`ps -ef | grep $1 | grep -v ‘grep‘ | grep -v $0`
result=$(echo $ps_out | grep “$1”)
if [[ “$result” != “” ]];then
echo “Running”
else
echo “Not Running”
fi
举例使用
比如我们启动了一个这样的进程python -m SimpleHTTPServer 8000,我们想检测这个进程是否存在,可以这样,
代码如下:
17:38:07-androidyue~/osc_git/shell_works (master)$ ./checkRunningProcess.sh ‘SimpleHTTPServer‘
Running
些许说明
该脚本会自动去除包含目标信息的grep进程。以及当前这个正在执行的脚本。
使用保存文件后,确保具有可执行属性。
篇2:linux shell实现守护进程脚本
这篇文章主要介绍了linux shell实现守护进程脚本,非常简单实用的代码,这里推荐给小伙伴,希望大家能够喜欢。
嵌入式初学者,第一次上传代码。昨天做了一个udhcpd与udhcpc的守护,目前只会用shell模仿编写,还有什么方法可以做守护呢?
#! /bin/sh#进程名字可修改PRO_NAME=udhcpcWLAN=ra0 while true ; do # 用ps获取$PRO_NAME进程数量 NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`# echo $NUM# 少于1,重启进程 if [ “${NUM}” -lt “1” ];then echo “${PRO_NAME} was killed” ${PRO_NAME} -i ${WLAN}# 大于1,杀掉所有进程,重启 elif [ “${NUM}” -gt “1” ];then echo “more than 1 ${PRO_NAME},killall ${PRO_NAME}” killall -9 $PRO_NAME ${PRO_NAME} -i ${WLAN} fi# kill僵尸进程 NUM_STAT=`ps aux | grep ${PRO_NAME} | grep T | grep -v grep | wc -l` if [ “${NUM_STAT}” -gt “0” ];then killall -9 ${PRO_NAME} ${PRO_NAME} -i ${WLAN} fidone exit 0
以上所述就是本文的全部内容了,希望能够对大家熟悉linux shell脚本有所帮助,
篇3:Shell脚本实现监视指定进程的运行状态
这篇文章主要介绍了Shell脚本实现监视指定进程的运行状态,本文直接给出脚本代码,需要的朋友可以参考下
在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率、CPU的使用率等,
现用shell脚本实现指定进程的运行状态。直接上代码。
#!/bin/shecho “`date`”echo “Start $0---------”echo “”#每十秒监视一下sec=10#取得指定进程名为mainAPP,内存的使用率,进程运行状态,进程名称eval $(ps | grep “mainApp” | grep -v grep | awk {‘printf(“memInfo=%s;myStatus=%s;pName=%s”,$3,$4,$5)‘})echo $pName $myStatus $memInfotestPrg=“”while [ -n “$pName” -a “$myStatus” != “Z” ]do echo “----------`date`---------------------” echo $pName $myStatus $memInfo sleep $sec ####You must initialize them again!!!!! pName=“” myStatus=“” memInfo=“” eval $(ps | grep “mainApp” | grep -v grep | awk {‘printf(“memInfo=%s;myStatus=%s;pName=%s”,$3,$4,$5)‘}) testPrg=`ps | grep “MyTester” | grep -v grep | awk ‘{print $0}‘` if [ -z “$testPrg” ]; then break fi ##注意一定要再次初始化为空 testPrg=“”doneecho “End $0---($pName,$myStatus,$testPrg)-------------------”if [ -z “$pName” ]; then ###发现测被测试程序异常退出后,停止测试程序 killall MyTester echo “stop TestProgram MyTester”fiecho “`date`”echo “---------------Current Status------------------”ps | grep -E “mainApp|SubApp” | grep -v grepecho “”
样实现了每10s读取一下进程的状态,然后显示出来,当发现进程存在并且状态非Z(非僵尸)时,继续监视,但是当测试程序执行完毕或是异常退出时,该脚本也会退出监视循环,退出循环后,打印出指定进程的状态,
篇4:Linux Shell脚本实现检测tomcat
这篇文章主要介绍了Linux Shell脚本实现检测tomcat的方法,推荐给小伙伴们,需要的朋友可以参考下
Linux Shell脚本检测tomcat并自动重启
后台运行命令 sh xxx.sh &
查看后台任务:jobs
召唤到前台:fg jobs编号
可以删掉while循环的代码放到crontab里面定时执行,可以将脚本直接后台运行,
#!/bin/bashwhile [ true ]do url=“www.jb51.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” ]; thenservice tomcat6 start; elsekill -9 $pid;sleep 5s;service tomcat6 start;service tomcat6 start;service tomcat6 status; fi; fi; sleep 5m;done;
以上所述就是本文的全部内容了,希望大家能够喜欢,
Linux Shell脚本实现检测tomcat
,
篇5:Shell脚本实现ftok函数
这篇文章主要介绍了Shell脚本实现ftok函数,ftok函数是操作系统底层中很有名的一个函数,本文讲在Shell中如何实现同样算法的函数,需要的朋友可以参考下
“古老的 Sys IPC 仍然有好几种有效的用途,三种 IPC 对象是共享内存,信号灯和消息。”当使用到 IPC 的这些对象时,你需要为每个对象创建一个 Key。虽然理论上来说我们在定义一个 IPC Key 的时候可以使用任意自己喜欢的 Key ,但为了避免与其他的程序产生定义重复,在 UNIX/Linux 中一般会使用 key_t ftok(const char *path, int id) 函数来生成一个比较唯一的 Key 值。然而,“每个人都讨厌 System V IPC。它比打孔纸带还慢,使用与文件系统完全无关少得可怜的名字空间,使用人类讨厌的数字给它的对象命名,并且还常常自己忘记自己的对象,你的系统管理员经常需要用 ipcs(1) 查找那些丢失了的对象并且用 ipcrm(1) 删除它们,还得求老天保佑不要在用光内存以后才发现问题。” 对于来实现进程监控/自动重启Bash Shell 脚本来说,在脚本里面硬编码进当前程序用到的 Key 值肯定不是个好办法,最好是实现相同算法的 ftok 函数。
代码如下:
#!/bin/sh
let key=0
function ftok {
pathname=$1;
proj_id=$2;
str_st_ino=`stat --format=‘%i‘ “${pathname}” 2>/dev/null`;
str_st_dev=`stat --format=‘%d‘ “${pathname}” 2>/dev/null`;
if [ “x${str_st_ino}” = “x” -o “x${str_st_dev}” = “x” ] ; then
return 1;
fi
let st_ino=${str_st_ino}
let st_dev=${str_st_dev}
# 注意这里的位操作运算符需要加转义符
let key1=${st_ino}\&16#FFFF
let key2=${st_dev}\&16#FF
let key2=${key2}\<\<16
let key3=${proj_id}\&16#FF
let key3=${key3}\<\<24
let key=${key1}\|${key2}
let key=${key}\|${key3}
}
function echohelp(){
echo “ftok generator”
echo “Usage:ftok pathname projid”
exit 5
}
if [ $# -ne 2 ] ; then
echohelp
fi
sPathName=$1
let nProjectID=$2
if [ “${sPathName:0:1}” != “/” ] ; then
sPathName=${PWD}/${sPathName}
fi
if ! test -f ${sPathName} ; then
echo “No File Found![${sPathName}]”
exit 4
fi
ftok “${sPathName}” “${nProjectID}”
echo ${key}
篇6:Shell脚本实现简单分割字符串
这篇文章主要介绍了Shell脚本实现简单分割字符串,本文讲解使用CUT命令实现以逗号、分号或其它分隔符来切割字符串,需要的朋友可以参考下
我们有这样一个字符串:
代码如下:
info=‘abcd;efgh‘
现在想获取abcd和efgh,我们可以简单地用cut工具来获取:
代码如下:
fstr=`echo $info | cut -d \; -f 1`
sstr=`echo $info | cut -d \; -f 2`
这里主要是用了cut工具的-d和-f参数:
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
关于cut工具其他参数可参考这里:cut命令
★ 后门750字作文
★ 网络入侵检测方法
★ 电路系统调试总结

【Shell脚本实现检测进程是否正在运行(合集6篇)】相关文章:
如何成功清除“熊猫烧香”病毒2022-05-20
Shell中的变量使用小结2022-07-08
linux Shell学习笔记第二天2022-10-22
脚本范文2022-04-29
FTP常用软件servu的安全权限处理WEB安全2022-12-10
基于ARM体系的嵌入式系统BSP的程序设计2022-05-04
由于Nginx漏洞导致的入侵事件WEB安全2023-08-17
SA399第四章读书笔记Windows系统2022-06-03
关于木马隐藏的一个新方法2022-05-07
Win 7常用运行命令总结2022-12-09