Companheiros faucadores
Estou brincando com um forro que desenvolvi em uma caixa RHEL 5.4 e funciono perfeitamente:
TOTAL_RAM='free | grep Mem: | awk '{ print $2 }''; \
ps axo rss,comm,pid | awk -v total_ram=$TOTAL_RAM \
'{ proc_list[$2] += $1; } END { for (proc in proc_list) \
{ proc_pct = (proc_list[proc]/total_ram)*100;
printf("%d\t%s\t%0.2f%\n", proc_list[proc],proc,proc_pct); }}' \
| sort -n | tail -n 10
Qual saída é algo como o seguinte na minha caixa de RHEL:
3736 logmon 0.01%
4156 EvMgrC 0.01%
4692 hald 0.01%
5020 ntpd 0.02%
6252 sshd 0.02%
7784 cvd 0.02%
9224 snmpd 0.03%
13068 dsm_sa_datamgr3 0.04%
23320 dsm_om_connsvc3 0.07%
4249864 mysqld 12.90%
No entanto, no meu Ubuntu 9.04 eu recebo isso:
awk: run time error: not enough arguments passed to printf("%d %s %0.2f%
")
FILENAME="-" FNR=104 NR=104
33248 console-kit-dae 3.17
Eu acho que tem que ser o bash que está criando algo, mas eu realmente não estou fazendo nada que deva ser esse bash específico. A caixa RHEL está em execução:
# yum info bash | grep -e Version -e Release
Version : 3.2
Release : 24.el5
E a caixa do Ubuntu:
# apt-cache show bash | grep -e Version
Version: 3.2-5ubuntu1
Eu não mergulhei nisso profundamente, e pensei em fazer um ping para meus colegas johnnys para ver se você já se deparou com isso antes.
/ bow