0
我正在构建的脚本需要检查是否有更多进程(pid)正在同一进程中运行。如果过程顺利进行,我们需要杀死这个过程。Bash需要检查是否存在多个pid
下面是一个例子,由于某种原因,这个过程将运行两次。所以我们需要监控这个,需要杀死/重启单声道进程。
#!/bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
set -x # set debug
PID="/usr/local/bin/Serverd.pid"
Service="/etc/init.d/serverd" $1
#
# Functions
#
die(){
printf '%s\n' "$*" >&2
exit 1
}
log(){
logger -t HealthCheck -i $*
}
process() {
[[ $(pidof mono /dev/null 2>&1) == '' ]] && echo 0 || echo 1
}
pid() {
[[ ! -r $PID ]] && echo 0 || echo 1
}
for i in $(process); do
if [[ $i -eq '0' ]]
then
echo 'Process is Stoped!!!!!'
if [[ $(pid) -eq '1' ]]
then
echo PID still there, remove PID first
rm -rf $PID
$Service start
exit 1
else
$Service start
exit 1
fi
else
echo 'Process is Running!!!!'
exit 1
fi
done
如果我有同样的单进程的PID 2这种需求被杀害
+++ pidof mono /dev/null
++ [[ 30454 30014 == '' ]]
如何猫我做到这一点?
是的,非常感谢,这个工作! – DarkNight