猿问
确保一次只运行一个shell脚本的快速和肮脏的方法
确保一次只运行一个shell脚本的快速和肮脏的方法
确保在给定时间只运行一个shell脚本的快速和肮脏的方法是什么?
qq_遁去的一_1
浏览 845
回答 3
3回答
当年话下
下面是一个使用锁文件在里面回音PID。如果进程在移除pidfile:LOCKFILE=/tmp/lock.txtif [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then echo "already running" exitfi# make sure the lockfile is removed when we exit and then claim ittrap "rm -f ${LOCKFILE}; exit" INT TERM EXIT echo $$ > ${LOCKFILE}# do stuffsleep 1000rm -f ${LOCKFILE}这里的诀窍是kill -0它不会传递任何信号,而只是检查具有给定PID的进程是否存在。也呼吁trap将确保锁文件即使在进程被终止时也会删除(除非kill -9).
0
0
0
收到一只叮咚
使用flock(1)若要使独占作用域锁成为ON文件描述符,请执行以下操作。这样,您甚至可以同步脚本的不同部分。#!/bin/bash( # Wait for lock on /var/lock/.myscript.exclusivelock (fd 200) for 10 seconds flock -x -w 10 200 || exit 1 # Do stuff) 200>/var/lock/.myscript.exclusivelock这确保了在(和)一次只能由一个进程运行,并且进程不会等待太久锁定。警告:这个特定的命令是util-linux..如果您运行的是Linux以外的操作系统,那么它可能可用,也可能不可用。
0
0
0
随时随地看视频
慕课网APP
相关分类
Python
我要回答