alphasec
Bash / Unix protip 0063
in 𝕏

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" " ").

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

Przydatne linki

tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html dokumentacja /proc web ↗
← poprzedni protip 0062 ••• Wszystkie protipy następny → protip 0064
// subskrybuj

Nowe protipy prosto na maila.

Mięsiste jednolinijkowce i triki z prawdziwych zleceń. Zero spamu, zero teorii. Wypisujesz się jednym kliknięciem.

wersja newslettera: