假设我们有一个 txt 文件file.txt
,每一行都是一个 python 脚本,例如
python a1.py python a2.py python a3.py
下面的命令到底在做什么?
cat file.txt | xargs -n 1 -P $NUM_CPUS bash -c
答案1
说明:
cat file.txt | xargs -n 1 -P $NUM_CPUS bash -c
cat file.txt
file.txt
- 连接传递到管道中下一个程序的文件内容xargs -n 1
- 一次接受来自 STDIN(前一个命令输出)的 1 个参数-P $NUM_CPUS
$NUM_CPUS
-一次运行多个进程(每个进程调用一个输入行)bash -c
- 使用当前参数执行的命令
答案2
假设$NUM_CPUS
包含一个整数,那么该命令最多将启动多个并行非交互式bash
shell(就是这样-P
做的)。每个 shell 都会运行输入文件中的一行(由于-n 1
)。
cat
不需要该命令:
xargs -n 1 -P "$NUM_CPUS" bash -c <file.txt