精华内容
下载资源
问答
  • 【小记】将控制台输出保存至文件

    千次阅读 2019-07-20 14:13:33
    1,在保存输出信息到文件的同时,终端仍正常打印信息。 python run.py 2>&1 | tee train.log 将控制台打印的信息保存到当前目录下,文件命名为 train.log,如果要指定保存路径,只需要在 train.log 前加上...

    1. tee命令重定向

    在 Linux 终端执行直接 run 代码时,可以在执行命令后加上 2>&1,在保存输出信息到文件的同时,终端仍正常打印信息。

    python run.py 2>&1 | tee train.log
    

    将控制台打印的信息保存到当前目录下,文件命名为 train.log,如果要指定保存路径,只需要在 train.log 前加上对应的路径,比如:

    python run.py 2>&1 | tee backup/train.log
    

    2. 重定向标准输出流

    重定向标准输出流有两种方式:

    • 在每个单独的 print 方法中进行重定向
    • 在全局设置重定向

    1)在每个单独的 print 方法中重定向,需要在每个 printf 中进行修改:

    # assume the log file is 'train.log'
    
    # for python2
    print >> train.log, 'print content'
    # for python3
    print('print content', file=train.log)
    

    2)在全局设置重定向,比单独设置要方便很多,在 python 文件里添加:

    # assume the log file is 'train.log'
    
    import sys
    f = open('train.log', 'train')
    sys.stdout = f
    sys.stderr = f		# redirect std err, if necessary
    

    这两种重定向方法的缺点在于:控制台不再打印信息,可能对观察程序执行状态造成不便。


    3. 自定义logger

    可以在python程序中自定义一个记录者类,用来同时写文件以及在控制台进行显示。一个例子如下:

    import sys
    class Logger(object):
        def __init__(self, filename='default.log', stream=sys.stdout):
    	    self.terminal = stream
    	    self.log = open(filename, 'a')
    
        def write(self, message):
    	    self.terminal.write(message)
    	    self.log.write(message)
    
        def flush(self):
    	    pass
    
    sys.stdout = Logger(a.log, sys.stdout)
    sys.stderr = Logger(a.log_file, sys.stderr)		# redirect std err, if necessary
    
    # now it works
    print 'print something'
    

    参考:https://blog.csdn.net/u010158659/article/details/81671901

    展开全文
  • 1,在保存输出信息到文件的同时,终端仍正常打印信息。 python run.py 2>&1 | tee train.log 1 将控制台打印的信息保存到当前目录下,文件命名为 train.log,如果要指定保存路径,只需要在 train.log 前加上...

    tee将控制台stdout输出保存至文件

    此命令主要用于远端服务器跑任务,但不能实时连接观测,遇到问题需要上去定位的场景。

    1. tee命令重定向

    在 Linux 终端执行直接 run 代码时,可以在执行命令后加上 2>&1,在保存输出信息到文件的同时,终端仍正常打印信息。

    python run.py 2>&1 | tee train.log
    1
    

    将控制台打印的信息保存到当前目录下,文件命名为 train.log,如果要指定保存路径,只需要在 train.log 前加上对应的路径,比如:

    python run.py 2>&1 | tee backup/train.log
    1
    

    2. 重定向标准输出流

    重定向标准输出流有两种方式:

    • 在每个单独的 print 方法中进行重定向
    • 在全局设置重定向

    1)在每个单独的 print 方法中重定向,需要在每个 printf 中进行修改:

    # assume the log file is 'train.log'
    
    # for python2
    print >> train.log, 'print content'
    # for python3
    print('print content', file=train.log)
    123456
    

    2)在全局设置重定向,比单独设置要方便很多,在 python 文件里添加:

    # assume the log file is 'train.log'
    
    import sys
    f = open('train.log', 'train')
    sys.stdout = f
    sys.stderr = f		# redirect std err, if necessary
    123456
    

    这两种重定向方法的缺点在于:控制台不再打印信息,可能对观察程序执行状态造成不便。


    3. 自定义logger

    可以在python程序中自定义一个记录者类,用来同时写文件以及在控制台进行显示。一个例子如下:

    import sys
    class Logger(object):
        def __init__(self, filename='default.log', stream=sys.stdout):
    	    self.terminal = stream
    	    self.log = open(filename, 'a')
    
        def write(self, message):
    	    self.terminal.write(message)
    	    self.log.write(message)
    
        def flush(self):
    	    pass
    
    sys.stdout = Logger(a.log, sys.stdout)
    sys.stderr = Logger(a.log_file, sys.stderr)		# redirect std err, if necessary
    
    # now it works
    print 'print something'
    

    要将命令的输出写入文件,基本上有10种常用方法。

    概述:

    请注意,n.e.语法列中的表示“不存在”。
    有一种方法,但是它太复杂而无法放入专栏。您可以在列表部分找到有用的链接。

              || visible in terminal ||   visible in file   || existing
      Syntax  ||  StdOut  |  StdErr  ||  StdOut  |  StdErr  ||   file   
    ==========++==========+==========++==========+==========++===========
        >     ||    no    |   yes    ||   yes    |    no    || overwrite
        >>    ||    no    |   yes    ||   yes    |    no    ||  append
              ||          |          ||          |          ||
       2>     ||   yes    |    no    ||    no    |   yes    || overwrite
       2>>    ||   yes    |    no    ||    no    |   yes    ||  append
              ||          |          ||          |          ||
       &>     ||    no    |    no    ||   yes    |   yes    || overwrite
       &>>    ||    no    |    no    ||   yes    |   yes    ||  append
              ||          |          ||          |          ||
     | tee    ||   yes    |   yes    ||   yes    |    no    || overwrite
     | tee -a ||   yes    |   yes    ||   yes    |    no    ||  append
              ||          |          ||          |          ||
     n.e. (*) ||   yes    |   yes    ||    no    |   yes    || overwrite
     n.e. (*) ||   yes    |   yes    ||    no    |   yes    ||  append
              ||          |          ||          |          ||
    |& tee    ||   yes    |   yes    ||   yes    |   yes    || overwrite
    |& tee -a ||   yes    |   yes    ||   yes    |   yes    ||  append
    

    清单:

    • command > output.txt

      标准输出流将仅重定向到文件,在终端中将不可见。如果文件已经存在,它将被覆盖。

    • command >> output.txt

      标准输出流将仅重定向到文件,在终端中将不可见。如果文件已经存在,则新数据将附加到文件末尾。

    • command 2> output.txt

      标准错误流将仅重定向到文件,在终端中将不可见。如果文件已经存在,它将被覆盖。

    • command 2>> output.txt

      标准错误流将仅重定向到文件,在终端中将不可见。如果文件已经存在,则新数据将附加到文件末尾。

    • command &> output.txt

      标准输出和标准错误流都将仅重定向到文件,在终端中看不到任何内容。如果文件已经存在,它将被覆盖。

    • command &>> output.txt

      标准输出和标准错误流都将仅重定向到文件,在终端中看不到任何内容。如果文件已经存在,则新数据将附加到文件末尾。

    • command | tee output.txt

      标准输出流将被复制到文件,在终端中仍将可见。如果文件已经存在,它将被覆盖。

    • command | tee -a output.txt

      标准输出流将被复制到文件,在终端中仍将可见。如果文件已经存在,则新数据将附加到文件末尾。

    • (*)

      Bash没有简写语法,该语法只允许将StdErr用管道传递给第二个命令,这里需要结合使用第二个命令tee来完成该表。如果您确实需要这样的东西,请查看“如何用管道输送stderr,而不是stdout?”。在Stack Overflow上以某种方式可以做到这一点,例如通过交换流或使用进程替换。

    • command |& tee output.txt

      标准输出流和标准错误流都将复制到文件,同时仍在终端中可见。如果文件已经存在,它将被覆盖。

    • command |& tee -a output.txt

      标准输出流和标准错误流都将复制到文件,同时仍在终端中可见。如果文件已经存在,则新数据将附加到文件末尾。

    展开全文
  • 文件中一行行读取内容,并输出到控制台 ! file_p="/home/path/study/linuxCommond/shell" # 先列出路径下的文件 (ls -l $file_p) read -p "请输入要读取的文件名称:" file_n # count=0 while read line do echo....

     利用重定向实现读取文件内容

    #!/bin/bash
    :<<!
    从文件中一行行读取内容,并输出到控制台
    !
    file_p="/home/path/study/linuxCommond/shell"
    # 先列出路径下的文件
    (ls -l $file_p)
    read -p "请输入要读取的文件名称:" file_n
    # count=0
    while read line
    do
      echo "$line"
      #let "count += 1"
      #echo "$count" # 这个地方用于验证是按照行读取内容的,读者测试的时候可以将注释掉的三行代码打开 ,这样就可以看到效果
    done < "$file_p/$file_n"

    测试结果:

    总用量 40
    -rw-rw-r--. 1 *** ***  529 5月  29 17:05 1.sh
    -rwxrwxr-x. 1 *** ***   75 5月  30 11:34 2.sh
    -rw-rw-r--. 1 *** ***  177 5月  30 10:16 a.txt
    -rwxrwxr-x. 1 *** ***  706 5月  31 14:59 chess.sh
    -rwxrwxr-x. 1 *** ***  175 5月  31 14:58 jiujiu.sh
    -rwxrwxr-x. 1 *** ***  540 5月  30 10:22 mysql_conn.sh
    -rwxrwxr-x. 1 *** ***  421 5月  30 09:38 mysql_insert.sh
    -rwxrwxr-x. 1 *** *** 2906 5月  31 14:15 mysql_system.sh
    -rw-rw-r--. 1 *** ***  398 5月  31 11:32 mysql.txt
    -rw-rw-r--. 1 *** ***  477 5月  31 17:01 readFile.sh
    请输入要读取的文件名称:a.txt
    sid	sname	sage	sgender	sclass
    1	张三	23	1	一班
    2	李四	24	1	二班
    3	王五	25	1	三班
    4	赵六	26	1	一班
    5	蓝宝	20	0	一班
    6	赵荧	22	0	二班
    7	赵迁	27	1	三班
    

     

    展开全文
  • [Linux]程序日志输出到指定位置

    千次阅读 2019-12-17 14:44:17
    我们常常在Linux上开发程序的时候,运行的程序log只能在控制台输出,我们不能查看完整的log,所以我们现在就需要把所有log输出到一个文件中,在文件中查看所有log就方便了许多,下面就介绍几种方法来实现日志输出到...

    前言:我们常常在Linux上开发程序的时候,运行的程序log只能在控制台输出,我们不能查看完整的log,所以我们现在就需要把所有log输出到一个文件中,在文件中查看所有log就方便了许多,下面就介绍几种方法来实现日志输出到指定文件。

    方法一

    nohup ./asr_test > log4.txt 2>&1
    

    解析:
    2>&1 表示不仅命令行正常的输出保存到app.log中,产生错误信息的输出也保存到app.log文件中;
    查看log指令

    tail -f log4.txt //用于实时查看日志文件
    cat log4.txt //全部输出查看
    

    方法二

    上面命令使用后终端没有任何输出,如果同时想在终端显示,需要使用tee指令

    ./asr_test | tee log4.log
    
    展开全文
  • linux部署springboot项目后如何输出日志到指定位置 第一步:将打包好的jar文件上传linux服务器的指定目录 第二部:启动jar文件指定输出文件(必须是拥有执行权限的用户) nohup java -jar abbc.jar > ...
  • # 之后,将标准输出1 指向文件/tmp/t.txt,但标准错误输出2 仍指向控制台。 ls non_exists 2>&1 > /tmp/t.txt# 所以,错误信息打印了屏幕上, ls: cannot access non_exists: No...
  • 我现在只说如何看远程的tomcat控制台命令。用远程登陆客户端登陆linux进入tomcat/logs...tail命令从指定点开始将文件标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail-ffilename会把filenam...
  • 标准输出1输出到屏幕(即控制台) /proc/self/fd/1 错误输出2输出到屏幕(即控制台) /proc/self/fd/2 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 &...
  • 这里介绍几种将控制台输出保存到文件中的方式:以测试文件test.py,保存文件aa.log为例一.重定向标准输出流:控制台不显示信息,所有信息保存到指定文档1.程序内部:每个print方法中进行重定向print("hello world", ...
  • linux重定向输出

    2016-05-05 09:38:41
    >和>>都是重定向输出 1> 指标准信息输出路径(也就是默认的输出方式) 2> 指错误信息输出路径...标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>。> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
  • 通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)什么是错误重定向? 通俗的讲,错误重定向就是把错误的信息写入到一个文件中去linux中一切皆文件 输入...
  • linux中重定向内容文本文件

    千次阅读 2012-01-10 11:51:19
     tee 除了输出到文件中,还得输出到控制台 AWK介绍 0.awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk。 1.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于...
  • 通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏) 什么是错误重定向? 通俗的讲,错误重定向就是把错误的信息写入到一个文件中去 linux中一切皆...
  • 支持日志指定输出到磁盘文件 使用方法 :face_with_monocle:一看就会一做就对 :partying_face: package main import "github.com/lfoder/Gllog" // 需要先实例化一个对象 Option可选 var log = Gllog . New ( & ...
  • 通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏) 什么是错误重定向? 通俗的讲,错误重定向就是把错误的信息写入到一个文件中去 linux中一切皆文件 ...
  • 通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏) 3:什么是错误重定向? 通俗的讲,错误重定向就是把错误的信息写入到一个文件中去 在linux中一切皆文件...
  • Linux命令之查找文件文件查找-find,grep mark: linux 命令 find grep   find 查找文件 【语法】 find path_name [path_name_tow ....-print 将符合条件的数据打印标准输出(控制台);find命令默认不打
  • 文件目录指令 Linux

    2021-04-24 15:08:12
    用于创建目录rmdir指令 删除**空目录**touch 指令 创建空文件cp指令 拷贝文件(或文件目录)到指定目录rm指令 移除文件或目录mv 指令 移动文件与目录 或重命名cat 指令more指令less指令echo指令:输出内容到控制台head...
  • Log4j的组成:Log4j由三个重要的组成构成:日志记录...2.输出端(Appenders):指定了日志将打印到控制台还是文件中。3.日志格式化器(Layout):控制日志信息的显示格式。类图结构如下,主要分为三部分:配置文件解析1....
  • linux三剑客

    2019-11-14 16:44:42
    sed 常用参数及命令 sed [-nefri] ‘command’ test.txt (尽量按照标准格式使用单引号) sed ...取消默认控制台输出,与p一起使用可打印指定内容 d 删除 -i 输出到文件,静默执行(修改...
  • 1.1 – 查询2020-11-07 15:00-16:59内容(在原来的内容test.log中进行追加,nohup.out为项目启动之后默认生成的文件,可以理解成是项目启动输出到控制台的内容输出到文件中) grep '2020-11-07 1[5-6]' nohup.out >...
  • Linux从入门精通

    2010-04-25 19:58:09
    11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 ...
  • Linux重定向

    2019-12-07 20:52:51
    通俗的讲,输出重定向就是把要输出的信息写入到一个文件中去,而不是将要输出的文件信息输出到控制台(显示屏)。 3、错误重定向: 通俗的讲,错误重定向就是把错误的信息写入到一个文件中去 文件描述符: posix名称...
  • 11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 ...
  • linux从入门精通.chm

    2010-05-17 09:11:20
    11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 ...
  • Linux从入门精通》

    热门讨论 2008-09-04 17:05:49
    11.8.2 输出NFS文件系统 11.9 Boot, Init和Shutdown 过程的描述 11.9.1 有关Sysconfig的信息 11.9.1.1 /etc/sysconfig下面的文件 11.9.1.2 /etc/sysconfig/network-scripts中的文件 11.9.2 系统 V 的Init过程 ...
  • linux下tomcat日志总结

    2019-05-22 22:40:00
    一、前言Tomcat的日志默认使用JDK的Log,java.util.logging,单独提供了自定义的logging....二、linux下tomcat默认有下列六种日志1、catalna.out控制台输出的日志,Linux下默认重定向catalina.out,tomcat官...

空空如也

空空如也

1 2 3 4 5 6
收藏数 117
精华内容 46
关键字:

linux指定控制台输出到文件

linux 订阅