实用脚本技巧与调试方法
1. 文件锁定
在处理共享数据文件(如日志文件)时,脚本需要可靠的文件锁定机制,以防止多个脚本同时更新文件。常见的做法是使用单独的锁文件作为信号量,当锁文件存在时,表示文件正在被使用,其他脚本需等待。
1.1 传统方法的问题
传统的文件锁定方法可能会出现问题,例如以下代码:
while [ -f $lockfile ] ; do
sleep 1
done
touch $lockfile
这段代码看似可行,但在多进程环境中可能会失败。当脚本在检查锁文件不存在后,在创建锁文件之前被交换出处理器队列,而另一个脚本此时创建了自己的锁文件,就会导致多个脚本都认为自己拥有文件的独占访问权。
1.2 使用 lockfile 命令
幸运的是, procmail 邮件过滤程序的作者提供了 lockfile 命令,可以在 shell 脚本中安全可靠地使用锁文件。许多 Unix 系统(如 Linux 和 Mac OS X)已经预装了该命令,你可以通过以下命令检查:
man 1 lockfile
如果没有找到该命令,可以从 http://www.procmail.org/ 下载 procmail
超级会员免费看
订阅专栏 解锁全文
1545

被折叠的 条评论
为什么被折叠?



