导语:最近看一些linux命令,会有 这样的表述 > /dev/null 2>&1,一直不明白,经过查找一些资料,了解了一些情况,简单记录下。
比如以下命令:
- god.sh > /dev/null 2>&1
- god.sh > /test.log 2>&1
- nohup god.sh > /test.log 2>&1 &
先了解几个基本符号及其含义
- > 重定向符,比如 ls -l > ./result.log 把当前目录下的所有文件列表,并输出到当前目录下的result.log中
- & 引用
- & >file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中
- nohup 不挂断地运行命令,忽略所有挂断(SIGHUP)信号。
- /dev/null 表示空设备文件
- 0 表示stdin标准输入
- 1 表示stdout标准输出
- 2 表示stderr标准错误
命令解释:
- god.sh > /dev/null 2>&1 结合上面字符的含义,就很明确了,把god.sh 执行标准输出结果输出到 空设备文件 /dev/null 中,对于2-标准错误,输出到1-标准输出中,由于加上了&引用,所以是输出到/dev/null中。
- god.sh > /test.log 2>&1 执行标准输出结果输出到 空设备文件 /test.log中,对于2-标准错误,输出到1-标准输出中,由于加上了&引用,所以是输出到/test.log中。
- nohup god.sh > /test.log 2>&1 & 如前面所述,nohup是不挂断的执行命令,也就是即使关闭了终端,依然会在后台运行。如果要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部,这样命令可以在后台持续运行到结束。