多次运行进程的快速而肮脏的方法

多次运行进程的快速而肮脏的方法

我正在寻找非常简单的 bash 脚本,它允许我启动一个进程几次。对我来说最重要的是,进程终止后,所有内容都会自动清理。

预期用途:

bash multiplerun.sh 5 executable.sh parameters_to_executable

我也许可以自己写,但是需要很长时间,所以我决定询问专家;我不太擅长使用 *ix 系统。

编辑:哦,我忘了补充一点,我想并行运行它们 - 一个接一个地运行它们非常简单。

答案1

以下是可以并行启动您的程序的方法:

#!/bin/bash

count=$1
command=$2
shift 2

for ((i=0;i<count;i++)); do
  $command "$@" &
done
wait
echo done

等待指令应该防止僵尸出现。如果您的程序不需要 tty,您可以将循环替换为:

for ((i=0;i<count;i++)); do
  nohup $command "$@" </dev/null >/dev/null 2>&1 &
done

这样,进程就会从你的 shell 中分离出来。

答案2

如果您有 GNU Parallelhttp://www.gnu.org/software/parallel/安装后你可以这样做:

seq 5 | parallel -N0 executable.sh parameters_to_executable

您可以简单地通过以下方式安装 GNU Parallel:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel
chmod 755 parallel
cp parallel sem

观看 GNU Parallel 的介绍视频以了解更多信息: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

相关内容