Linux实时将所有输出重定向到文件

Linux的重定向机制十分好用,除了编写代码本身的重定向,shell本身支持重定向的功能。

我们经常需要在服务器上挂起一个服务程序后台运行,然后将该程序的所有输出重定向到某个文件,这样即使我们注销了用户,程序依然在linux服务器上运行着,log等信息都能够实时的写到文件中。

但是重定向的输出经常无法实时刷新到指定文件中,当我们调试程序时,这将给我们带来巨大的困扰。其实只需要关闭重定向输出的缓冲,即可实现实时刷新的效果。

命令如下:

nohup unbuffer command > file.out 2>&1 &

命令的说明如下:

上面的unbuffer命令需要额外安装expect-devel,用来实时刷新。

nohup命令用来忽略所有挂断(SIGHUP)信号,让你的程序即使在用户注销后依然继续运行。

command是任何一段你想要执行的shell命令。

> file.out 代表将command运行结果重定向到当前目录下的file.out文件中(如果要每次运行的结果追加到file.out后面,可以用>>而不是>)。

2 >&1表示将标准错误输出cerr的所有输出也都重定向到标准输出cout中,这样file.out中就会记录command命令运行过程中所有标准输出。(参见shell脚本的重定向)

最后一个&表示后台运行该command。

Linux Shell中,将命令的结果输出重定向文件是一个常见的操作,主要通过重定向符号来实现。以下是几种常见的方法: 1. **标准输出重定向(覆盖文件)**: 使用`>`符号可以将命令的标准输出重定向文件中。如果文件不存在,会自动创建;如果文件已存在,则会覆盖文件内容。 ```sh command > filename ``` 例如: ```sh ls -l > file_list.txt ``` 2. **标准输出重定向(追加到文件)**: 使用`>>`符号可以将命令的标准输出追加到文件中。如果文件不存在,会自动创建;如果文件已存在,则会在文件末尾追加内容。 ```sh command >> filename ``` 例如: ```sh ls -l >> file_list.txt ``` 3. **标准错误重定向**: 使用`2>`符号可以将命令的标准错误重定向文件中。 ```sh command 2> filename ``` 例如: ```sh ls -l nonexistent_directory 2> error.log ``` 4. **标准输出和标准错误同时重定向**: 使用`&>`符号可以将命令的标准输出和标准错误同时重定向文件中。 ```sh command &> filename ``` 例如: ```sh ls -l existing_directory nonexistent_directory &> output.log ``` 5. **将标准输出和标准错误分别重定向到不同的文件**: ```sh command > outfile 2> errfile ``` 例如: ```sh ls -l existing_directory nonexistent_directory > output.log 2> error.log ``` 通过这些方法,你可以灵活地将命令的输出和错误信息重定向文件中,方便后续查看和分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值