-
Linux 标准输出重定向
2020-12-18 15:05:28Linux 标准输出重定向一、引例
用远程服务器登陆工具(SecureCRT、Putty 等等)登陆 Linux 服务器的时候,过一段时间可能会自动断开连接,这时候需要重新登陆。原本进程去了后台,前台信息就没有了 。为了解决这个问题,需要将标准输出重定向到文件中。
二、标准输入输出
- 在 Linux 下几乎一切都是文件,标准输入、输出也不例外,被称作文件描述符 (File Descriptor),简称 fd。所以在有些网络库底层源码中我们会看到 fd 这个变量命名。
名称 宏 代码 标准输入 stdin 0 标准输出 stdout 1 标准错误输出 stderr 2 三、2>&1 重定向
2>&1
的意思就是将 标准错误 重定向到 标准输出。
2 表示 标准错误;
1 表示 标准输出;
>& 是一个整体,代表 重定向;四、日志重定向步骤
- 1)启动服务器的 shell 脚本叫 run_server.sh;
- 2)再写一个shell脚本作为代理的启动脚本 run.sh,实现如下:
---[run.sh]--- sh run_server.sh > watch.log 2>&1
表示将 标准输出 和 标准错误 都重定向到 watch.log 文件中;调用 ./run.sh,就可以发现输出信息都没有了。
- 3)现在的输出都在watch.log 文件中,直接用如下 shell 就可以试试看到信息显示了。
tail -f watch.log
-
标准输入,标准输出和标准错误
2019-03-19 17:48:04当我们使用文件描述符进行操作时,需要操作标准输入、标准输出、标准错误,可以包含如下头文件: #include <unistd.h> 这个头文件中定义了标准设备: /* Standard file descriptors. */ #define STDIN_FILENO...当我们使用文件描述符进行操作时,需要操作标准输入、标准输出、标准错误,可以包含如下头文件:
#include <unistd.h>
这个头文件中定义了标准设备:
/* Standard file descriptors. */ #define STDIN_FILENO 0 /* Standard input. */ #define STDOUT_FILENO 1 /* Standard output. */ #define STDERR_FILENO 2 /* Standard error output. */
任意一个进程在启动时都会初始化对应的标准设备,他们对应的文件描述符就是0,1,2。
标准输出可以使用重定向符号>进行重定向,标准错误也可以重定向到标准输出中。ls > log.txt 2>&1
示例:
#include <stdio.h> #include <unistd.h> int main(int argc, char *argv[]) { char buf[10]; int n; while((n = read(STDIN_FILENO, buf, 10)) > 0) { if (write(STDOUT_FILENO, buf, n) != n) { perror("Write Failed"); exit(1); } } if (n < 0) { perror("Read Failed"); exit(2); } return 0; }
标准IO库中的文件操作,涉及到FILE文件流格式的标准输入,标准输出和标准错误:
#include <stdio.h>
这个头文件定义了如下的标准设备:
typedef struct _IO_FILE FILE; /* Standard streams. */ extern struct _IO_FILE *stdin; /* Standard input stream. */ extern struct _IO_FILE *stdout; /* Standard output stream. */ extern struct _IO_FILE *stderr; /* Standard error output stream. */
因此只要包含了该文件,我们可以直接使用stdin、stdout,stderr来使用。
示例:#include <stdio.h> int main(int argc, char *argv[]) { char buf[10]; int n; while((n = fread(buf, 1, 10, stdin)) > 0) { printf("fread return n:%d\n", n); if (fwrite(buf, 1, n, stdout) != n) { perror("fwrite failed"); exit(1); } } if (n < 0) { perror("fread failed"); exit(2); } return 0; }
我们需要清楚的一点就是,使用标准IO库的读写操作,内部实现是包含缓冲区的,所以这里我们读10个字节,如果仅仅输入8个是不会写入到标准输出的,只有当达到10个字节才会写入。
$ ./iostream 123456789 fread return n:10 123456789 123456 789 fread return n:10 123456 789
-
标准输出,标准错误输出
2013-07-16 10:22:23标准输出,标准错误输出以及重定向输出。 (2012-07-24 14:12:46) 转载▼ 标签: 杂谈 Linux Shell 环境中支持输入输出重定向,用符号""来表示。0、1和2分别表示...标准输出,标准错误输出以及重定向输出。
(2012-07-24 14:12:46)标签: 杂谈
Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。
同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2>&1来实现。Linux下还有一个非凡的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。假如想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:# ls 1>/dev/null 2>/dev/null还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:# ls >/dev/null 2>&1注重:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静静静:-)另外 :make >& make_log意思是把标准输出和错误输出都重定向, make>out 只重定向标准输出!!!!!>log 表示把标准输出重新定向到文件log中>& log 表示把标准输出和错误输出都定向到文件log中,相当于 >log 2>&1错误输出应该被写至标准错误(stderr),缺省情况下标准错误同样也是终端(也就是用户的屏幕)如果已将标准输出重定向至某一位置,也可以将标准错误重定向至同一位置。例如:$ command 2>&1
在这个例子中,符号“2>&1”表示“将标准错误发送至标准输出被重定向的任何位置”,因此错误和正常的消息都将在屏幕上显示。当 然,这是多余的,因为下面简单的调用
$ command
将做同样的事。在标准输出已被重定向至其它源,而您希望在同一命令行上将标准错误也写至同一目的地时,该特性就非常有用。例如:
$ command >output_file 2>&1
在这个例子中,已首先将标准输出重定向至 output_file;因此“2>&1”将使标准错误也被重定向至 output_file。
原来是这个意思啊!!!才明白!!够费事的!
-
tcsh重定向标准输出和标准错误输出
2015-08-20 15:53:39 -
什么是标准输入、标准输出(stdin、stdout)?
2019-06-12 10:49:23原文地址:什么是标准输入、标准输出(stdin、stdout)? 要弄清什么是标准输入输出。首先需要弄懂什么是IO。 IO的I是Input的意思,O是output的意思。 意味着输入和输出。 更确切的含义是: I:从外部设备输入到内存 O:... -
Python标准输出
2017-05-05 11:31:05修改代码:把数据输出到一个磁盘文件而不是显示在屏幕上(称为标准输出)。然后就可以采用一种更可用的格式保存数据。 标准输出(standard output):这是使用“print()” BIF代码写数据的默认位置,这通常是... -
Linux 2>&1将标准错误输出重定向到标准输出
2018-12-02 15:20:53启动storm ui时,将日志错误输出重定向到标准输出中 ./storm ui > /dev/null 2>&1 & &1:标准输出;2:标准错误输出;2>&1 的意思就是将标准错误重定向到... -
linux 标准输入、标准输出、错误输出的重定向
2019-08-05 13:01:02参考 command >> filename 把标准输出重定向到filename文件中(追加) command 1>> filename 把标准输出重定向到filename文件中(追加) command 2> filename 把标准错误重... -
标准输出,标准输入,标准错误
2018-10-10 16:38:33标准输出示例 #include<stdio.h> void func(FILE *p) { char *str = "ddd\n" fputs(str, p);//向指定的文件写入字符串 } int main() { func(stdout);//标准输出 return 0; } 输出... -
Linux 标准输出 过滤输出特定信息
2020-05-09 17:48:011.因工程现场调试要求,需要查看程序的标准输出到shell控制终端,工程可执行程序名称是vehicle,过滤输出有take字段的信息,相关命令如下: ./vehicle | grep take -
标准输入、标准输出、标准出错:
2016-01-26 16:54:40标准输入、标准输出、标准出错 -
Linux的标准输入、标准输出和标准错误
2019-03-02 20:20:43Linux的标准输入、标准输出和标准错误 什么是文件描述符? 文件描述符是一个简单的正整数,用以标明每一个被进程所打开的文件和socket。 最前面的三个文件描述符(0,1,2)分别与标准输入(stdin),标准输出... -
【Go语言实战】—— 时间戳转标准输出格式,标准输出转时间戳,gorm查询标准化时间
2019-05-28 17:22:14Go语言邮件发送 QQ邮箱发送 QQ企业邮箱 163邮箱等...请务必下载代码包时间戳转换配置邮件发送基础信息发送邮件的内容完整代码 请务必下载代码包 ...支持将时间戳转成标准输出格式,标准输出时间转时间戳。 typ... -
获取进程的标准输出
2019-05-23 22:11:13起因是我想看到spring项目的标准输出,注意不是日志输出是标准输出,我想到了spring就是一个java进程,怎么能够获取到这个进程的标准输出呢?首先找到进程号,然后获取进程的标准输出。linux一切到可以看作文件,/... -
标准输入设备,标准输出设备,输出重定向,输入重定向,
2019-03-20 20:38:00标准输入即我们输入的命令的设备,比如输入命令的键盘 ...如果同时想让输出定向到一个文件并且继续标准输出可以用tee [filename](生成一个前面标准输出的文件,可以跟在管道符各命令之间不会影响整个命令) > ... -
linux将标准输出和标准错误输出都重定向到一个文件?
2018-08-08 11:44:00今天在写crontab,里面有标准输出和错误输出,之前使用的是 > /dev/null 2>&1 那这个意思也就等同于将标准输出和错误输出都输出到/dev/null中,在这里记录下 操作过程: 1.原crontab定时任务,分别对... -
标准错误和标准输出的重定向
2015-12-10 14:56:101: 标准输出 2: 标准错误 一般情况下: ./run > 1.txt 以上命令只能讲标准输出重定向到1.txt. 如果想把标准错误也重定向到1.txt, 命令如下: ./run > 1.txt 2>&1 2>&1表示: 标准错误也... -
C和C++中的标准输出和标准错误输出
2016-06-05 23:53:10C中的标准输出和标准错误输出是stdout和stderr两个"File *"类型的文件指针。 fprintf(stdout,"stdout: hello world\n"); fprintf(stderr,"stderr: hello world\n"); C++相关 C++中的则是cout和cerr两个output ... -
linux 标准输出、标准错误输出、以及shell小技巧
2015-10-18 14:47:042) 标准输出 stdout 代码为1,使用> 或 >> ,这里把1给省略了, 3) 标准错误输出 stderr代码为2,使用 2> 或2>> 其中:标准输出指的是『命令运行所回传的正确的信息』,而标准错误输出可理解为『命令运行失败... -
Python标准输出重定向
2016-12-19 12:07:09本文基于Python2.7版本,介绍常见的几种标准输出(stdout)重定向方式。显然,这些方式也适用于标准错误重定向。 本文同时也发布于作业部落,视觉效果略有不同。 一. 背景知识 在Python中,文件对象sys.stdin、sys.... -
dup、dup2实现文件描述符重定向(标准输入、标准输出、标准错误输出)
2019-07-06 11:12:01重定向标准输出 重定向标准错误输出 重定向恢复 总结 在前文中,可以知道,文件描述符实际上是指向文件表项的指针数组索引,也就相当于每个文件描述符都对应一个文件表项,最终对应一个文件,而文件描述符... -
文件IO---标准输入、标准输出和标准错误
2017-11-05 12:46:17文件IO---标准输入、标准输出和标准错误 (1) 每个进程都会默认打开3个文件描述符,即0、1、2。其中0代表标准输入流、1代表标准输出流、2代表标准错误流。通常标准输入流对应着键盘的设备文件、标准输出流和... -
Shell中的I/O--- 标准输入、标准输出、错误输出
2018-11-22 17:41:54在字符终端环境中,标准输入/标准输出的概念很好理解。 输入即指对一个应用程序或命令的输入,无论是从键盘输入还是从别的文件输入; 输出即指应用程序或命令产生的一些信息; 不同于 Windows 系统的是,Linux ... -
标准输入和标准输出的read_write
2017-03-20 15:59:46标准输入和标准输出的read_write -
python捕获print标准输出
2019-04-25 10:54:47起因 ...print的实质是调用了系统的标准输出, print("hello") sys.stdout.write('hello'+'\n') 上面两句话是等价的。 网上大都是有把输出重定向到文件,但是我只要输出作为string。先写入文件再... -
标准输出、标准错误重定向(格式)
2016-04-06 17:18:28command > filename 把把标准输出重定向到一个新文件中 command >> filename 把把标准输出重定向到一个文件中(追加) command 1 > fielname 把把标准输出重定向到一个文件中 command > filename 2>&1 把把标准输出... -
shell如何将标准错误输出重定向为标准输出
2013-10-18 10:15:47shell如何将标准错误输出重定向为标准输出 经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用 /tmp/test.sh > /tmp/test.log 2>&1 前半部分/tmp/test.sh > /tmp/test.log很容易理解,... -
nohup后台运行以及重定向标准输出和标准错误
2018-08-15 21:06:23nohup后台运行以及重定向标准输出和标准错误 转载,原文地址:https://blog.csdn.net/andyzhaojianhui/article/details/46692549 nohup 加 &大家都知道是后台运行并把stdout输出到文件nohup.out中。其实&... -
VS2010将标准输出信息输出到output中
2015-03-07 18:45:36在微软的Visual Studio开发环境(如VS2010)下开发C++的Console Application的项目,标准输出信息(如std::cout、printf等)都是输出到控制台的(也就是传说中的黑窗)。有很多人是不喜欢这个黑窗口的,特别是习惯了像... -
IO —— 标准输入流和标准输出流
2016-07-24 08:26:33标准输入指键盘输入,标准输出指控制台输出。这一节讲解标准输入流和标准输出流。例1:示例了 syso 或者 sout 的深层道理,其实就是 PrintStream/** * Created by liwei on 16/7/19. */ /* * System.in 标准输入...
-
【布道者】Linux极速入门
-
SHA1 java 加密算法
-
基于Qt的LibVLC开发教程
-
图--强连通分支
-
用微服务spring cloud架构打造物联网云平台
-
GPU并行计算加速的实时可视外壳三维重建及其虚实交互
-
Hackintool.3.5.3__HeiPG.cn.dmg
-
《STL源码剖析》chapter8 配接器
-
fiddler AutoResponder规则设置
-
时滞遗传网络的稳定性和Neimark-Sacker分叉分析
-
【Python-随到随学】FLask第二周
-
“5G+AI”工业视觉解决方案白皮书.pdf
-
servlet.docx
-
xshell远程连接linux警告The remote SSH server rejected X11 forwarding reques
-
access应用的3个开发实例
-
Java cas 与 synchronized 的区别
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺
-
veeam_backup_11_0_user_guide_vsphere.pdf
-
Unity iOS使用ASTC格式纹理实践
-
MHA 高可用 MySQL 架构与 Altas 读写分离