我正在尝试记录一些数据,第一个是cpu核心和内存的数量。如何将CPU写入第一列,将内存写入第二列?
#!/bin/bash
while true;
do nproc >> system.log & free -m | grep Mem: | awk '{print $2}' >> system.log
sleep 5
done
SYSTEM.LOG:
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
1
1246
我希望它看起来像这样:
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
答案 0 :(得分:0)
这将是最简单的
$ pr -2ats' ' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
或类似地
$ paste -d' ' - - <file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
和强制性awk
解决方案
$ awk 'ORS=NR%2?FS:RS' file
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246 1
1246
与您的脚本结合
... grep Mem: | awk '{ORS=NR%2?FS:RS; print $2}'
答案 1 :(得分:0)
你可以这样做:
#!/bin/sh
while true;
do
echo "`nproc` `free -m | grep Mem: | awk '{print $2}'`" >> system.log
sleep 5
done
答案 2 :(得分:0)
使用GNU bash:
printf "%s %s\n" $(< file)
答案 3 :(得分:0)
尝试一下:
#!/bin/bash --
while true; do
printf "%s %s\n" $(nproc) "$(free -m | grep Mem: | awk '{print $2}')" >> system.log
sleep 5
done
测试:
$ chmod +x log_monitor.sh
$ ./log_monitor.sh
^C
$ cat system.log
8 16082
8 16082
8 16082
8 16082
8 16082