Portál AbcLinuxu, 10. května 2025 00:19

Dotaz: kill viacnasobnej aplikacie

21.2.2011 19:45 marian34
kill viacnasobnej aplikacie
Přečteno: 266×
Odpovědět | Admin
Zdravim,potrebujem helfnut.Scrip na start(restart) aplikacie nefunguje.

#!/bin/sh

start() {

echo -n "Starting oscam"

/bin/oscam -b &

}

stop() {

echo -n "Stopping oscam"

#killall oscam 2>/dev/null

ps -u marian | grep -v grep | grep oscam | awk '{print $1}' | xargs kill -9

sleep 2

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo $"Usage: $0 {start|stop|restart}"

esac

exit

po restarte sa vykona len stop-kill aplikacie,ktora ma viac vlakien.Pokial bol v scripte aktivny killall,tak to fungovalo,no taketo zabitie procesu nebolo vzdy uspesne.

marian@marian-desktop:~$ oscam.sh restart
Stopping oscamKilled

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.2.2011 20:28 polymorf | skóre: 14 | blog: tar_zxpf
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ak sa ten tvoj skript vola oscam alebo ma oscam v nazve tak ho to tiez killne niekde uprostred kilovania ostatnych procesov
21.2.2011 21:01 marian34
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Presne tak covece,teraz mi to doslo.Diky moc.
21.2.2011 21:41 polymorf | skóre: 14 | blog: tar_zxpf
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Tak ma oznac ako riesenie, v ABC shope si za nasporene skore kupim hrncek.
21.2.2011 22:08 marian34
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
To by si mal lacny hrncek.
21.2.2011 21:07 eth4rendil | skóre: 13
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Odpovědět | | Sbalit | Link | Blokovat | Admin
skus to vymenit za
for i in $(ps -u marian | grep [o]scam | awk '{print $1}'); do
        kill -9 $i
done
21.2.2011 22:06 marian34
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
V com je rozdiel oproti pôvodnemu zapisu?Napr. to [o]scam,to mi hlava nebere.
21.2.2011 22:39 eth4rendil | skóre: 13
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
mno mne sa for zda trochu "istejsie".. [o]scam - posluzi ako grep -v grep...
21.2.2011 23:00 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Pomocí ps se vám vypisují spuštěné procesy a to je i ten samotný grep.
Takže ps ... | grep "neco" Vám může vyhledat sám sebe.
A ps ... | grep "[n]eco" už nemůže, bo [n] je množina povolených znaků a v tomto případě je '[n]' to samé co 'n' - "[n]eco" se hledá jednoduše výskyt "neco", ale ve výpisu procesů sám grep figuruje jako "[n]eco", takž sám sebe nenajde - ¡HA! :).
Zkuste si několikrát po sobě ps -ef | grep x a určitě tam někdy přibude i ten samotný grep (a někdy zas ne) :).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
21.2.2011 22:41 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim, slo by aj takto.

#!/bin/bash
OWNER='marian'

start() {
echo -n "Starting oscam"
/bin/oscam -b &
}

stop() {
echo -n "Stopping oscam"
# nastavi lokalne IFS na novy riadok, aby sa bral riadok ako celok, nie jeho prvky osve
local IFS=$'\n'
for PROC in $(ps -u "${OWNER}")
do
# ostane len posledny stlpec z kazdeho riadku ps -u, co je nazov procesu
if [[ ${PROC##*[[:space:]]} == oscam ]]
then
# ostane len prvy stlpec z ps -u, co je cislo procesu
kill -9 "${PROC%%[[:space:]]*}"
fi
done
}

case "${1}" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
;;
esac

exit
21.2.2011 22:44 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: kill viacnasobnej aplikacie
Odpovědět | | Sbalit | Link | Blokovat | Admin

Oprava.

#!/bin/bash
OWNER='marian'

start() {
echo -n "Starting oscam"
/bin/oscam -b &
}

stop() {
echo -n "Stopping oscam"
# nastavi lokalne IFS na novy riadok, aby sa bral riadok ako celok, nie jeho prvky osve
local IFS=$'\n'
for PROC in $(ps -u "${OWNER}")
do
	# ostane len posledny stlpec z kazdeho riadku ps -u, co je nazov procesu
	if [[ ${PROC##*[[:space:]]} == oscam ]]
	then
		# ostane len prvy stlpec z ps -u, co je cislo procesu
		kill -9 "${PROC%%[[:space:]]*}"
	fi
done
}

case "${1}" in
	start)
		start
	;;
	stop)
		stop
	;;
	restart)
		stop
		start
	;;
	*)
		echo "Usage: ${0} {start|stop|restart}"
	;;
esac

exit

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.