bash: 避免命令重复执行的简单脚本

Posted zolo®

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash: 避免命令重复执行的简单脚本相关的知识,希望对你有一定的参考价值。

1. 根据命令生成md5做为文件名保存当前进程的pid
2. 使用exec执行命令
3. 如果再次执行, 使用ps -p检测上次pid是否有效, 如果是则exit 200.否则重复1.
[email protected]:~$ cat guard
#!/bin/bash
declare fpid=/tmp/$(echo -n "[email protected]"|md5sum|awk ‘{print $1}‘);
if [[ -f ${fpid} ]];then
read pid < ${fpid} && ps -p ${pid:-0} > /dev/null && if [[ $? -eq 0 ]];then echo "previous process still running...${pid}, $*" && exit 200; fi
fi
echo $$ > ${fpid}
exec $*
[email protected]:~$ ./guard sleep 10 &
[1] 4070
[email protected]:~$ ./guard sleep 10
previous process still running...4070, sleep 10
[email protected]:~$ ./guard sleep 10
previous process still running...4070, sleep 1

以上是关于bash: 避免命令重复执行的简单脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何自动终止脚本内命令的无限执行?

使用“bash 脚本”将命令发送到“应用程序的外壳”[重复]

bash脚本编程

确定执行 BASH 脚本的路径 [重复]

bash脚本之函数简单介绍应用及函数的简单递归调用

以root身份在脚本中间运行命令[重复]