LINUX 标准错误输出重定向

LINUX 标准错误输出重定向,第1张

用途:不挂断地运行命令

语法:nohup Command [ Arg … ] [ &]

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

用途:在后台运行

一般两个一起用

3.为什么呢 2>&1 要写在后面?

首先是command >file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

用strace可以看到:

这个命令中实现重定向的关键系统调用序列是:

open(file) == 3

dup2(3,1)

dup2(1,2)

这个命令中实现重定向的关键系统调用序列是:

dup2(1,2)

open(file) == 3

dup2(3,1)

注意:0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

这里的2和>之间不可以有空格,2>是一体的时候才表示错误输出。

输出即把相关对象通过输出设备(显示器等)显示出来,输出又分正确输出和错误输出

一般情况下标准输出设备为显示器,标准输入设备为键盘。

linux中用0代表标准输入,1代表标准正确输出,2代表标准错误输出。

输出重定向:正常输出是把内容输出到显示器上,而输出重定向是把内容输出到文件中

例如:ifconfig >test.log 即把ifconfig执行显示的内容写入test.log.当前页面不再显示执行结果。

注意:错误输出重定向>/>>后边没有空格

命令 >>文件 2>&1 和 命令 &>>文件 两个命令作用相同

系统有个常见用法 ls &>/dev/null 正确输出或错误输出结果都不要。(null可以理解为黑洞或垃圾站)

命令>>文件1 2>>文件2 正确日志和错误日志分开保存

例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &

将jar执行的结果写入到lb-agent.log中

在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。

这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &  《Linux就该这么学》学习更多linux知识。

直接使用输出重定向到你想要的文件即可,不过将所有的控制到信息输出到一个文本文件,只有两个办法:

①:修改所有程序的输出路径:printf函数 echo.....几乎是不可能完成的任务

②:修改linux的标准输出路径:

句柄 句柄的数字代号 描述

STDIN 0 键盘输入

STDOUT1 输出到命令提示符窗口

STDERR2 错误输出到命令提示符窗口

将标准输出 标准输出的默认设置更改为你要保存的文件,这样就会控制台的信息就会输出到你指定的文件里面


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9026075.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存