注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一线天色 天宇星辰

天下武功,唯快不破

 
 
 

日志

 
 

Linux下控制台输出小结  

2012-07-01 20:45:44|  分类: 计算机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在实际的IDC运维过程中,我们经常会使用shell命令做一些操作,并且大部分都需要后台运行!这样就带来了一个问题,日志该如何输出?

[root@performance ~]# ./date.sh > date.log &

[1] 9551

[root@performance ~]#

这样可以不?

当然,这样在正常的情况下是好的,日志会输出到date.log这个文件,可是如果脚本中发生问题,就会把信息抛到控制台去!

一般我们会这么写:

[root@performance ~]# ./date.sh > date.log 2>&1 &

[1] 9818

[root@performance ~]#

或者不需要日志的 干脆这么写

[root@performance ~]# ./date.sh >/dev/null 2>&1 &

[1] 10082

[root@performance ~]#

下面我就来解释一下,这些分别代表什么

2>&1表示所有的标准输出和错误输出都将被重定向到对应参数文件中(/dev/null可认为是不输出

在这里有几个数字

0表示键盘输入

1表示标准输出

2表示错误输出.

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件指定文件

&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1

几个测试用例:

ls 2>1 不会报没有2文件的错误,但会输出一个空的文件1

ls xxx 2>1 没有xxx这个文件的错误输出到了1中;

ls xxx 2>&1 不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1 因为重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件中。

ls xxx 1>out.txt 2>error.txt 将正常日志输出到out.txt 将错误日志输出到error.txt

2>&1需要写在最后面(but why?

格式:command > file 2>&1 == command 1> file 2>&1

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

如果改成: command 2>&1 >file

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

  评论这张
 
阅读(1933)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017