11

我正在学习如何并行运行多个进程

  ./script1.sh param1 1>/dev/null 2>&1 &
  pid1=$!
  ./script1.sh param2 1>/dev/null 2>&1 &
  pid2=$!

我不确定这里发生了什么:

   1>/dev/null 2>&1
   pid1=$!
4

1 回答 1

19

将标准输出(文件句柄 1)重定向到 /dev/null

1>/dev/null

将标准错误(文件句柄 2)重定向到标准输出

2>&1

将最近的后台命令的 PID 分配给变量 pid1(更多信息见 bash 手册页,特殊参数

pid1=$!

结果是标准输出和标准错误都被重定向到/dev/null

更多示例可以在这里找到:http: //tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

一个程序通常会打开三个文件:标准输入、标准输出和标准错误。您可以在 wikipedia上阅读有关标准流重定向的更多信息。

脚本的以下部分:

./script1.sh param1 1>/dev/null 2>&1 &
pid1=$!

翻译成简单的英语:

从当前目录./运行script1.sh带参数的程序并将标准输出param1重定向到/dev/null并将标准错误重定向到标准输出并让程序在后台运行。将刚刚在后台启动的程序的 PID 分配给 pid1 。 1>/dev/null 2>&1&pid1=$!

于 2013-11-13T20:52:23.460 回答