一段查询自身是否已在运行的脚本test.sh,有些要注意到地方
2009-09-15 16:09
309 查看
#!/bin/bash
#必须有上面一行,否则ps显示的进程是bash,而不是test.sh
isprocrunning(){
echo "check $1 is running or not"
local p=`ps -C $1 -o pid=` #如果多个同名进程在运行,则$p如:"1111 2222"
for pid in $p; do
if [ $pid -ne $$ ]; then #检查ps到的进程是否为自己,必须这样做
echo "another proc $pid is running"
return 1
else
echo "local pid is $pid"
fi
done
return 0
}
#测试一下
isprocrunning `basename $0`
if [ $? -eq 1 ]; then
echo "is running"
sleep 10
else
sleep 20
fi
/////////////////////////////////////////////////////////////////
#另一段代码,
isprocrunning(){
local user=`whoami`
echo `ps -u root -f|grep $1|grep -v grep`
local procs=`ps -u $user -f |grep $1 |grep -v grep | gawk
'{print $2}'`
for pid in $procs; do
if [ $pid -ne $$ ]; then
echo $pid
return 1;
fi
done
return 0
}
#但是使用如下方式执行时会失败,总是显示脚本在运行
#原因是系统会启动一个子shell执行``中的函数,并且ps出来的父子shell进程的命令参数完全一样!
aa=`isprocrunning script_name`
#必须有上面一行,否则ps显示的进程是bash,而不是test.sh
isprocrunning(){
echo "check $1 is running or not"
local p=`ps -C $1 -o pid=` #如果多个同名进程在运行,则$p如:"1111 2222"
for pid in $p; do
if [ $pid -ne $$ ]; then #检查ps到的进程是否为自己,必须这样做
echo "another proc $pid is running"
return 1
else
echo "local pid is $pid"
fi
done
return 0
}
#测试一下
isprocrunning `basename $0`
if [ $? -eq 1 ]; then
echo "is running"
sleep 10
else
sleep 20
fi
/////////////////////////////////////////////////////////////////
#另一段代码,
isprocrunning(){
local user=`whoami`
echo `ps -u root -f|grep $1|grep -v grep`
local procs=`ps -u $user -f |grep $1 |grep -v grep | gawk
'{print $2}'`
for pid in $procs; do
if [ $pid -ne $$ ]; then
echo $pid
return 1;
fi
done
return 0
}
#但是使用如下方式执行时会失败,总是显示脚本在运行
#原因是系统会启动一个子shell执行``中的函数,并且ps出来的父子shell进程的命令参数完全一样!
aa=`isprocrunning script_name`
相关文章推荐
- 一段评价程序平均运行时间的shell脚本&shell脚本编写注意事项
- 简单监控网站访问是否正常的shell脚本,邮件报警。网站恢复后继续运行。
- 数据库编程应注意判断查询结果是否为null
- Android中运行sh脚本提示找不到文件或路径(no such file or directories)
- 新版testFlight中开发人员如何给测试人员推送ios测试包(含使用testFlight要注意的地方)
- Shell脚本实现检测进程是否正在运行
- Linux系统中运行.sh(Shell脚本)文件
- 在写PHP脚本的时候,如何判断是否是从CLI环境运行
- 写了个iptables脚本防火墙,应该放在什么地方运行.
- 多线程判断用户是否在线(后台运行ping脚本)
- 有些时候经常要查询数组中是否包含…
- shell脚本示例,运行无限循环的shell脚本来检测拒绝列表上的用户是否登录到UNIX系统多于一次。
- Android编译过程中首先运行的是build/envsetup.sh脚本的作用是什么?
- 程序检测自身是否运行在虚拟机下
- 写一个脚本checkipadd.sh,判断所输入的参数是否为正确的IP地址,如 果是就输出"This is ip address";如果不是就输出"This is not ip address" (1
- 有些需要注意的地方
- linux source 与sh运行脚本的区别
- 涉及日期查询时需注意的地方
- IIS 7配置需要注意的地方,RTX SDK运行必须Enable 32-bit Applications为True
- sql server 查询正在运行的脚本