Portál AbcLinuxu, 7. května 2025 21:42

Dotaz: Bash - for

poky74 avatar 18.6.2009 19:52 poky74 | skóre: 36 | blog: Zápisník | Vrchlabí
Bash - for
Přečteno: 674×
Odpovědět | Admin
Ahoj, chtěl jsem si naprogramovat (sbastlit) skript, kterej by mi zjistil, kolikrát je mpg123 spuštěné... A tolikrát ho killnout, napsal jsem tohle:
#!/bin/bash
q=lsof | grep mpg123
for i in q
do 
  killall mpg123
  sleep 0.1
done
Když 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
Chcete Linuxové samolepky nebo Tuxe na klíče? ->
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.6.2009 20:07 mich | skóre: 16
Rozbalit Rozbalit vše Re: Bash - for
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když zavoláš killall mpg123, zabiješ všechny procesy s tím jménem, takže netřeba volat tolikrát, kolikrát je ten přehrávač spuštěný. lsof nelistuje procesy, k tomu slouží ps.
je to teď v módě, na žive o tom furt píšou
18.6.2009 23:53 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Bash - for
Odpovědět | | Sbalit | Link | Blokovat | Admin
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.
19.6.2009 07:04 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Bash - for
Odpovědět | | Sbalit | Link | Blokovat | Admin
man pkill

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.