linux日志添加到文件,关于linux:将变量中的内容追加到日志文件中
我有一個腳本,并嘗試將我的變量中的內(nèi)容附加到.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
如果在變量中捕獲命令輸出的唯一原因是日志記錄,則可以通過重定向到日志文件而不捕獲輸出來進(jìn)一步簡化。
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"
您甚至可以先重定向,根據(jù)您的喜好,它可能更清潔:
>"$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}'
這個答案假設(shè)您的命令實際上有效(我還沒有測試過它們)。
非常感謝幫助伙伴,這樣做了,解釋也很棒!
以下應(yīng)該有效:
#!/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中,則應(yīng)該在$()或``中對命令進(jìn)行舍入。但是,現(xiàn)在不推薦使用嚴(yán)重重音符。
此外,使用cat / dev / null>在Linux中清空文件基本上與使用>的結(jié)果基本相同
至于您遇到的問題,請注意在任何單詞之前附加$基本上會使腳本/命令查找具有此類名稱而不是文件名的變量。
問候
非常感謝!
嘗試在systemstatus之前刪除$
鍵入$systemstatus時,它表示名為"systemstatus"的變量,而不是systemstatus文件。
我想OP在當(dāng)前目錄中創(chuàng)建了一個文件.log
非常感謝!
總結(jié)
以上是生活随笔為你收集整理的linux日志添加到文件,关于linux:将变量中的内容追加到日志文件中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个神奇的测试_这4个在线黑科技工具拥有
- 下一篇: 管理系统 c++图形界面_锁螺母ERP系