1. 苏葳的备忘录首页
  2. 编程

Unix(AIX)下停进程的一般Shell程序

shell kill 进程UNIX下停进程,如无特殊需求,一般就是直接杀掉,具体流程就是查找出指定的进程id,然后kill掉就行了。所以停进程的操作基本相似,可以有一个模板程序稍稍改动就能完成。下面程序完成杀掉名为program的进程的功能,多个同名进程也可一起杀掉。略作改动的话还可以用来清理共享内存,消息队列和信号量等。

sh_close()
{
 if [ $# -ne 1 ]; then
  echo "传递参数个数错误! 请检查!"
  return 1
 fi
 flag=$1
 while read a1
 do
  if [ $flag = "p" ]; then
   kill -9 $a1
  elif [ $flag = "q" ]; then
   ipcrm -q $a1
  elif [ $flag = "m" ]; then
   ipcrm -m $a1
  elif [ $flag = "s" ]; then
   ipcrm -s $a1
  else
   echo "传递参数类型错误! 请检查!"
   return 1
  fi
 done < $CLOSEFNAME
 return 0
}
# 设置中间文件
CLOSEFNAME=stop.log
# 关闭进程
>$CLOSEFNAME
#查找进程,排除grep本身,排除可能的tail或vi等对程序的日志操作,用awk提取ps显示的第二列进程号。
ps -fu$LOGNAME | grep program | grep -v grep | grep -v program.log | awk '{print $2}' >>$CLOSEFNAME
sh_close p
if [ $? -ne "0" ]; then
 exit 1
fi
echo "关闭进程       成功!"
# 清除中间文件
rm -f $CLOSEFNAME

 

 

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/307.html

发表评论

邮箱地址不会被公开。 必填项已用*标注