Portál AbcLinuxu, 7. května 2025 21:42
#!/bin/bash q=lsof | grep mpg123 for i in q do killall mpg123 sleep 0.1 doneKdyž do terminálu zadám lsof | grep mpg123 vypíše se tak 30 řádků.... Když spustim ten script, tak se killne jen jeden proces, proč? Díky
lsof
je list open files, potřebujete třeba pidof mpg123
, ten vám vypíše process ids spuštěných mpg123
. Spočtete je třeba pidof mpg123 | wc -w
. Ale vlastně to vůbec nepotřebujete, protože příkaz killall mpg123
zabije všechny spuštěné mpg123, krom těch na které zrovna defaultní signál -TERM který killall nestačí, ale to jsou výjmečné případy. Podobně můžete pro vypsání použít třeba pgrep
(processes grep) který je mocnější a má víc přepínačů, a taky pkill
který funguje podobně jako killall
ale častěji ho použijte spíš na Mac OS, linuxáci spíš killují-all.
man pkill
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.