我正在寻找非常简单的 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