进程锁

使用pid文件限制重复启动进程

  • 说明:
下方脚本为判断脚本是否正在运行,如正在运行就退出脚本,如未启动就可以正常使用脚本。

# 判断根据
将脚本运行时的pid号放入一个文件中,如文件存在,再进行则判断文件内容,文件不存在则可以正常运行脚本。
针对文件存在,但防止其他内容写入文件,不与实际内容相符,所以进行内容判断,判断文件内容中的pid号
否存在,不存在说明,内容为恶意写入,可以不予理会,继续执行脚本。存在则说明脚本正在被执行。

# ps 进程id(后续脚本判断命令说明)
[root@docker01 script]# ps 6450
   PID TTY      STAT   TIME COMMAND
  6450 ?        Ss     0:00 /usr/sbin/sshd -D
[root@docker01 script]# echo $?            # pid存在则返回0
0
[root@docker01 script]# ps 111             # pid不存在则返回1
   PID TTY      STAT   TIME COMMAND
[root@docker01 script]# echo $?
1

  • 脚本展示
[root@egon day10]# cat proc.sh 
#!/bin/bash
pidfile='/tmp/proc.pid'

if [ -f $pidfile ];then
    pid=`cat $pidfile`
    ps $pid &>/dev/null
    [ $? -eq 0 ] && echo "脚本正在运行..." && exit 1
fi



echo "$$" > $pidfile

echo "脚本正在运行。。。"
sleep 500
echo "脚本运行完毕。。。"

rm -rf $pidfile
posted @ 2020-09-05 10:44  元气少女郭德纲!!  阅读(164)  评论(0编辑  收藏  举报