zoukankan      html  css  js  c++  java
  • 进程锁

    使用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
    
  • 相关阅读:
    DC(四)——笔试题
    验证&system verilog笔试题
    Centos和redhat6.0后关于虚拟机克隆后无法启用网卡问题
    搭建 CentOS 6 服务器(1)
    搭建 CentOS 6 服务器(16)
    搭建 CentOS 6 服务器(14)
    搭建 CentOS 6 服务器(15)
    搭建 CentOS 6 服务器
    搭建 CentOS 6 服务器(2)
    搭建 CentOS 6 服务器(3)
  • 原文地址:https://www.cnblogs.com/tcy1/p/13617421.html
Copyright © 2011-2022 走看看