利用logsave如何将命令输出保存起来
前言
如果想要把命令的输出保存到文件中,你会怎么做?
一个常用的方法就是使用IO重定向吧
ls>/tmp/ls.txt2>&1
如果需要在将命令输出保存到文件中的同时还需要将内容也输出到屏幕中的话,那么我们可以使用tee命令
ls|tee/tmp/ls.txt
不过,我今天发现还有一个logsave的命令,也可以做到将命令输出保存到文件的同时将内容页输出到屏幕中。
logsave的语法非常简单:
logsave[-asv]logfilecmd_prog[args...]
选项
-a:追加信息到指定的日志文件中。
参数
- 日志文件:指定记录运行信息的日志文件;
- 指令:需要执行的指令。
logsave会执行cmd_progargs...并将命令输出的副本保存到logfile中.而它厉害的地方在于即使logfile所在的目录不存在,logsave也会将输出保存到内存中,等到logfile所在的目录建立后再将内容写入到日志文件中
logsave的这个特性使得它很适合用于系统启动脚本中,将输出的内容保存到内存中,直到/var/目录挂载后再将内容写入/var/log/中
比如下面这个例子
#删除存放logfile的目录 rm-rf/tmp/logdir #使用logsave保存logfile logsave/tmp/logdir/logfilebash-c"sleep2;date" #创建logdir mkdir/tmp/logdir echo查看logfile是否生成: ls-l/tmp/logdir echo等待2s后: sleep2 echo再次查看logfile是否生成: ls-l/tmp/logdir echo查看logfile的内容: cat/tmp/logdir/logfile
2018年05月14日星期一16:31:44CST 查看logfile是否生成: 总用量0 等待2s后: 再次查看logfile是否生成: 总用量4 -rw-r--r--1lujun9972lujun99721415月1416:31logfile 查看logfile的内容: Logofbash-csleep2;date MonMay1416:31:422018 2018年05月14日星期一16:31:44CST MonMay1416:31:442018 ----------------
从中可以看到:
- 虽然一开始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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。