我正在学习如何并行运行多个进程
./script1.sh param1 1>/dev/null 2>&1 &
pid1=$!
./script1.sh param2 1>/dev/null 2>&1 &
pid2=$!
我不确定这里发生了什么:
1>/dev/null 2>&1
pid1=$!
答案 0 :(得分:10)
将标准输出(文件句柄1)重定向到/ dev / null
1>/dev/null
将标准错误(文件句柄2)重定向到标准输出
2>&1
将最新背景命令的PID分配给变量pid1(bash手册页中的更多内容,special parameters)
pid1=$!
结果是标准输出和标准错误都被重定向到/ dev / null
可在此处找到更多示例:http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html
通常会向程序打开三个文件:标准输入,标准输出和标准错误。您可以在维基百科上阅读有关standard streams或redirection的更多信息。
脚本的以下部分:
./script1.sh param1 1>/dev/null 2>&1 &
pid1=$!
翻译成普通英语:
从当前目录./
运行带有参数script1.sh
的程序param1
,并将标准输出重定向到 / dev / null { {1}}并将标准错误重定向到标准输出 1>/dev/null
,让程序在后台运行2>&1
。将刚刚在后台启动的程序的PID分配给pid1 &
。