zur Navigation

debianforum.de

die deutschsprachige Supportwebseite rund um das Debian-Projekt

Zum Inhalt


 
 
 
  • Foren-Übersicht ‹ Fortgeschrittene Themen ‹ Softwareentwicklung und -paketierung, Scripting

Hilfe für Kill -15 Script gesucht

Antwort erstellen
13 Beiträge • Seite 1 von 1

Hilfe für Kill -15 Script gesucht

Beitragvon clue am 21.02.2013 19:50:45

Hi!

Ich habe mein Home in einem Luks Container. Er wird automatisch beim Systemstart mounted und nachher wieder unmounted. Manchmal hängen aber noch Prozesse auf dem /home Verzeichnis. Ich beende sie mit
Code: Alles auswählen
kill -15 $(lsof -t /dev/mapper/home)
und hartnäckige mit -9.

Meine Fragen:

1) Wie kann ich meinem Script sagen, es möge doch erst warten ob die -15er Aktion Erfolg hatte und erst im Misserfolgsfall -9 machen?
2) Wie kann ich dem Skript sagen, es solle erst warten, bis -9 erfolgreich beendet ist und dann erst weitermachen?
Offenbarung 13 erfüllt sich gerade vor unseren Augen
clue
 
Beiträge: 782
Registriert: 08.07.2007 17:36:57
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 21.02.2013 20:56:35

Mit wait.

Code: Alles auswählen
pids="$(lsof -t /dev/mapper/home)"
kill -15 $pids
timeout 10 wait $pids


Aber 1. kann ich mir nicht so viele Prozesse vorstellen, die direkt auf das Device zugreifen, 2. hast du ein anderes Problem, wenn das so nötig ist. Was für Prozesse hängen da denn?
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon clue am 22.02.2013 12:31:36

EDIT

Ups, sry. Hab meine Antwort unten nochmal generalüberholt.
Zuletzt geändert von clue am 22.02.2013 13:19:52, insgesamt 2-mal geändert.
Offenbarung 13 erfüllt sich gerade vor unseren Augen
clue
 
Beiträge: 782
Registriert: 08.07.2007 17:36:57
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 22.02.2013 13:08:56

clue hat geschrieben:
Natureshadow hat geschrieben:Mit wait.

Code: Alles auswählen
pids="$(lsof -t /dev/mapper/home)"
kill -15 $pids
timeout 10 wait $pids
Cool, Danke! Werds sofort ausprobieren. Aber sach mal: Wenn -15 nicht funktioniert, wie kann ich dem Skript dann sagen, es soll das gleiche mit -9 machen? Erfahrungsgemäß ist in meinen Fällen eh nur mit -9 dem Problem beizukommen (s.u.)


Naja nochmal genau so, nur mit -9?

Poste bitte mal genau was da hängt und wann. Glauben hilft nicht, wir sind hier nicht in der Kirche.

-nik
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben

Re: Hilfe für Kill -15 Script gesucht

Beitragvon clue am 22.02.2013 13:27:41

:oops: Während Du schon geantwortet hast, hab ich noch meine Antwort oben editiert. Also hier nochmal die bessere Fassung:

Jetzt folgt eine ziemlich lange Antwort mit vielen Unterpunkten. Bitte nicht böse sein, ok?
Natureshadow hat geschrieben:Mit wait.
Code: Alles auswählen
pids="$(lsof -t /dev/mapper/home)"
kill -15 $pids
timeout 10 wait $pids
Cool, Danke! Dein Skript habe ich fix ausprobiert. Das Problem ist momentan, dass mein System wait nicht findet.
Code: Alles auswählen
Man wait: No manual entry for wait
Welches Paket fehlt mir? Weder Google noch Synaptic spucken etwas brauchbares aus.
Natureshadow hat geschrieben:Poste bitte mal genau was da hängt und wann. Glauben hilft nicht, wir sind hier nicht in der Kirche.
Da liegt ja mein anderes Problem: Ich kann das nicht so ohne weiteres sagen, weil es ja nur kurz beim Runterfahren angezeigt wird. Es hängt wohl mit Synaptic über KDESUDO zusammen. Wenn ich es einmal aufgerufen habe, beenden sich nachher die Prozesse beim Runterfahren nicht. Hab auch schon nen Käfer-Report geschrieben (vor Jahr und Tag). Passiert bei mir auf 3 verschiedenen Systemen. Interessiert nur niemanden.
Um den Maintainern zu helfen, möchte ich Ihnen genau sagen können, welche Prozesse das sind. Dazu müsste ich sie beim Runterfahren auch vernünftig angezeigt bekommen. Als Idee habe ich Folgendes gefunden: http://www.lehman.cuny.edu/cgi-bin/man-cgi?wait+1
Code: Alles auswählen
pid=$!
       kill -kill $pid
       wait $pid
       echo $pid was terminated by a SIG$(kill -l  $(($?-128))) signal.

Was diesem Skript fehlt sind 3 Sachen:
1. Erst sollte gewartet werden, ob es mit -15 klappt.
2. Falls es nicht klappt, dann erst mit -9
3. Die Schuldigen sollten aufgelistet werden, und das System warten, bis ich eine Taste zum Weitermachen drücke. Damit kann ich die Schuldigen dann in aller Ruhe aufschreiben.

Ich weiß, ganz schön viel Kram auf einmal. Aber wenn mir jemand dabei helfen könnte, wäre ich dankbar. :hail:
Offenbarung 13 erfüllt sich gerade vor unseren Augen
clue
 
Beiträge: 782
Registriert: 08.07.2007 17:36:57
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 22.02.2013 13:45:30

clue hat geschrieben:Cool, Danke! Dein Skript habe ich fix ausprobiert. Das Problem ist momentan, dass mein System wait nicht findet.
Code: Alles auswählen
Man wait: No manual entry for wait
Welches Paket fehlt mir? Weder Google noch Synaptic spucken etwas brauchbares aus.


Es ist ein Shell-Builtin. Welche Shell benutzt du?

clue hat geschrieben:
Natureshadow hat geschrieben:Poste bitte mal genau was da hängt und wann. Glauben hilft nicht, wir sind hier nicht in der Kirche.
Da liegt ja mein anderes Problem: Ich kann das nicht so ohne weiteres sagen, weil es ja nur kurz beim Runterfahren angezeigt wird.


init selber macht mit einem Skript ganz am Ende genau das, was du da vor hast. Wenn du es trotzdem selber implementieren willst, habe ich dir dafür ja eine Lösung genannt. Außerdem ist es immer noch falsch, das dm-Device zu betrachten. Da greifen keine Userland-Prozesse drauf zu.

Stell den Shutdown-Prozess doch einmal nach. Wechsle aufs tty1 und mache als root ein init 1. Danach machst du lsof auf /home - nicht auf das Device.
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben

Re: Hilfe für Kill -15 Script gesucht

Beitragvon Cae am 22.02.2013 14:13:10

Code: Alles auswählen
$ timeout 10 wait sleep 15
timeout: failed to run command `wait': No such file or directory
$ sleep 5 &
$ wait
[1] + Done                       sleep 5
$
Kann ich bestaetigen. timeout(1) ist ein externes Programm und kann daher nicht auf wait zugreifen, welches ein Shell-Built-in ist (siehe sh(1)).

Des weiteren schliesse ich mich der Idee an, dass niemand auf dem Device selbst herumfummelt, sondern am zugehoerigen Mountpunkt.

Gruss Cae
— Achtung, es folgt ein Witz:

# dpkg-reconfigure brain
Paket »brain« ist nicht installiert und es ist keine Info verfügbar.


— weiter geht's im Thread…
Cae
 
Beiträge: 4068
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 22.02.2013 14:18:37

Na dann nimmt man wait aus busybox :P

Nein, alles Mist. Dann mit while, sleep und pgrep.

Aber wie gesagt, die Idee ist Quark.
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben

Re: Hilfe für Kill -15 Script gesucht

Beitragvon clue am 22.02.2013 16:00:59

1) Ok, ich hab jetzt die Schuldigen gefunden
    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    kdesud 1948 clue cwd DIR 254,1 4096 293761 /home/clue
    kdesud 1948 clue 1w REG 254,1 53948 293816 /home/clue/.xsession-errors (deleted)
    kdesud 1948 clue 2w REG 254,1 53948 293816 /home/clue/.xsession-errors (deleted)
Diese lassen sich nur mit kill -9 beenden. (deleted) steht da, weil ich mich zwischenzeitlich nochmal aus und wieder eingeloggt habe. Nach dem 1. Ausloggen stehts wie oben dar, nur ohne das (deleted). Es wird erst beim Wieder-einloggen drangehängt.

Wo kommen die aufgelisteten Prozesse her? Vom Aufruf von Synaptic mittels Click auf das Icon in KDE. Allerdings ist es nicht immer 100% reproduzierbar. Ich muss noch ein bisschen rumprobieren um es genau sagen zu können, wie es immer reproduzierbar ist (anderer Thread?).

2) Gemäß Eurer Empfehlung habe ich mein Skript jetzt von /dev/mapper/home auf /home umgestellt.

3) echo $SHELL ergibt bei mir /bin/bash

4) Da ich wirklich super wenig Ahnung von Skripten und Co. habe, wie müsste denn nun ein funktionierender 3-Zeiler lauten mit meinen gewünschten 3 Features (erst warten auf kill -15, dann erst -9 und außerdem noch Anzeigen der SchuldigenListe mit Warten auf Bestätigung von mir?
Momentan sieht mein Skript an dieser Stelle so aus
Code: Alles auswählen
pids="$(lsof -t /home)"
kill -15 $pids
timeout 10 wait $pids
umount /home
cryptsetup luksClose /dev/mapper/home
losetup -d /dev/loop0

Wie gesagt, das wait klappt nicht.

EDIT
Hab n Foto von der Fehlermeldung gemacht und alles abgetippt:
    kill: 18: Usage: Kill [-s sigspec | -signum | -sigspec] [pid | job]... or
    kill -l [exitstatus]
    timeout: failed to run command `wait': No such file or directory
Offenbarung 13 erfüllt sich gerade vor unseren Augen
clue
 
Beiträge: 782
Registriert: 08.07.2007 17:36:57
Nach oben

Re: Hilfe für Kill -15 Script gesucht

Beitragvon Cae am 22.02.2013 16:10:48

Das ist ja wohl kdesudo, welches die (neu ueberschriebene) Datei offen haelt. Wenn du den Rechner startest, dich einloggst, aber keinerlei administrative Taetigkeiten unternimmst und anschliessend den umount ausloest, was passiert dann?

Gruss Cae
— Achtung, es folgt ein Witz:

# dpkg-reconfigure brain
Paket »brain« ist nicht installiert und es ist keine Info verfügbar.


— weiter geht's im Thread…
Cae
 
Beiträge: 4068
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 22.02.2013 16:36:08

Auf jeden Fall ist es harmlos. Der Shutdown-Prozess kümmert sich um alles. Lass das mit dem Skript, benutze einfach kein Synaptic und debugge, wenn dir akademisch danach ist, warum kdesu das tut.
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben

Re: Hilfe für Kill -15 Script gesucht

Beitragvon clue am 23.02.2013 13:26:56

Cae hat geschrieben:Das ist ja wohl kdesudo, welches die (neu ueberschriebene) Datei offen haelt. Wenn du den Rechner startest, dich einloggst, aber keinerlei administrative Taetigkeiten unternimmst und anschliessend den umount ausloest, was passiert dann?

Gruss Cae

Jup, es ist kdesudo. Wenn ich nichts administratives unternehme, habe ich auch keinerlei Problem. Und ja, es ist harmlos. Aber dennoch möchte ich gerne administrativ tätig sein können, ohne jedes mal befürchten zu müssen, mein home in einem unsauberen Zustand runterfahren zu lassen.

Also, liebe, gute und auch großzügig helfende Skript Gurus: Wie soll denn nun mein Dreizeiler-Skript aussehen? So wie Natureshadows' bloß eben irgendwie mit while oder so? Ich bin echt zu blöd das richtig selbst zu schreiben. :?
Offenbarung 13 erfüllt sich gerade vor unseren Augen
clue
 
Beiträge: 782
Registriert: 08.07.2007 17:36:57
Nach oben

Re: AW: Hilfe für Kill -15 Script gesucht

Beitragvon Natureshadow am 23.02.2013 14:53:08

Nein. Gar kein Skript. Es *gibt* schon ein Skript, das genau das macht. Das ist Standard in jedem init!

-nik
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Benutzeravatar
Natureshadow
 
Beiträge: 1956
Registriert: 11.08.2007 22:45:28
Wohnort: Radevormwald
Lizenz eigener Beiträge: MIT Lizenz
  • Website
Nach oben


Antwort erstellen
13 Beiträge • Seite 1 von 1

Zurück zu Softwareentwicklung und -paketierung, Scripting

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

Willkommen!
Startseite
Chat
Wiki/Tipps
Planet
Bildergalerie
NoPaste
Links
identi.ca-Gruppe
dieses und jenes
Forum
Foren-FAQ
Registrieren
Anmelden
Suchen
Erweiterte Suche
unbeantw. Beiträge
aktive Themen



No ePatents Button
FSFE Supporter 2004 Button
top
Zum Seitenanfang
Diese Webseite ist keine offizielle Webseite des Debian Projekts.
Haftungsausschluss und Impressum – debianforum.de Verhaltensregeln

Powered by phpBB © 2000-2008 phpBB Group. Deutsche Übersetzung durch phpBB.de
Template entwickelt von Timo Salmen, basierend auf dem Debian Live Template, entwickelt von Christoph Haas.