有的时候, 多线程能提高性能, 但偶尔也可能希望有且只有一个线程在运行, 例如系统维护脚本, 如果前一个脚本还没有完成, 而下一次检查时间到了, 那不小心同一个脚本可能就会被运行多次了.
最近发现 pidof 命令很适合此目的, 下面是样本脚本:
#!/bin/bash script_name=`basename $0` if [ "$(pidof -x $script_name|wc -w )" -gt 2 ]; then echo 'More than one instance is running. Exiting...' exit 1 fi echo 'Just me alone, get to work...' for i in 1 2 3 4 5; do echo $i sleep 1 done exit 0
这比之前使用一个 lock 文件的就简单多了. 唯一问题是, 脚本文件名必须是唯一的. 🙂
3 responses to “简单的 Shell Singleton 脚本”
About Me 下面的youtube链接打不开。请博主检查。另外,能否帮申请hostzil.la 空间,谢谢!
“About Me” 在哪呢?
看到了:-) 我都忘了. 这就修改. hostzil.la 我还没用过, 我看看先.