什么1>/dev/null 2>&1&pid1 = $!意思?

Ang*_*ina 7 parallel-processing shell

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

  ./script1.sh param1 1>/dev/null 2>&1 &
  pid1=$!
  ./script1.sh param2 1>/dev/null 2>&1 &
  pid2=$!
Run Code Online (Sandbox Code Playgroud)

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

   1>/dev/null 2>&1
   pid1=$!
Run Code Online (Sandbox Code Playgroud)

som*_*ome 12

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

1>/dev/null
Run Code Online (Sandbox Code Playgroud)

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

2>&1
Run Code Online (Sandbox Code Playgroud)

将最近的后台命令的PID分配给变量pid1(bash手册页中的更多内容,特殊参数)

pid1=$!
Run Code Online (Sandbox Code Playgroud)

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

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

通常会向程序打开三个文件:标准输入,标准输出和标准错误.您可以在维基百科上阅读有关标准流重定向的更多信息.

脚本的以下部分:

./script1.sh param1 1>/dev/null 2>&1 &
pid1=$!
Run Code Online (Sandbox Code Playgroud)

翻译成普通英语:

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

  • 谢谢@some.很好的解释 (2认同)