我在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'。 –