for a in /proc/[0-9]*; do echo -n "`basename $a` (`stat -c %U:%G $a`) "; cat $a/cmdline|tr "\0" " "; echo ; done|sort -n - lista procesów bez polecenia ps
tty1 · bash
$ for a in /proc/[0-9]*; do echo -n "`basename $a` (`stat -c %U:%G $a`) "; cat $a/cmdline|tr "\0" " "; echo ; done|sort -n
#Linux#Bash#DevOps#Recon
Czasem zdarza się tak, że posiadamy jakąś sesję na Linuksie, chcemy zobaczyć listę procesów i okazuje się, że nie ma polecenia ps. Jest to zupełnie częste w przypadku kontenerów Dockera, które nierzadko są mocno odchudzone. Analizując katalogi i pliki w /proc, możemy wyciągnąć informacje o procesach.
Nasz oneliner jest dość długi i wykorzystuje dodatkowo polecenia echo, basename, cat, tr, stat i sort, jednak spokojnie możemy zrezygnować z sortowania ( sort -n) czy pobierania informacji o użytkowniku i grupie ( stat -c %U:%G $a). W większości przypadków możemy również ominąć usuwanie zerowych bajtów ( tr "\0" " ").