当前位置: 技术问答>linux和unix
在shell中如何判断一个进程是否存在?
来源: 互联网 发布时间:2015-06-04
本文导语: 我写了下面的一个小shell 目的是判断一个进程是否存在 如存在则打印出pid 如不存在则显示 there isn't this process 但是在实际执行中,就算系统中没有输入的进程,它也显示进程号。 请问如何解决? ./test.sh sshd ====...
我写了下面的一个小shell
目的是判断一个进程是否存在
如存在则打印出pid
如不存在则显示 there isn't this process
但是在实际执行中,就算系统中没有输入的进程,它也显示进程号。
请问如何解决?
./test.sh sshd
====================
#!/bin/bash
pid=`ps aux | grep $1 | sed -n '1P' | awk '{print $2}' `
#if [ -z $pid ] ;then
echo "there isn't this process!"
else
echo $pid
fi
目的是判断一个进程是否存在
如存在则打印出pid
如不存在则显示 there isn't this process
但是在实际执行中,就算系统中没有输入的进程,它也显示进程号。
请问如何解决?
./test.sh sshd
====================
#!/bin/bash
pid=`ps aux | grep $1 | sed -n '1P' | awk '{print $2}' `
#if [ -z $pid ] ;then
echo "there isn't this process!"
else
echo $pid
fi
|
文提出在你的ps aux | grep $1
因该是:
pid=`ps aux | grep -v grep|grep -v "test.sh"|grep $1| sed -n '1P' | awk '{print $2}' ` ^^^^^^^^^^^^^^^^^^^^^^^^^^
因该是:
pid=`ps aux | grep -v grep|grep -v "test.sh"|grep $1| sed -n '1P' | awk '{print $2}' ` ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
因为grep 和你的程序里必定会出现$1