linuxタイミングタスクcrontabファイルロックflock問題

2038 ワード

ここ数日linuxのタイミングタスクが実行されず、いろいろな原因を探していますが、最終的にはファイルロックの問題で、自分でまとめて、他のパートナーを助けたいと思っています.
crontabに慣れていない場合は、linuxタイミングタスクcrontabを参照してください.
次は私のタイミングタスクです.
*/1 * * * * flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/index.php article timing_pub >> /tmp/timing_pub.log

linux flockファイルロックを使用してタスクロックを実現するには、flockはどのように使用されますか?
構文:
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command
パラメータ:
-s,--shared:共有ロックを取得-x,--exclusive:独占ロックを取得-u,--unlock:ロックを削除する必要はありません.通常、スクリプトの実行が完了すると自動的にロック-nが破棄されます.--nonblock:ロックがすぐに取得されなければ、待機-wではなく直接失敗します.--timeout:ロックがすぐに取得されなければ、指定された時間-oを待機します.--close:コマンドを実行する前にファイルの記述記号を閉じます.コマンドがサブプロセスを生成するときにロックされないようにするための管理-c,--command:shellで個別のコマンド-hを実行し、--helpはヘルプ-Vを表示し、--version:バージョンを表示します
シナリオは単独で実行しても問題なく、タイミングタスクの書き方も問題ないのに、なぜ実行しなかったのでしょうか.プロセスを参照してください
[web@BJ-ZB-ZCBNGINX-98-21 tmp]$ ps -ef | grep '/tmp/timing_pub.lock'
web       24844  24207  0 14:01 pts/0    00:00:00 grep /tmp/timing_pub.lock
web       59942      1  0 Jun09 ?        00:00:00 flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/script.php article timing_pub
web      116389      1  0 Jun16 ?        00:00:00 flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/script.php article timing_pub
web      186384 186380  0 Jun25 ?        00:00:00 /bin/sh -c flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/script.php article timing_pub >> /tmp/timing_pub.log
web      186386 186384  0 Jun25 ?        00:00:00 flock -n /tmp/timing_pub.lock /data/server/php/bin/php /data/server/www/web/app/script/script.php article timing_pub

複数のプロセスが発見されたので、まずプロセスkill 116389などを殺してからにしよう.結局実行しないで、どういうことですか?
/tmp/timing_pub.ロックはロックされています./tmp/timing_pub.ロックのファイルを削除すればいいです.
やっと正常に戻って、一瞬気持ちがリラックスしました.
flock-nは、直ちにロックを取得しなければ、待つのではなく直接失敗する.なぜ多くのプロセスがあるのかよく分かりませんが、大神の伝言を歓迎します.