我在Perl腳本中使用資源密集型程序[特別是將文件傳輸到Google Drive的rclone
]。限制在Perl腳本中執行的程序的同時實例數(大於1)
我還沒有搞清楚如何我想打電話給rclone
,因爲我需要限制的rclone
實例基於一些條件(什麼有關預防服務器超載,死機,崩潰等)的數量。我希望腳本在執行rclone
之前等待apt系統的「條件」(這可能需要很長或無限的時間)。
一些細節:
- 腳本本身基本上是通過包含由另一個程序(可能很多)的文件的文件或目錄的路徑(這個程序用Python寫的 - 這個程序叫做
<A>
供參考)。 <A>
僅向腳本返回一個值,因此對腳本或rclone
一無所知,除了它接受輸入。<A>
不能被改變(即改變<A>
我是無法理解)<A>
火災在不同的時間間隔[即有時它會連續快速多次執行腳本(創建多個實例),其他時候,它可能只觸發一次,每隔幾個小時,分鐘等]- 假設
rclone
不能直接(即再次要麼改變,超出我的肯定)。 - 如果絕對必要,可以限制腳本實例的數量,而不是
rclone
(儘管我更喜歡它只是rclone
,因爲腳本所做的處理比較輕而且不需要限制)。 - 模塊很好用。
- 我想避免使用類Unix操作系統命令等
pgrep
和ps
(除非絕對必要)。
目前,我正在使用寫得比較差的bash腳本來代替Perl腳本。在bash腳本實現了一個基本的(設計不佳)「檢查/睡眠循環」使用pgrep -wc
,sleep
,while
循環和if
語句。 (說實話,我甚至不認爲bash腳本真的有效/有助於atm。)
您可以將** GNU並行**作爲'sem -j N'調用,它只允許'N'個並行運行https://stackoverflow.com/a/46206137/2836621和https:// www.gnu.org/software/parallel/sem.html –
@Mark啊,是的,完全忘了那個有用的程序,它也是用Perl編寫的。如果命令被多次調用,並且每次都在_different_腳本中,您是否知道信號量功能是否有效?那就是---使用廁所比喻----每個腳本實例是否都有自己的「廁所空間」,其他腳本實例無法訪問,或者所有腳本實例都使用同一個「房間」? – YenForYang
是的,只要不同的程序都給出了與我鏈接的答案相同的'--id'。 –