Hallo Martin,
On Tue, Dec 06, 2016 at 22:17:20 +0100, Martin Schuchardt wrote:
> Wie läuft das ganze ab? Ich habe insgesamt 3 Skripte, die
> unterschiedliche Sachen machen, Basis ist die Auswertung von ATOP. Das
> sieht also derzeit wie folgt aus:
>
> atop-Aufruf | Skript1 | Skript2 | Skript3
>
> Das ganze kann ich derzeit auf zwei Wegen starten um es in den
> Hintergrund zu bringen:
>
> a) screen: Starten des Aufrufs und CTRL+A+D
> b) Starten des Aufrufs mit einem & am Ende (schicks in den Background)
Als screen-Fan empfehle ich natuerlich a)
> Jetzt möchte ich das ganze in einem INIT-Skript bauen. Sprich mittels
>
> /etc/init.d/meineSkripts start
Geht auch mit screen:
### /usr/local/bin/atop_proc ###
#!/bin/sh
atop | Skript1 | Skript2 | Skript3
### /etc/init.d/meineSkripts ###
#!/bin/sh
case "$1" in
start)
su -c "screen -dmS atopproc /usr/local/bin/atop_proc" atopuser
;;
stop)
su -c "killall screen" atopuser
;;
*)
echo "usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Das Hilfsskript "atop_proc" dient nur als Buendelung der
Pipe-Kette und dass screen mit nur einem Kommando als Argument gestartet
werden muss. Das Initskript "/etc/init.d/meineSkripts" startet screen
unter dem dedizierten User "atopuser" direkt im Hintergrund
(detached mode).
Das Stoppen im Initskript ist zugegeben etwas krude. Es geht davon aus,
dass der User "atopuser" nur eine screen-Session besitzt und dass die
einzelnen Kommandos in der Session terminieren, wenn sie ihr Terminal
verlieren.
> in diversen init-Skripten, die ich gelesen habe (sshd, etc.) habe ich
> dasn Stichwort "demonize" gefunden, aber damit kann ich nichts anfangen.
> Auch die Man-Pages helfen mir nicht wirklich weiter.
daemon() ist eine Funktion aus der libc, die kannst Du in Skripten nicht
verwenden.
> Hat jemand von Euch eine Idee, wie ich eine Sammlung von Tools in den
> Hintergrund schicke? Idealer Weise noch die PID von den einzelnen
> Prozessen raus bekommen. Vielleicht gibts auch eine Möglichkeit das auf
> eine PID zu reduzieren.
Siehe oben, mit screen im detached mode.
> Als besonderes Bonbon: wenn ich meinen Aufruf starte, dann sehe ich auch
> alle 3 bzw. 4 Prozesse in der Prozesslist. Gibts hier ne Möglichkeit das
> zu "vereinen", so dass ich nur einen Prozess in der Prozesslist sehe?
Nein, das geht AFAIK nicht.
Gruss,
Chris
--
Christian Perle chris AT linuxinfotag.de
010111 http://chris.silmor.de/
101010 LinuxGuitarKitesBicyclesBeerPizzaRaytracing