gpt4 book ai didi

linux - 从命令列表中调用 shell 命令,直到所有命令都已完成

转载 作者:太空狗 更新时间:2023-10-29 11:18:49 25 4
gpt4 key购买 nike

我有我想调用的 shell 命令列表。最多应同时运行四个进程。

我的基本想法是将命令发送到 shell,直到有 4 个命令处于事件状态。然后脚本通过查找一个公共(public)字符串不断检查所有进程的进程计数,例如“nohup scrapy 抓取 urlMonitor”。

一旦进程计数下降到 4 以下,下一个命令就会发送到 shell,直到所有命令都完成。

有没有办法用 shell 脚本做到这一点?我想它会涉及某种无限循环、中断条件以及检查事件进程的方法。不幸的是,我不太擅长 shell 脚本,所以也许有人可以指导我走向正确的方向?

nohup scrapy crawl urlMonitor -a slice=0 &
nohup scrapy crawl urlMonitor -a slice=1 &
nohup scrapy crawl urlMonitor -a slice=2 &
nohup scrapy crawl urlMonitor -a slice=3 &
nohup scrapy crawl urlMonitor -a slice=4 &
nohup scrapy crawl urlMonitor -a slice=5 &
nohup scrapy crawl urlMonitor -a slice=6 &
nohup scrapy crawl urlMonitor -a slice=7 &
nohup scrapy crawl urlMonitor -a slice=8 &
nohup scrapy crawl urlMonitor -a slice=9 &
nohup scrapy crawl urlMonitor -a slice=10 &
nohup scrapy crawl urlMonitor -a slice=11 &
nohup scrapy crawl urlMonitor -a slice=12 &
nohup scrapy crawl urlMonitor -a slice=13 &
nohup scrapy crawl urlMonitor -a slice=14 &
nohup scrapy crawl urlMonitor -a slice=15 &
nohup scrapy crawl urlMonitor -a slice=16 &
nohup scrapy crawl urlMonitor -a slice=17 &
nohup scrapy crawl urlMonitor -a slice=18 &
nohup scrapy crawl urlMonitor -a slice=19 &
nohup scrapy crawl urlMonitor -a slice=20 &
nohup scrapy crawl urlMonitor -a slice=21 &
nohup scrapy crawl urlMonitor -a slice=22 &
nohup scrapy crawl urlMonitor -a slice=23 &
nohup scrapy crawl urlMonitor -a slice=24 &
nohup scrapy crawl urlMonitor -a slice=25 &
nohup scrapy crawl urlMonitor -a slice=26 &
nohup scrapy crawl urlMonitor -a slice=27 &
nohup scrapy crawl urlMonitor -a slice=28 &
nohup scrapy crawl urlMonitor -a slice=29 &
nohup scrapy crawl urlMonitor -a slice=30 &
nohup scrapy crawl urlMonitor -a slice=31 &
nohup scrapy crawl urlMonitor -a slice=32 &
nohup scrapy crawl urlMonitor -a slice=33 &
nohup scrapy crawl urlMonitor -a slice=34 &
nohup scrapy crawl urlMonitor -a slice=35 &
nohup scrapy crawl urlMonitor -a slice=36 &
nohup scrapy crawl urlMonitor -a slice=37 &
nohup scrapy crawl urlMonitor -a slice=38 &

最佳答案

如果你想一次连续运行 4 个,请尝试类似的方法:

max_procs=4
active_procs=0

for proc_num in {0..38}; do
nohup your_cmd_here &

# If we have more than max procs running, wait for one to finish
if ((active_procs++ >= max_procs)); then
wait -n
((active_procs--))
fi
done

# Wait for all remaining procs to finish
wait

这是 sputnick 的答案的变体,可以同时运行 max_procs。一个完成后,它会启动下一个。 wait -n 命令等待下一个进程完成,而不是等待所有进程完成。

关于linux - 从命令列表中调用 shell 命令,直到所有命令都已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com