使用centos5 下面是我的shell脚本。我想从多个实例中阻止它..但是如果我冷静下来它就不会起作用#9; kill -9"选项。我也怀疑它会在重启时起作用。 无论如何应用这个逻辑?哪个也可以处理kill -9或者重启或者导致手动退出脚本的任何信号?
[root @ manage aaa] #cat script.sh
#!/bin/sh
set -e
scriptname=$(basename $0)
pidfile="/var/run/${scriptname}"
# lock it
exec 200>$pidfile
flock -n 200 || exit 1
pid=$$
echo $pid 1>&200
#### SCRIPT CODE
答案 0 :(得分:1)
尝试使用flock
命令。从手册页:
(
flock -n 9 || exit 1
# ... commands executed under lock ...
) 9>/var/lock/mylockfile
答案 1 :(得分:0)
您可以使用此逻辑解决此问题。
我的剧本。
#!/bin/bash
LOCK=/var/run/redundancia.lock
LOG=/var/log/redundancia.log
#----------------------------------------------------------------
control_c () {
echo -e "\nScript stoped: `date +%d/%m/%Y%t%T`" >> $LOG
rm $LOCK &>/dev/null
exit 0
}
trap control_c INT HUP TERM
if [ ! -f $LOCK ]
then
touch $LOCK
# Your code....
else
echo "This script is running"
exit 0
fi
抱歉我的英文不好; /