• 进程锁


    使用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
    
  • 相关阅读:
    SDNU 1219.sign up problem
    SDNU 1232.A*B Problem(高精度)
    Go操作MySQL
    BootStrap jQuery 在线cdn
    Go语言标准库之http/template
    Go语言基础之net/http
    Go语言基础之网络编程
    Go语言基础之单元测试
    Go语言基础之rand(随机数)包
    Go语言基础之并发
  • 原文地址:https://www.cnblogs.com/tcy1/p/13617421.html
Copyright © 2020-2023  润新知