在做批量实验室,例如跑批量MR的作业,我们会写好shell脚本,然后启动脚本,等所有作业执行完再去看结果,但是这些执行时的信息如何保存下来到文件中呢?下面这个命令可以完成这个任务。

sh batchjob.sh 2>&1 | tee mylog.log

其中sh batchjob.sh:表示要执行的shell脚步;0,1,2:在linux分别表示标准输入、标准输出和标准错误信息输出。

下面来总结下重定向问题。

输入输出重定向之:'<' and '>'

'<' and '>'分别用来支持linux中的输入输出重定向,其中'<'支持输入重定向,'>'支持输出重定向。

1. '<':重定向输入

sh test.sh < hadoop-hadoop-jobtracker-brix-00.out,将hadoop-hadoop-jobtracker-brix-00.out的内容作为test.sh的输入

2. '>':将内容全局覆盖式的加入文件,相当于删除该文件并重新建立该文件,再写入的效果

ls * > test.txt ,将ls * 的所有信息输出到文件test.txt中

3. '>!':如果存在则覆盖

4. '>&':执行时屏幕上所产生的任何信息写入指定的文件中

5. '>>':追加到文件中

6. '>>&':屏幕上的信息追加到文件中

标准输入输出

在 Linux 系统中:标准输入(stdin)默认为键盘输入;标准输出(stdout)默认为屏幕输出;标准错误输出(stderr)默认也是输出到屏幕(上面的 std 表示 standard)。在 BASH 中使用这些概念时一般将标准输出表示为 1,将标准错误输出表示为 2。下面我们举例来说明如何使用他们,特别是标准输出和标准错误输出。

tee命令

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

转载自:http://www.cnblogs.com/gslyyq

补充:在执行makefile的时候,也可以写这样的命令。

make >build_output.txt 2>&1

本书共分五部分,详细介绍了 shell 编程技巧,各种UNIX 命令 及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面、文字简洁流畅,适合 Shell 编程人员学习、参考。 目 录 第一部分 shell 第1章 文件 安全与权限 1 1.1 文件 1 1.2 文件 类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod 命令 举例 5 1.4.3 绝对模式 5 1.4.4 chmod 命令 的其他例子 6 1.4.5 可以选择使用符号模式或绝对模式 7 1.5 目录 7 1.6 suid/guid 7 1.6.1 为什么要使用suid/guid 8 1.6.2 设置suid/guid的例子 8 1.7 chown和chgrp 9 1.7.1 chown举例 9 1.7.2 chgrp举例 9 1.7.3 找出你所属于的用户组 9 1.7.4 找出其他用户所属于的组 10 1.8 umask 10 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来 保存 文件 的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find 命令 选项 14 2.1.1 使用name选项 15 2.1.2 使用perm选项 16 2.1.3 忽略某个目录 16 2.1.4 使用user和nouser选项 16 2.1.5 使用group和nogroup选项 16 2.1.6 按照更改时间查找 文件 17 2.1.7 查找比某个 文件 新或旧的 文件 17 2.1.8 使用type选项 17 2.1.9 使用size选项 18 2.1.10 使用depth选项 18 2.1.11 使用mount选项 18 2.1.12 使用cpio选项 18 2.1.13 使用exec或ok来执行 shell 命令 19 2.1.14 find 命令 的例子 20 2.2 xargs 20 2.3 小结 21 第3章 后台执行 命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab 命令 选项 23 3.1.4 创建一个新的crontab 文件 24 3.1.5 列出crontab 文件 24 3.1.6 编辑crontab 文件 24 3.1.7 删除crontab 文件 25 3.1.8 恢复丢失的crontab 文件 25 3.2 at 命令 25 3.2.1 使用at 命令 提交 命令 或脚本 26 3.2.2 列出所提交的作业 27 3.2.3 清除一个作业 27 3.3 & 命令 27 3.3.1 向后台提交 命令 28 3.3.2 用ps 命令 查看进程 28 3.3.3 杀死后台进程 28 3.4 nohup 命令 29 3.4.1 使用nohup 命令 提交作业 29 3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件 名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell 输入与 输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 tee 39 5.6 标准输入、 输出 和错误 40 5.6.1 标准输入 40 5.6.2 标准 输出 40 5.6.3 标准错误 40 5.7 文件 重定向 40 5.7.1 重定向 标准 输出 41 5.7.2 重定向 标准输入 42 5.7.3 重定向 标准错误 42 5.8 结合使用标准 输出 和标准错误 43 5.9 合并标准 输出 和标准错误 43 5.10 exec 44 5.11 使用 文件 描述符 44 5.12 小结 45 第6章 命令 执行顺序 46 6.1 使用&& 46 6.2 使用|| 46 6.3 用()和{ }将 命令 结合在一起 47 6.4 小结 48 第二部分 文本过滤 第7章 正则表达式介绍 49 7.1 使用句点匹配单字符 50 7.2 在行首以^匹配字符串或字符序列 50 7.3 在行尾以$匹配字符串或字符 5 参考:https://cloud.videojj.com/help/docs/faq.html#id10 假设这里要训练的目标 文件 是gcn_res_cs.py。 1、将程序放到后台运行,将标准 输出 和错误 输出 写入到 .log 文件 nohup python gcn_res_cs.py > ./gcn_res_cs.log 2>&1 & 2、查看实时日志 输出 结果。 注意,在 Python 3 需要使用 print("", flush=True) 让日志实时的写到 文件 。 把你的 命令 后面加上 > log.txt 2>&1例如之前的 命令 是 python train.py,修改后就是python train.py >log.txt 2>&1然后去 log.txt 里面看 输出 就全部到 log.txt 了如何在 输出 同时查看运行过程?新建窗口vim log.txt就能看到。Bash 将 stderr 和 stdout 重定向 到一个fi... 详情地址: Shell 文件 的输入 输出 | 小步教程本节实现从 文件 输入, 输出 文件 。准备数据 文件 data1.txt,其 内容为:xiaobuteach.com例1:从 文件 读取内容 <与 文件 名之间空隔可有可无。然后echo $name查看数据例2:往 文件 写内容 >与 文件 名之间空格可有可无。查看数据正确。例3:将 输出 与错误写到不同 文件 1>log.txt表示将正常内容写到log.txt 文件 2>err.txt表示将错误内容写到err.txt 文件 ll 命令 执行完后,并没有显示到显示器,而是 输出 到了文 目录1. Shell 基础1.1 Shell 概述1.2 Shell 脚本的执行方法1.3 Bash的基本功能1.3.1 历史 命令 命令 补全1.3.2 命令 别名与常用快捷键1.3.3 输入 输出 重定向 1.3.4 多 命令 顺序执行与管道符1.3.5 通配符与其他特殊符号1.4 Bash的变量1.4.1 用户自定义变量1.4.2 环境变量1.4.3 位置参数变量1.4.4 预定义变量1.5 Bash的运算符1.5.1 数值运算与运算符1.5.2 变量测试与内容替换1.6 环境变量配置 文件 1.6.1 环境变量配置 文件 简介1. 在 linux shell ,不同工具、程序间通过文本进行数据交互,即以文本作为输入、 输出 标准格式。文本成为公共的协议,使得整个 shell 成为一个开放式环境,这给文本数据的处理带来了很大的方便。例如通过 重定向 可以 保存 一个程序的 输出 文件 ;通过管道(使用符号 | 表示),可以把一个程序(cat)的 输出 ,作为另一个程序(echo)的输入。 在 Unix 或 Linux 系统上,你可以使用 > 或 >> 运算符将 shell 命令 输出 重定向 文件 。 例如,你可以使用以下 命令 将 ls 命令 输出 重定向 文件 list.txt: ls > list.txt expect_out(buffer)以及expect_out(0,string)及更多 输出 用法可以查看使用man expect去查看更多细节。:获取匹配 信息 匹配成功则执行expect后面的程序动作(检测由壳内进程发出的特定交互指令反馈字符串后向下执行):用于向进程发送字符串(从壳外向壳内进程发送一条字符串,换行符为确认结束) 命令 从用户接收消息,当用户输入ctrl+D时结束输入,循环同时结束。:交互程序开始后面跟 命令 或者指定程序(在壳内启动这个进程):在expect 多次匹配就需要用到。... 本文主要介绍了 Shell 执行脚本并 输出 日志 文件 的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 shell 错误 输出 重定向 到标准 输出 1>和&1的意思就是将标准错误也 输出 到标准 输出 。下面通过一个例子来展示2>&1有什么作用:123cat。 ------------------------------------------------------------ sh batchjob.sh 2>&1 | tee mylog.log ls * > test.txt -------------------...