写入两列

Write to two columns

我正在尝试记录一些数据,第一个是 cpu 内核和内存的数量。如何将 CPU 写入第一列并将内存写入第二列?

#!/bin/bash

    while true;
            do nproc >> system.log & free -m | grep Mem: | awk '{print }' >> 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

这将是最简单的

$ 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 }'

你可以这样做:

#!/bin/sh

while true;
do
    echo "`nproc`  `free -m | grep Mem: | awk '{print }'`" >> system.log
    sleep 5
done

使用 GNU bash:

printf "%s %s\n" $(< file)

试一试:

#!/bin/bash --
while true; do
        printf "%s %s\n" $(nproc) "$(free -m | grep Mem: | awk '{print }')" >> 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