当crontab 里跑一个运行时间不确定的任务,如有时需要30秒完成,有时需要5分钟完成,而在定时任务里我是设定每1 分钟运行一次。这样就容易引起上次任务还没跑完又开始跑了。这时可以用进程锁来运行。
常用选项:
-u --unlock :移除一个锁,通常是不需要的,脚本执行完后会自动丢弃锁。
-n --nonblock :如果没有立即获得锁直接失败而不是等待。
-w --timeout :如果没有立即获得锁就等待指定的时间。
-o --close :在运行命令前关闭文件的描述符。用于如果命令产生子进程时会不受锁的管控。
-c --command :在shell中运行一个单独的命令。
当出现意外情况退出时,需要手动删除进程锁,只需删掉对应的锁文件 .lock 即可。