Hilfe zum Thema kill prozesse

Michi0209

Michi0209

Mitglied
Hallo zusammen,

ich habe folgendes Problem. Damit mein Dongel unter Parallels läuft habe ich herausgefunden, das ich den entsprechenden Prozess "aksusbd" beenden muß. Nun wollte ich ein kleines Script schreiben, das mir diese Aufgabe abnimmt!

Hier als mein Ansatz:
Code:
#!/bin/sh
export LC_ALL=de_DE.ISO8859-1

MYID=$(ps ax|grep -m1 "aksusbd"|cut -d' ' -f2); 

echo "ID $MYID aktuell";

if [ -z $MYID ]
then
echo "Programm läuft nicht wird gestartet";
	/usr/libexec/aksusbd
else
	echo "Programm läuft mit ID $MYID und wird gekillt";
	kill $MYID;
	unset $MYID;
fi

Das killen des Prozesses scheint wohl ansich zu funktionieren, jedoch erhalte ich trotzdem folgende Fehlermeldung:

Code:
ID 2445 aktuell
Programm l?uft mit ID 2445 und wird gekillt
/Users/Michael/ShellScript/beenden: line 15: unset: `2445': not a valid identifier

und wenn ich das script nochmal aufrufe, um den prozess wieder zu starten, dann kommt das hier:


Code:
ID 2458 aktuell
Programm l?uft mit ID 2458 und wird gekillt
/Users/Michael/ShellScript/beenden: line 14: kill: (2458) - No such process
/Users/Michael/ShellScript/beenden: line 15: unset: `2458': not a valid identifier

Er behauptet das der Prozess immernoch am laufen ist, obwohl es nicht mehr in der Aktivitäts-Anzeige gelistet wird!!

Jemand eine Idee, was ich da machen kann???


Danke für jede Hilfe!


Michael
 
Klar, du speicherst ja die Prozess-ID unter $MYID.
ein unset $MYID macht daraus das gleiche wie
Code:
unset 2445

und 2445 gibts logischerweisse nicht.... Was du willst ist ein
Code:
unset MYID

Code:
#!/bin/sh
export LC_ALL=de_DE.ISO8859-1

MYID=$(ps ax|grep -m1 "aksusbd"|cut -d' ' -f2); 

echo "ID ${MYID} aktuell";

if [ -z ${MYID} ]
then
echo "Programm läuft nicht wird gestartet";
	/usr/libexec/aksusbd
else
	echo "Programm läuft mit ID $MYID und wird gekillt";
	kill ${MYID};
	unset MYID;
fi
 
Zuletzt bearbeitet:
Hallo, ja danke für die Antowort.. allerdings noch eine kleinigkeit:


durch:

Code:
MYID=$(ps ax|grep -m1 "aksusbd"|cut -d' ' -f2);

sollte ich doch eigentlich die P ID erhalten. Allerdings ist die Variable wenn ich sie mit

Code:
echo "ID ${MYID} aktuell";

ausgebe immer leer! Und somit versucht das script den prozess immer wieder aufzurufen. ob wohl dieser schon gestartet ist!

was ich nun ausprobiert habe:


Code:
#!/bin/sh
export LC_ALL=de_DE.ISO8859-1

clear;

org=$(ps ax|grep "aksusbd");
echo "Orginal: ${org}";

ohne=$(ps ax|grep "aksusbd"|head -1);
echo "Ohne Cut: ${ohne}"; 

neu=$(ps ax|grep -m1 "aksusbd"|head -1|cut -d' ' -f2);
echo "Mit Cut: ${neu}";

und das hier ist das ergebniss:

Code:
Orginal:   936  ??  S      0:00.02 /usr/libexec/aksusbd
 1613  p1  R+     0:00.00 grep aksusbd
Ohne Cut:   936  ??  S      0:00.02 /usr/libexec/aksusbd
Mit Cut:

Kann mir jemand sagen, warum die Variable $neu leer ist????
 
Du kannst das Ganze noch etwas einfacher gestalten und gleichzeitig noch auf Zombie-Prozesse prüfen:

Code:
        tPIDsStr=`ps -C aksusbd | awk '{print $1}'`
	# prints out for example:
	#PID
	#7488
	#7862
        tPIDsArr=($tPIDsStr)
        # start at index 1 to omit "PID"
        for x in $(seq 1 $((${#tPIDsArr[@]} - 1)))
                do
                kill -9 ${tPIDsArr[$x]}
                done
 
hm, habe ich gerade in script kopiert und erhalt einen Fehler:

line 1: seq: command not found.


Außerdem möchte ich das schon lieber auf die "andere" art machen, da ich somit auch gleich den fall abdecke, daß wenn der Prozess nicht aktiv ist, ich diesen starte.....
 
Deine Bash kennt kein "seq"?

Sehrrrrr merkwürdig.
 
schon, oder??

keine ahnung wieso??

mein system: iMac 10.4.10
 
Arghh,

nicht drauf geachtet, das wir uns MAC-Subforum befinden.

Dazu kann ich dann leider nichts mehr sagen.....
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Prozess aus eigenem Init script wird gekillt

Problem mit Apache2 + MySQL Server

Ubuntu X / dbus problem

Habe da ein Problem was nicht wegbekomme

Zurück
Oben