linux log 保存到文件,利用logsave如何将命令输出保存起来

前言

如果想要把命令的输出保存到文件中,你会怎么做?

一个常用的方法就是使用IO重定向吧

ls >/tmp/ls.txt 2>&1

如果需要在将命令输出保存到文件中的同时还需要将内容也输出到屏幕中的话,那么我们可以使用 tee 命令

ls |tee /tmp/ls.txt

不过,我今天发现还有一个 logsave 的命令,也可以做到将命令输出保存到文件的同时将内容页输出到屏幕中。

logsave 的语法非常简单:

logsave [ -asv ] logfile cmd_prog [args ... ]

选项

-a:追加信息到指定的日志文件中。

参数

日志文件:指定记录运行信息的日志文件;

指令:需要执行的指令。

logsave 会执行 cmd_prog args... 并将命令输出的副本保存到 logfile 中. 而它厉害的地方在于 即使logfile所在的目录不存在,logsave也会将输出保存到内存中,等到logfile所在的目录建立后再将内容写入到日志文件中

logsave 的这个特性使得它很适合用于系统启动脚本中,将输出的内容保存到内存中,直到 /var/ 目录挂载后再将内容写入 /var/log/ 中

比如下面这个例子

# 删除存放logfile的目录

rm -rf /tmp/logdir

# 使用logsave保存logfile

logsave /tmp/logdir/logfile bash -c "sleep 2;date"

# 创建logdir

mkdir /tmp/logdir

echo 查看logfile是否生成:

ls -l /tmp/logdir

echo 等待2s后:

sleep 2

echo 再次查看logfile是否生成:

ls -l /tmp/logdir

echo 查看logfile的内容:

cat /tmp/logdir/logfile

2018年 05月 14日 星期一 16:31:44 CST

查看logfile是否生成:

总用量 0

等待2s后:

再次查看logfile是否生成:

总用量 4

-rw-r--r-- 1 lujun9972 lujun9972 141 5月 14 16:31 logfile

查看logfile的内容:

Log of bash -c sleep 2;date

Mon May 14 16:31:42 2018

2018年 05月 14日 星期一 16:31:44 CST

Mon May 14 16:31:44 2018

----------------

从中可以看到:

虽然一开始logfile由于logdir不存在而无法生成,但是在创建logdir后, logsave 最终依然成功的生成了logfile,并将 date 命令的执行结果写入其中。

logsave 不仅仅将命令的输出内容写入logfile中,而且还包括了执行的命令,命令执行的开始时间和命令执行结束的时间.

logsave 中的 cmd_prog 可以是一个特殊的 - ,这表示 logsave 从标准输入中获取要记录日志的内容,这使得 logsave 可以像 tee 一样被使用

ls |wc -l |logsave /tmp/1.txt - >/dev/null

cat /tmp/1.txt

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值