精华内容
下载资源
问答
  • linux重定向

    2018-07-27 07:57:02
    Linux里,任何东西都是一个文件。 eg. ls 是把结果输出到一个特殊的文件称为standard output (stdout),错误结果到standard error (stderr)。标准输入和标准错误都链接到屏幕,不保存到磁盘。 > ...

    在Linux里,任何东西都是一个文件。

    eg. ls 是把结果输出到一个特殊的文件称为standard output (stdout),错误结果到standard error (stderr)。标准输入和标准错误都链接到屏幕,不保存到磁盘。
    > 保存输出结果到文件。
    若输出结果不存在,则> 导出空文件。 程序不把它 的错误信息输送到标准输出。 而,像许多写得不错的 程序, 把错误信息送到标准错 误。因为我们只是重定向了标准输出,而没有重定向标准错误,所以错误信息被送到屏幕。
    [me@linuxbox ~]$ >output.txt可以输出或创建一个空文件。

    若重定向结果追加到文件内容之后
    [me@linuxbox ~]$ >> output.txt

    重定向标准错误缺乏专用的重定向操作符,用2:
    [me@linuxbox ~]$ ls -l /bin/usr 2> error.txt

    重定向标准输入和错误到一个文件
    [me@linuxbox ~]$ ls -l /bin/usr > ls-output.txt 2>&1
    该过程完成2个重定向,首先是标准输出到ls-output.txt,然后是重定向文件描述符2(标准错误)到文件描述符1(标准输出),使用方法2>&1。

    处理不需要的输出
    [me@linuxbox ~]$ls -l /bin/usr 2> /dev/null
    /dev/null 是系统设备,叫位储存桶,可接受输入,并且对输入不做任何处理。

    cat 连接文件
    [me@linuxbox ~]$ cat > temp.txt
    asdfa
    wfew
    fwe

    Ctrl-d结束文本输入。

    [me@linuxbox ~]$ cat temp.txt
    asdfa
    wfew
    fwe
    管道线

    从标准输入读数据,把数据输送到标准输出。
    command1 | command2

    head/ tail

    tail -f 允许实时浏览文件。tail会继续监测这个文件,有新内容添加后,会立即出现在屏幕上。直到Ctrl-C结束。

    [me@linuxbox ~]$ tail -f /var/log/messages
    tee 从Stdin读取数据,并同时输出到Stdout和文件

    tee从标准输入读数据,同时赋值数据到标准输出(允许数据继续随着管道线流动)和一个或多个文件。

    [me@linuxbox ~]$ ls /usr/bin | tee ls.txt|grep zip
    

    参考《the linux learning command》

    展开全文
  • linux重定向输出

    2020-11-18 18:09:07
    >表示将标准输出重定向文件,如果是旧文件则覆盖 >>表示将标准输出重定向追加到文件 1>...在类Unix系统中,/dev/null,或称设备,是一个特殊设备,它丢弃一切写入其中的(被称为bit bu.
    1. >表示将标准输出重定向文件,如果是旧文件则覆盖
    2. >>表示将标准输出重定向追加到文件
    3. 1> 标准输出重定向
    4. 2> 标准错误重定向
    5. 2&>1 标准错误追加标准输出
    6. 2&>1 | tee file同时输出到屏幕和文件中
    7. > file 2> file标准输出和标准错误输出在文件中
    8. 2&>1 /dev/null不显示任何信息
      在类Unix系统中,/dev/null,或称空设备,是一个特殊设备,它丢弃一切写入其中的(被称为bit bucket或者黑洞)
      7和8的区别在于7占用两个管道,而后者只占用一个管道,因此后者效率更高
    9. &>/dev/null& 等价于 >/dev/null 2>&1
    10. 其他用法
      n<&-:表示将 n 号输入关闭
      <&-:表示关闭标准输入(键盘)
      n>&-:表示将 n 号输出关闭
      >&-:表示将标准输出关闭
    11. 读写/dev/null
      /dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。
    • 可以用来测试命令而不想由任何输出
    • 可以用来清楚文件中内容而不删除文件
      参考1
    展开全文
  • Linux重定向(转)

    2016-09-16 00:52:00
    的形式来定义输出/dev/null 代表设备文件> 代表重定向到哪里,例如:echo "123" > /home/123.txt1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"2 表示stderr标准...

    shell中可能经常能看到:>/dev/null 2>&1 

    命令的结果可以通过%>的形式来定义输出 

    /dev/null 代表空设备文件 
    > 代表重定向到哪里,例如:echo "123" > /home/123.txt 
    1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 
    2 表示stderr标准错误 
    & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 

    那么本文标题的语句: 
    1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 
    2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 
    A. 1> /dev/null 表示将命令的标准输出重定向到 /dev/null2>/dev/null 表示将命令的错误输出重定向到 /dev/null1 - denotes stdout ( standard output )2 - denotes stderr  ( standard error )/dev/null就相当与windows里的回收站,只是进去了不能再出来了。>/dev/null 就是将标准输出和标准出错的信息屏蔽不显示 
    B.>/dev/null 2>&1   also can write  as  1>/dev/null 2>&1     - stdout redirect to /dev/null (no stdout) ,and redirect stderr to stdout  (stderr gone as well) . end up it turns both stderr and stdout off 
    C.a little practice may help to undstand above .  #ls /usr  /nothing #ls /usr  /nothing  2>/dev/null #ls /usr  /nothing  >/dev/null 2>&1 

    我们经常会在UNIX系统下的一些脚本中看到类似”2>&1″这样的用法,例如“/path/to/prog 2>&1 > /dev/null &”,那么它的具体含义是什么呢? 
      UNIX有几种输入输出流,它们分别与几个数字有如下的对应关系:0-标准输入流(stdin),1-标准输出流(stdout),2-标准错误流 (stderr)。”2>&1″的意思就是将stderr重定向至stdout,并一起在屏幕上显示出来。如果不加数字,那么默认的重定向动作是针对stdout(1)的,比如”ls -l > result”就等价于”ls -l 1 > result”。这样便于我们更普遍性的理解重定向过程。 
      下面举例说明: 
    #cat std.sh 
    #!/bin/sh 
    echo “stdout” 
    echo “stderr” >&2 

    #/bin/sh std.sh 2>&1 > /dev/null 
    stderr 

    #/bin/sh std.sh > /dev/null 2>&1 

      第一条命令的输出结果是stderr,因为stdout和stderr合并后一同重定向到/dev/null,但stderr并未被清除,因此仍将在屏幕中显示出来;第二条命令无输出,因为当stdout重定向至/dev/null后,stderr又重定向到了stdout,这样stderr也被输出到了/dev/null。 

    今天在做例行工作的时候,发现机器上的sendmail进程奇多无比,并且机器IO好像也很慢。后来发现在/var/spool/clientmqueue目录下ls几乎要死人 – 最少有10万个文件 

    ps|grep sendmail看这些sendmail进程里面都有/var/spool/clientmqueue 

    cd过去随便打开了个文件看了下,发现是我crontab里面执行的程序的exception,估计是我的crontab每次执行,linux都试图发邮件给crontab的用户但是又没有配sendmail,所以东西就都被扔到/var/spool/clientmqueue下面了。然后我才明白为啥以前别人写的crontab要加上> /dev/null 2>&1,原来这样就不会每次执行crontab都把结果或者excetion发邮件了。 

    把这10万个文件删掉后,一切恢复正常 

    问题现象: 
    linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件。 
    原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件; 
    解决办法: 1、 将crontab里面的命令后面加上> /dev/null 2>&1 
    2、知识点: 
    2>:重定向错误。 
    2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到/dev/null,即抛弃,同时,把产生的错误也抛弃。 
    3、具体代码: 
    (1)、# crontab -u cvsroot -l 
    01 01 * * * /opt/bak/backup 
    01 02 * * * /opt/bak/backup2 
    (2)、# vi /opt/bak/backup 
    #!/bin/sh 
    cd / 
    getfacl -R repository > /opt/bak/backup.acl 
    (3)、# vi /opt/bak/backup2 
    #!/bin/sh 
    week=`date +%w` 
    tar zcvfp /opt/bak/cvs$week/cvs.tar.gz /repository >/dev/null 2>&1 
    4、清除/var/spool/clientmqueue/目录下的文件: 
    # cd /var/spool/clientmqueue 
    # rm -rf * 
    如果文件太多,占用空间太大,用上面命令删除慢的话,就执行下面的命令: 
    # cd /var/spool/clientmqueue 
    # ls | xargs rm -f 
    在一個風和日麗的夜晚,我坐在家裡看著電視,後來手機一陣響起,結果是楊老師發現一台主機發生異常,伺服器的 /var/spool/mqueue 目錄被塞了一堆還沒有寄出的信件,而當時沒有把 /var/spool 另外分割出來,所以也影響到了系統 root (/) 區塊,只剩六百多 MB 可以使用,這時一想會有幾個可能. 

    這台 server 有幫學校的 PC 做寄送信件,所以可能是廣告信在寄出. 

    使用這台 server 做 mail 寄信的機器,可能是中毒,於是就不斷的送信出去. 
    一開始只有想到這兩個原因,但是可要把被吞掉的空間給吐出來,所以就打算把所有的 mail queue 都先砍了,當然,要先停掉 mail service. 
    在砍這些正在排隊的信件時,發現一件事,就是裡面的檔案太多了,使用 ls 命令就變得超級遲頓,沒有反應,使用 mailq 來看看到底是那些信被 queue 住也沒辦法,後來想想算了,只好全剖砍了,不要再玩下去,之後,很順手的下了 rm -rf * 這下子呢,發生了一件很離奇的事,居然檔案太多無法刪除,第一次聽到 rm 在 complain (我是聽到的,楊老師是實作者,所以他有看到 ^^). 
    那個 error 是: bash: /bin/rm: Argument list too long 
    雖然無法刪除,但是楊兄並不放棄,到主機面前,開啟了 X Window 之後使用那 Linuxer 最常使用的鸚鵡螺 (nautilus) 開啟到 /var/spool/mqueue. 喔 ~ 可以使用 X Window 來刪呢 ! 後來想說即然 X Window 有這麼大的本事,那麼就用它來刪了其它的 queue files 就好啦,於是掛上電話,放楊兄一個人努力的在機房刪著 ... 
    當然我也沒有閒著,電視劇剛好演完,於是開啟我的工作伙伴,再度當網路潛水艇 ... 游著游著,突然想到,何不使用 find 來刪除看看 ? 於是刪回歷史文件,發現一個命令就是 find ./ | xargs rm -rf 千萬別小看這小小的指令,因為在我看完之後不久,楊兄打進來,說已經刪到手軟,這時也是晚上十點了,於是我就推薦了這個這道指令,嗯,很好,全都刪了,還頗快的 ... 
    喔,還沒說為什麼會刪到手軟,是因為 nautilus 在 Load 目錄時,是分批的,不是一次全部讀,所以一次大約是幾千封在讀,刪了之後,沒想到又冒出了還有幾千封 ... 真是嚇死人,後來推論應該是分批的關係. 
    在下了 find ./ | xargs rm -rf 之後,還在訝異快速之餘,就發現時間不多了,學校也要關門,所以就先 say bye bye,在現場苦命的楊兄也回家休息了. 
    分析: 
    rm 有最大一次刪除的數量,所以當一個目錄裡有太多的檔案或目錄時,就會出現錯誤,小弟試過應該是在二萬以下,而使用 find ./ | xargs rm -rf 的目的是先使用 find 列出檔案,再導向到 xargs,xargs 再喂給 rm,在這裡,xargs 會分批依照 rm 的最大數量餵給 rm,然後就可以順利刪除檔案了 
    。而真正的原因,有可能是 rm 的版本或是檔案系統的問題,我也不再繼續追就,反正能辦好事就好 
    下面提供當時小弟測試的一個小小 shell script 
    下載: 
    mk-file.sh 
    (這個 shell script 會有目錄下產生 20000 個檔案。) 
    接下來來做個小小測試: 
    root # mkfile.sh 
    root # 
    會產生 20000 個小檔案,名稱為 test-file-{1~19999} 
    直接使用 rm 去刪除: 
    root # rm -rf test-file-* 
    -bash: /bin/rm: Argument list too long (會回應引數過長的訊息) 
    改搭配 find 來刪除 
    root # find ./ -iname 'test-file-*' | xargs rm -rf 
    root # ls 
    mk-file.sh 
    root # 
    這樣就順利被刪除了。 

    --------------------------------- 
    #tool_action 
    45 4 * * * /bin/sh /data/stat/crontab/exec_tool_action_analysis_db.sh >> /data/stat/logs/exec_tool_action_analysis_db.sh.log > /dev/null 2>&1 

    45 5 * * * /bin/sh /data/stat/crontab/exec_tool_action_analysis_user.sh >> /data/stat/logs/exec_tool_action_analysis_user.sh.log > /dev/null 2>&1 

    否则在/var/spool/clientmqueue 下会产生以下文件: 
    -rw-rw---- 1 smmsp   smmsp  975 Jan 17 10:50 qfq0H2o4ei031197 

    转载于:https://www.cnblogs.com/fengxuanyuan/p/5875768.html

    展开全文
  • linux重定向:2>&1

    千次阅读 2019-01-13 21:41:52
    目录 基本符号含义 /dev/null 重定向到普通文件 多个重定向复用:1&gt;f1 2&gt;f2 多个重定向到一个文件:1&gt;f1 2&gt;1 多个重定向到一个文件 1&...:设备文件 "0&

    目录

    基本符号含义

    /dev/null

    重定向到普通文件

    多个重定向复用:1>f1 2>f2

    多个重定向到一个文件:1>f1 2>1

    多个重定向到一个文件

    1>f1 2>&1

    2>&1 1>f1

    参考:


    基本符号含义

    • ">":定向去处
    • "/dev/null":空设备文件
    • "0":stdin
    • "1":stdout
    • "2":stderr

    /dev/null

    重定向到空文件中,也就是说啥也不干了,重定向到此的stdin、stdout和stderr都会罢工。

    $ ls
    $ touch 1 2 3
    $ ls
    1  2  3
    $ ls >/dev/null
    $ ls 1>/dev/null
    $ ls 2>/dev/null
    1  2  3
    

    重定向到普通文件

    $ ls
    $ touch f1 f2 f3
    $ ls
    f1  f2  f3
    $ cat f1
    $ ls >f1
    $ cat f1
    f1
    f2
    f3
    $ ls 1>f2
    $ cat f2
    f1
    f2
    f3
    $ ls 2>f3
    f1  f2  f3
    $ cat f3
    

    多个重定向复用:1>f1 2>f2

    #include <stdio.h>
    
    int main()
    {
            fprintf(stdout, "hello1\n");
            fprintf(stderr, "hello2\n");
            return 0;
    }
    

    编译一下:然后运行(我的环境是cygwin):

    $ gcc main.c -o main
    $ ./main.exe
    hello1
    hello2
    $ ./main.exe 1>f1 2>f2
    $ cat f1
    hello1
    $ cat f2
    hello2
    

    多个重定向到一个文件:1>f1 2>1

    $ ./main.exe 1>f1 2>f1
    $ cat f1
    hello1

    这个因为文件被打开了两次,然后之写入了第一次写入的内容,试着用下面的方法。

    多个重定向到一个文件

    1>f1 2>&1

    $ ./main.exe 1>f1 2>&1
    $ cat f1
    hello2
    hello1
    

    2>&1 1>f1

    $ ./main.exe 2>&1 1>f1
    hello2
    $ cat f1
    hello1
    

    就是这样。。。。

    参考:

    https://blog.csdn.net/GGxiaobai/article/details/53507530

    Linux里的2>&1究竟是什么,这篇文章告诉你

     

    展开全文
  • [ZZ]Linux 重定向

    2013-05-13 22:39:07
    /dev/null 代表设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1...
  • Linux 输出重定向说明

    2020-10-28 11:25:41
    linux内执行某些指令之后,将会有内容输出到屏幕,如果不想将内容输出到屏幕上,可以使用重定向的功能将输出内容重定向到某个文件或者舍弃。 Linux 重定向: > 覆盖文件之前存在的内容 >> 将输出追加到...
  • tee命令是linuxtee命令可以,不仅可以将数据流重定向到文件中,还可以使数据再标准输出中输出到屏幕上。# cat /etc/passwd > /tee.txt//屏幕上这里为# cat /etc/passwd | tee /tee.txtroot:x:0:0:root:/root:/...
  • linux重定向

    2015-07-16 13:15:11
    > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/...1>/dev/null 首先表示标准输出重定向设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信
  • linux Shell重定向

    2017-02-22 07:08:02
    Linux文件描述符:默认打开三个文件描述符:标准输入standard input 0,正确输出standard output 1,错误输出:error output 2 输出重定向 command-line1 [1-n] > file或文件操作符或设备 首先是判断>右边的文件...
  • Linux脚本重定向

    2015-08-14 17:01:13
    Shell中可能经常能看到:>/dev/null 2>&1  eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null ...> 代表重定向到哪里,例如:echo "123" > /hom
  • linux文件重定向问题

    2017-06-09 16:22:59
    最近做操作系统实验发现输出重定向后文件为的情况,处于死循环内的printf无法实时重定向到文件中。但在满足某些条件的情况下文件内会有输出,所以实验探索文件重定向的机制
  • linux输出重定向

    2014-06-25 16:36:06
    /dev/null 代表设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1
  • 2>&1 : 标准错误输出重定向 到标准输出,因为之前标准输出已经重定向到了设备文件,所以标准错误输出也重定向设备文件 comand > file 2>file 与 comand >file 2>&1 command > file 2>file 的意思是将命令所...
  • Linux管道和重定向

    2021-01-09 14:24:01
     但是在测试的时候,如果左边的程序无限循环且不等待的输出,那么左边的程序执行时右边的程序也会执行,个人感觉这是linux的机制,因为缓冲区溢出了所以不得不启动右边的程序来使缓冲区出来。  管道和重定向的...
  • Linux下使用shell命令时经常使用类似这样的Shell输出重定向: 1>/dev/null 2>&1 在Shell命令的结尾,我们可以通过>符号来重定向输出。 1.标准输入stdin文件描述符为0,标准输出stdout文件描述符为1,...
  • Linux下使用shell命令时经常使用类似这样的Shell输出重定向: 1&gt;/dev/null 2&gt;&amp;1 在Shell命令的结尾,我们可以通过&gt;符号来重定向输出。   1. 标准输入stdin文件描述符为0,标准输出...
  • linux空设备文件和重定向 /dev/null代表文件设备 1表示系统标准输出,系统默认值是1, > /dev/null等同于1 > /dev/null 对于 >dev/null 2>&1 1>/dev/null :首先表示标准输出重定向设备文件,也就是不输出...
  • linux管道和重定向

    2016-03-08 20:03:00
    但是在测试的时候,如果左边的程序无限循环且不等待的输出,那么左边的程序执行时右边的程序也会执行,个人感觉这是linux的机制,因为缓冲区溢出了所以不得不启动右边的程序来使缓冲区出来。管道和重定向的区别1....
  • Linux使用 echo 并配合命令重定向是实现向文件中写入信息的快捷方式。 【新建文件】 方式一 : $ touch test.sh 方式二 : $ echo “” > test.sh 【写内容到文件】 如 test.sh 文件中内容: $ echo “信息” &...
  • Linux常用命令之echo 重定向 管道

    千次阅读 2018-09-29 12:50:08
    Linux允许将命令行执行结果重定向到一个文件 将本应显示在终端的内容输出/追加到指定文件中 其中 &gt;表示输出,会覆盖文件原有的内容 &gt;&gt;表示追加,会将内容追加到已有文件的末尾   ...
  • 目的是要让程序的printf的打印能重定向到某个文本...把stdout与stderr都重定向到1.txt文件中去,结果发现运行过程中1.txt一直为,调试发现如果a.out正常结束退出1.txt数据就正常, ctrl+c强制退出程序则1.txt无数据
  • 群友反应的问题, 贴上聊天记录 甩得**2 11:44:43 python --version | awk -F '.' ...默认重定向的是stdout的, 而这个是stderr的. 所以这样得不到. python --version 2>&1 | awk -F '.' '{print $1}'
  • 目录 1.一切皆文件 2.文件类型 3.文件描述符 (1)输入输出标准说明 (2)查看一个进程打开了哪些文件 ...(5)null黑洞和zero文件 (6)&>和>&符号 5.管道 | 的使用 1.一切皆文件 普通...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 334
精华内容 133
关键字:

linux重定向空

linux 订阅