linux日志添加到文件,关于linux:将变量中的内容追加到日志文件中

我有一个脚本,并尝试将我的变量中的内容附加到.log文件。 我在另一篇文章中看到了(如何通过命令行将变量文本附加到文件的最后一行?),你可以使用echo"$(cat $ FILE)$ APPEND"> $ FILE来完成。 我尝试这样做,它能够无错误地运行我的脚本,并通过终端提供我需要的答案,但它不会将其附加到我的日志文件中。 任何人都可以给我任何指示?

#!/bin/bash

mdate=echo date

mcpu=echo $[100-$(vmstat 1 2 |tail -1|awk ‘{print $15}’)]%

mmem=free | grep Mem | awk ‘{print $3/$2 * 100.0}’

sudo cat /dev/null > /home/daniel/systemstatus.log

echo"$(cat $systemstatus.log)$mdate">> $systemstatus.log

echo"$(cat $systemstatus.log)$mcpu">> $systemstatus.log

echo"$(cat $systemstatus.log)$mmem">> $systemstatus.log

您的代码需要多次修改,您无法按照您尝试的方式使用命令输出分配变量,您需要使用命令替换(var=$(command)):

mdate=$(date)

mcpu=$(( 100 - $(vmstat 1 2 | tail -1| awk '{print $15}') ))

mmem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

您的帖子包含对shell无效的引号。使用单引号'或双引号"(每个都有其目的)。

但是记录部分比你想象的要简单

logfile=/home/daniel/systemstatus.log

echo"$mdate">"$logfile"  # Overwrites the previous log file

echo"$mcpu"  >>"$logfile" # Appends to the log file

echo"$mmem"  >>"$logfile" # Appends to the log file

如果在变量中捕获命令输出的唯一原因是日志记录,则可以通过重定向到日志文件而不捕获输出来进一步简化。

date >"$logfile" # Overwrites the previous log file

echo $(( 100 - $(vmstat 1 2 | tail -1| awk '{print $15}') )) >>"$logfile"

free | grep Mem | awk '{print $3/$2 * 100.0}' >>"$logfile"

您甚至可以先重定向,根据您的喜好,它可能更清洁:

>"$logfile"  date # Overwrites the previous log file

>>"$logfile" echo $(( 100 - $(vmstat 1 2 | tail -1| awk '{print $15}') ))

>>"$logfile" free | grep Mem | awk '{print $3/$2 * 100.0}'

这个答案假设您的命令实际上有效(我还没有测试过它们)。

非常感谢帮助伙伴,这样做了,解释也很棒!

以下应该有效:

#!/bin/bash

mdate=$(echo date)

mcpu=$(echo $[100-$(vmstat 1 2 |tail -1|awk '{print $15}')]%)

mmem=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

>/home/daniel/systemstatus.log

echo"$(cat $systemstatus.log)$mdate">> systemstatus.log

echo"$(cat $systemstatus.log)$mcpu">> systemstatus.log

echo"$(cat $systemstatus.log)$mmem">> systemstatus.log

请注意,如果您希望将命令的输出存储在bash中,则应该在$()或``中对命令进行舍入。但是,现在不推荐使用严重重音符。

此外,使用cat / dev / null>在Linux中清空文件基本上与使用>的结果基本相同

至于您遇到的问题,请注意在任何单词之前附加$基本上会使脚本/命令查找具有此类名称而不是文件名的变量。

问候

非常感谢!

尝试在systemstatus之前删除$

键入$systemstatus时,它表示名为"systemstatus"的变量,而不是systemstatus文件。

我想OP在当前目录中创建了一个文件.log

非常感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么linux远程一进入sudo su就卡住_Linux 实战(上)

什么是LinuxLinux有两种含义:一种是 Linus 编写的开源操作系统的内核另一种是广义的操作系统服务器端通常强调稳定性,不需要像客户端那样华丽的图形界面。2. Linux 内核版本和常见发行版内核版本:https://www.kernel.org/内核版本分 主版本号…

JavaScript中的运算符和语句

一、JavaScript的运算符 a、基本的算术运算符(、-、*、/、%) -、*、/、%运算符会在必要的时候将操作数转换为数字,无法转换成数字的操作数将会转换成NaN,相应的运算结果也是NaN。 JavaScript中所有的数都是浮点型的,所以除法的运算…

linux运行好麻烦,解析用Linux非常困难、必须用命令行、很老又丑陋及无法运行游戏...

很多刚接触Linux的人都有四大疑问:使用Linux非常困难、在Linux中,您必须使用命令行、Linux很老又丑陋、Linux无法运行计算机游戏,本文为您解析,打消您对Linux的误解。前言对于许多人来说,Linux是一个可怕的操作系统&am…

深度学习未来的三种范式

来源:AI前线作者:Andre Ye译者:平川策划:陈思深度学习是一个广阔的领域,它围绕着一种形态由数百万甚至数十亿个变量决定并不断变化的算法——神经网络。似乎每隔一天就有大量的新方法和新技术被提出来。不过&#xff0…

python中使用什么导入模块-python—模块导入和类

1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7 In [2]: sys.path Out[2]: ["", "/usr/bin", "/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg&qu…

linux du 文件大小排序,du命令 实现Linux 某个文件夹下的文件按大小排序

1. df -lh2. du -s /usr/* | sort -rn这是按字节排序3. du -sh /usr/* | sort -rn这是按兆(M)来排序4.选出排在前面的10个du -s /usr/* | sort -rn | head5.选出排在后面的10个du -s /usr/* | sort -rn | taildu -h –-max-depth0 userdu -sh –-max-depth2 | more本文具体介绍…

Nature重磅:软硬分离、图灵完备,清华首次提出“类脑计算完备性”

来源 | 清华大学计算机系校友会北京时间10月14日,清华大学计算机科学与技术系(以下简称“计算机系”)张悠慧团队、精密仪器系(以下简称“精仪系”)施路平团队与合作者在《Nature》杂志发文,首次提出“类脑计…

Linux sublime设置中文,CentOS 8.1下Sublime Text 3设置中文与Python环境

Sublime Text是一个跨平台的源代码编辑器,设计简单,速度快,支持许多编程语言和标记语言,你可以使用数千个可用于安装的插件,在RHEL 8/CentOS 8上的Sublime Text 3上解锁更多功能,本文假设你已在CentOS/RHEL…

java 正则首位8或者9的8位数字_从零开始学Python - 第025课:正则表达式的应用

正则表达式相关知识在编写处理字符串的程时,经常会遇到在一段文本中查找符合某些规则的字符串的需求,正则表达式就是用于描述这些规则的工具,换句话说,我们可以使用正则表达式来定义字符串的匹配模式,即如何检查一个字…

c# 后台 添加datable 数据

public void AddRows(HtmlTable table(表名),DataTable dt(数据源), string i(自增长)){int j int.Parse(i);HtmlTableRow tr0 new HtmlTableRow();HtmlTableCell tc new HtmlTableCell();tc.Attributes…

蝴蝶扇了一下翅膀,混沌就诞生了

科学无国界我们是知识的搬运工认真阅读下面的文章,并思考文末互动提出的问题,严格按照 互动:你的答案 格式在评论区留言,就有机会获得由四川人民出版社提供的优质科普书籍《未来科学简史》一本。我们耳熟能详的“蝴蝶效应”&#…

前端八股文(js篇 )

目录 一.防抖,节流是什么,如何实现? 二.介绍下Set,Map,WeakSet和WeakMap的区别 三.setTimeout,Promise,Async/Await的区别 四.简述同步和异步的区别 五.怎么添加,移除,复制,创建…

linux定时器错误使用,linux下定时器的使用

Linux下定时器的使用主要用到两个函数:setitimer()和getitimer();注意:setitimer()一个进程中只能有一个,下一个会覆盖前一个的定时。Linux系统给每个进程提供了3个定时器,每个定时器在各自不同的域里面计数,当任何一个…

native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理

​前言Python项目的路径管理是一个让人头疼的问题。在写python项目的时候,明明 import了文件A,代码运行时却收到 ModuleNotFoundError,仔细一看,是引用路径不对,很是气人。又或者,当项目中出现了重名的pack…

前沿研究:21世纪工程领域的重大挑战 | 中国工程院院刊

本文选自中国工程院院刊《Engineering》2020年第7期作者:C.D. Mote Jr.来源:Engineering in the 21st Century: The Grand Challenges and the Grand Challenges Scholars Program[J].Engineering,2020,6(7):728-732.编者按近期,中国工程院外…

01-python中字符串的常见操作

(1)find 检测str是否包含在myStr中,如果存在则返回开始的索引值,否则返回-1。 In [1]: myStr "hello world tairan and tairanCity."In [2]: str "tairan"In [3]: myStr.find(str) Out[3]: 12In [7]: str …

centos双系统只有linux,Centos添加Windows/Centos双系统启动

1 在/etc/boot/gurb2/grub.cfg中### END /etc/grub.d/00_header ### 后添加:### BEGIN /etc/grub.d/30os_prober ###menuentry Windows 10(loader)(on /dev/sda1){insmod part_msdosinsmod ntfsset roothd0,msdos1chainloader 1}### END /etc/grub.d/30os_prober #…

linux网站目录在哪_果核建站教程【二】环境安装与搭建第一个网站

有问题加群,一起讨论,一起学习群号:664592923昨天大家都能理解,那么今天我们就要进入实战教程咯。这节教程讲在本地搭建环境和安装程序。1本地环境的搭建之前有教程讲如何在Windows开启Linux系统,本来想直接让大家在Li…

北斗定位2.0版来了!普通人手机可用,全免费!

◎ 科技日报记者 张佳星1.0版解决快的问题,2.0版解决又快又准的问题,是1.0基础上的一个巨大升级!10月14日,在北斗卫星导航系统高峰论坛上,中国信息通信研究院(下简称“信通院”)发布了北斗高精度…

做出明智的决策

无处不在的决策 在我们的一生中,会做出无数的决定或决策,有关于个人生活的,也有工作专业相关的,这发生在我们的每一天中。在这些决策中,有一些无关紧要,有一些却会产生长期影响,乃至导致颠覆性的…