系统环境:
# uname -r
2.6.-.el6.x86_64
# cat /etc/redhat-release
CentOS release 6.5 (Final)
对服务器状态监控的一段脚本中使用了查询进程信息的几句代码:
server="srs"
care_pid=`pgrep -f $server`
#echo "$server pid =" $care_pid
care_ps=`ps aux | grep $server | grep -v "grep"`
#echo $care_ps
直接命令行执行脚本,输入信息如下:
srs pid =
root 1.4 0.0 ? S Jun22 : ./objs/srs -c ./conf/srs.conf
设置定时器crontab 自动执行脚本,输出信息如下::
srs pid =
root 1.4 0.0 ? S Jun22 : ./objs/srs -c ./conf/srs.conf
root 1.0 0.0 ? Ss : : /bin/sh -c /usr/local/srs/video_server_monitor.sh >> /usr/local/srs/monitor.log
root 0.0 0.0 ? S : : /bin/sh -c /usr/local/srs/video_server_monitor.sh >> /usr/local/srs/monitor.log
root 0.0 0.0 ? S : : /bin/sh -c /usr/local/srs/video_server_monitor.sh >> /usr/local/srs/monitor.log
目前尚不知道什么缘故,暂时更改脚本解决了问题。具体的原因还需要下次查询。
换个写法定时执行得到正确结果,更改如下:
server="srs"
care_pid=`pgrep -n $server`
#echo "$server pid =" $care_pid
care_ps=`ps p $care_pid u`
#echo $care_ps