FreeBSD имеет SMP, который дружественное ядро с несколькими потоками выполнения и многими частями ядра может выполнить независимый, и это поддерживает вытеснение.
NetBSD работал над тем же самым много лет. DragonFly BSD, запущенный на работе (от FreeBSD4) и передача сообщений использования, и т.д.
OpenBSD и MirBSD не имеют полной ГИГАНТСКОЙ блокировки, бесплатные реализации SMP для их ядер и последнего не хотят когда-либо делать это.
MidnightBSD является в основном тем же как FreeBSD 7.
Я не думаю, что существует простой способ агрегировать данные, которые Вы хотите, но Вы могли придерживаться, набор команд вместе затем передают его по каналу ко что. Я провел определенное время для предложения примера.
{
printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg)
printf '%s' '"],"net":{'
tail -n+3 /proc/net/dev|awk -F' ' '{
gsub(/:/,"");
printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13
}'|sed 's/,$//'
printf '%s' '},"mem":{'
grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'
printf '%s' '}}'
}
Вы могли хлюпать он вниз в это:
{ printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg); printf '%s' '"],"net":{'; tail -n+3 /proc/net/dev|awk -F' ' '{ gsub(/:/,""); printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13 }'|sed 's/,$//'; printf '%s' '},"mem":{'; grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'; printf '%s' '}}'; }
Это должно произвести некоторый (допустимый) JSON, который похож на это:
{"load":["0.00","0.01","0.05"],"net":{"lo":{"rxbytes":"2524231953","rxpackets":"1381864","rxerrs":"0","rxdrop":"0","txbytes":"2524231953","txpackets":"1381864","txerrs":"0","txdrop":"0"},"eth0":{"rxbytes":"2093914043","rxpackets":"2859952","rxerrs":"0","rxdrop":"0","txbytes":"1774385937","txpackets":"1485252","txerrs":"0","txdrop":"0"}},"mem":{"memtotal":"1692584","memfree":"20248","swaptotal":"917500","swapfree":"916288"}}
Вы могли затем добавить | whatever
после завершения, изогнутого для передачи по каналу его, ко что.
Вы могли бы хотеть изучить i3status. Это действительно не разработано с этой целью, но это кажется, что выполнило бы Ваши требования вполне приятно.