/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Script til at stoppe en process
Fra : Thomas Due


Dato : 21-11-02 08:35

Hejsa,

Jeg er ved at udvikle en række programmer til Linux. I den forbindelse har
jeg et mindre problem.
Et af programmerne skal køres fra logon (muligvis som daemon). Jeg har
formået at få programmet til at stoppe korrekt, hvis jeg sender den
et -sigquit signal.

Men det er jo da en lidt besværlig process. Først en ps, find processen, og
send kill signalet til det rette process id.
Kan dette ikke automatiseres via et script. F.eks. at scriptet foretager en
ps|grep og så selv "klipper" process id'en ud, og sætte den ind efter en
"kill -sigquit" kommando.

Jeg har absolut ingen forstand på scripting selv, og jeg har ikke rigtig
tiden pt. til at forsøge at sætte mig ind i det.

Hvis der er en venlig sjæl som forstår mig (jeg ved godt at jeg kan være
kryptisk) og som kan give mig et eksempel, eller måske endda et færdigt
script, vil jeg være meget taknemlig.

På forhånd tak,

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



 
 
Niels Andersen (21-11-2002)
Kommentar
Fra : Niels Andersen


Dato : 21-11-02 09:46

Thomas Due wrote in <ari2af$lem$1@sunsite.dk>:
> Jeg har
> formået at få programmet til at stoppe korrekt, hvis jeg sender den
> et -sigquit signal.
[...]
> Først en ps, find processen,
> og send kill signalet til det rette process id.

Meget meget simpelt, men jeg vil tro det virker:

Start:
#!/bin/sh
xlogo&
echo $! > /var/run/xlogo.pid

Stop:
#!/bin/sh
kill -3 `cat /var/run/xlogo.pid`

Der er dog mange svagheder ved så simple scripts.

I min Debian Linux ligger der en masse scripts i /etc/init.d som er beregnet
til at starte og stoppe daremons. fx:
/etc/init.d/apache start
Dem kan man lære en masse af at studere.

En af filerne hedder "skeleton". Den kan du bare kopiere, og så tilpasse din
kopi. Hvis du er heldig skal du bare ændre navnet på det program, du vil
starte og stoppe. :)

--
Mvh.

Niels Andersen
Linux 2.4.18 - Debian testing/unstable


Martin Christensen (21-11-2002)
Kommentar
Fra : Martin Christensen


Dato : 21-11-02 16:48

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Niels Andersen <niels-usenet@myplace.dk> writes:

> Start:
> #!/bin/sh
> xlogo&
> echo $! > /var/run/xlogo.pid

Hmm... echo $!... den var ny for mig. Har jeg ret i, at variablen
$! gemmer PID på den sidst startede underprocess i samme shell?

>
> Stop:
> #!/bin/sh
> kill -3 `cat /var/run/xlogo.pid`

Tilfør derefter 'rm /var/run/xlogo.pid' for en god ordens skyld. Det
er ikke bydende nødvendigt, men det er altid godt at rydde op efter
sig selv.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj3dACwACgkQYu1fMmOQldVANgCfdcfWvhwxeTrl4aRPRJ5bvuQP
qAgAnijPSZSUq+L7BRKYKZV7BcXHyg5f
=MTKP
-----END PGP SIGNATURE-----

Thorbjoern Ravn Ande~ (21-11-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 21-11-02 09:48

"Thomas Due" <t.due@scanvaegt_REMOVE_.dk> writes:

> Kan dette ikke automatiseres via et script. F.eks. at scriptet foretager en
> ps|grep og så selv "klipper" process id'en ud, og sætte den ind efter en
> "kill -sigquit" kommando.

Kig på "killall".
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk - Unix, Java, Web, Netværk, Århus

Martin Christensen (21-11-2002)
Kommentar
Fra : Martin Christensen


Dato : 21-11-02 16:55

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Thomas Due" <t.due@scanvaegt_REMOVE_.dk> writes:

> Men det er jo da en lidt besværlig process. Først en ps, find processen, og
> send kill signalet til det rette process id.
> Kan dette ikke automatiseres via et script. F.eks. at scriptet foretager en
> ps|grep og så selv "klipper" process id'en ud, og sætte den ind efter en
> "kill -sigquit" kommando.

Andre har allerede forslået bedre løsninger, men for den almene
oplysnings skyld, vil jeg da lige fortælle, at du kan bruge kommandoen
'cut' til at manipulere kolonnedata med. Eksempel:

% yes >/dev/null &
[1] 2626
% ps | grep yes | cut --fields=2 --delimit=" "
2626
% ps | grep yes | cut --fields=2 --delimit=" " | xargs kill -3
[1] + quit yes > /dev/null

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAj3dAekACgkQYu1fMmOQldVLlgCgrr7HSwlo7j5QTDjSW1VNGWDz
wXsAn17WqmPWuULo+MzR4Z4/KWAgPaE9
=vEhu
-----END PGP SIGNATURE-----

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408871
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste