首页 > 代码库 > bash: 避免命令重复执行的简单脚本
bash: 避免命令重复执行的简单脚本
1. 根据命令生成md5做为文件名保存当前进程的pid
2. 使用exec执行命令
3. 如果再次执行, 使用ps -p检测上次pid是否有效, 如果是则exit 200.否则重复1.
hadoop@ubuntu102:~$ cat guard
#!/bin/bash
declare fpid=/tmp/$(echo -n "$@"|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 $*
hadoop@ubuntu102:~$ ./guard sleep 10 &
[1] 4070
hadoop@ubuntu102:~$ ./guard sleep 10
previous process still running...4070, sleep 10
hadoop@ubuntu102:~$ ./guard sleep 10
previous process still running...4070, sleep 1
bash: 避免命令重复执行的简单脚本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。