内存剩余Shell并输出结果到/var/system/system.log文件下,格式为[日期] 内存剩余:相关数据
时间: 2024-09-26 11:12:12 浏览: 34
在Linux系统中,你可以使用`free`命令来获取内存信息,并通过管道(`|`)将其输出到`logger`或者`syslog`命令来记录到指定的日志文件中。下面是一个示例脚本:
```bash
#!/bin/bash
# 获取内存剩余信息
mem_info=$(free -m | grep Mem)
# 提取需要的部分
date=$(date +%Y-%m-%d\ %H:%M:%S)
remaining_memory=$(echo $mem_info | awk '{print $3/$2 * 100.0}')
# 将结果格式化并写入日志文件
echo "[${date}] 内存剩余:$remaining_memory%" >> /var/log/system.log
# 检查是否成功写入
if [ $? -eq 0 ]; then
echo "内存剩余信息已成功写入到/var/log/system.log"
else
echo "写入日志失败,检查权限或文件路径"
fi
```
运行这个脚本后,它会在`/var/log/system.log`中添加一行类似 `[2023-04-01 12:00:00] 内存剩余:XX.XX%` 的记录,其中XX.XX%是当前内存剩余百分比。
相关问题
CPU负载Shell并输出结果到/var/system/system.log文件下,格式为[日期] CPU负载 :相关数据
在Linux系统中,你可以通过`top`命令获取CPU负载信息,并使用`logger`或者`echo`命令将其输出到指定的日志文件中。这里是一个简单的步骤示例:
首先,打开终端并运行`top`命令获取实时的CPU负载数据,按`q`退出全屏模式并显示最后一次的负载平均值(通常是第三列)。
```sh
top -b -n 1 | awk '{print "[现在时间]" $3}'
```
然后,将上述命令的结果输出到`/var/system/system.log`文件中。这里假设`nowtime`代表当前时间,替换为实际的获取方式。注意,由于权限限制,直接写入系统日志文件可能需要root权限。
```sh
nowtime=$(date "+%Y-n 1 | awk '{print $3}') && echo "$nowtime CPU负载: $load_avg" >> /var/system/system.log
```
如果你没有root权限,可以尝试创建一个有写权限的临时目录,并将日志写入那里:
```sh
temp_dir=$(mktemp -d) && echo "$nowtime CPU负载: $load_avg" > $temp_dir/load_info.txt && sudo mv $temp_dir/load_info.txt /var/system/system.log
```
最后别忘了清理临时目录:
```sh
sudo rm -r $temp_dir
```
执行以上命令后,你应该会在`/var/system/system.log`文件中看到类似 `[现在时间] CPU负载 : [负载值]` 的记录。
网卡流量Shell并输出结果到/var/system/system.log文件下,格式为[日期] 网卡流量 :TX RX 其中TX后接输出流量,RX后接输入流量
在Linux系统中,你可以使用`ifstat`或`ethtool`命令来监控网卡流量,并通过shell脚本来将结果输出到指定的系统日志文件中。这里提供一种使用`ethtool`命令的方式,因为`ifstat`并不直接支持按时间戳输出。
首先,创建一个shell脚本(例如:net_traffic.sh),内容如下:
```bash
#!/bin/bash
# 定义要监控的网卡名,例如eth0或enp0s3
NIC_NAME="eth0" # 需要替换为你实际的网卡名称
# 获取当前日期
DATE=$(date +%Y-%m-%d\ %H:%M:%S)
# 使用ethtool获取流量信息
TX_RX_OUTPUT=$(ethtool -i $NIC_NAME | grep "Speed" | awk '{print $2}')
# 将数据格式化并输出到日志文件
echo "[${DATE}] ${NIC_NAME} 流量 : TX ${TX_RX_OUTPUT#* } RX $(echo "$TX_RX_OUTPUT" | cut -d ' ' -f 2)" >> /var/log/system/system.log
# 显示在终端上
echo "[${DATE}] ${NIC_NAME} 流量 : TX ${TX_RX_OUTPUT#* } RX $(echo "$TX_RX_OUTPUT" | cut -d ' ' -f 2)"
```
然后给予脚本执行权限:
```bash
chmod +x net_traffic.sh
```
最后,定期运行该脚本,可以设置cron任务或其他定时工具。例如,每天凌晨1点运行一次:
```bash
crontab -e
添加一行:
0 1 * * * /path/to/net_traffic.sh
```
请注意,你需要将`NIC_NAME`替换为你实际的网卡名称,且确保`/var/log/system/system.log`路径存在且有适当的权限。
阅读全文