猿问

确保一次只运行一个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).

收到一只叮咚

使用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以外的操作系统,那么它可能可用,也可能不可用。
随时随地看视频慕课网APP

相关分类

Python
我要回答