[英]What's the best way to make sure only one instance of a Perl program is running?
有幾種方法可以做到這一點,但我不確定哪一種是最好的。
這是我能想到的:
可能有更多方法可以做到這一點。 您認為最好的方法是什么?
有很多方法可以做到這一點。 PID文件是傳統的方法。 您也可以對文件進行鎖定,例如程序本身。 這段小代碼可以解決這個問題:
use Fcntl ':flock';
open my $self, '<', $0 or die "Couldn't open self: $!";
flock $self, LOCK_EX | LOCK_NB or die "This script is already running";
與PID文件相比的一個優點是文件在程序退出時自動解鎖。 以可靠的方式實施起來要容易得多。
做舊的PID文件技巧。
HTH
干杯,
搶
您列出的所有選項都很好。 但有一點需要注意的是,在極少數情況下,你最終可能會遇到一個運行很長時間的過程(即等待某些東西)。 您可能需要考慮關注其他正在運行的實例運行了多長時間,如果超過一定時間(例如某天),可能會發送警報。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.