atq
перечисляет задания по перечислению каталога, содержащего их , без сортировки; поэтому задания в конечном итоге перечислены в порядке каталога.
Вы увидите тот же порядок с
sudo ls -lU /var/spool/at
(или /var/spool/cron/atjobs
для других читателей в системах на основе Debian -).
Если вы собираетесь запускать это на регулярной основе, я бы посоветовал вам создать небольшой скрипт для управления генерацией данных. Он гораздо более удобочитаем -и, следовательно, удобен в сопровождении.
#!/bin/bash
#
cpu=$(LC_ALL=C top -bn1 -p0 | awk '/^%Cpu/{print 100-$8}')
mem=$(free -m | awk '/^Mem:/{printf("%3.1f\n", $3/$2 *100)}')
dsk=$(df -h / | awk '$NF=="/"{print $(NF-1)+0}')
printf '{"CPU": "%3.1f", "RAM": "%3.1f", "HDD": "%3.1f"}\n' $cpu $mem $dsk
exit 0
Пример
./546179.sh
{"CPU": "53.7", "RAM": "49.3", "HDD": "46.0"}
Если вы действительно хотите разбить все это в одну строку, это достаточно просто сделать, но полученный код практически нечитаем
Пример
printf '{"CPU": "%3.1f", "RAM": "%3.1f", "HDD": "%3.1f"}\n' $(LC_ALL=C top -bn1 -p0|awk '/^%Cpu/{print 100-$8}') $(free -m|awk '/^Mem:/{printf("%3.1f\n",$3/$2*100)}') $(df -h /|awk '$NF=="/"{print $(NF-1)+0}')
{"CPU": "53.7", "RAM": "49.3", "HDD": "46.0"}