Moin,
viele Fragen in einer Mail.
Martin Schuchardt (Di 06 Dez 2016 22:17:20 CET):
> Jetzt möchte ich das ganze in einem INIT-Skript bauen. Sprich mittels
> /etc/init.d/meineSkripts start
Init heißt jetzt meistens systemd.
--/usr/local/bin/foo--
#!/bin/sh
# sinnfreie Pipeline
sleep 60 | sleep 60 | sleep 60
--/etc/systemd/system/foo.service--
[Unit]
Description=Foo test
[Service]
ExecStart=/usr/local/bin/foo
Dann kannst Du mit
systemctl start foo
systemctl status foo
systemctl stop foo
… usw …
hantieren
> Ich will in meinem INIT-Skript gerne eine PID bzw. ein PID-File
> verwenden. Wenn ich eine Sammlung von Skripten mittels Pipe starte und
> versuche anschließend die PID zu ermitteln, bekomme ich nur die letzte
> PID (die des Skript3). Ich hab zwar über PID-Gruppen schon eine
> Möglichkeit gefunden, alle PIDs zu ermitteln, aber toll ist es nicht)
Ich meine, in meinem obigen Testscript sorgt der Tot der Parentshell
auch für das Killen der Kinder. Aber das hängt auch vom Signal ab. Bei
KILL an den Parant leben die Kinder weiter.
Mit systemd passiert das nicht. `systemctl kill --signal=KILL
foo.service` haut sie alle weg.
> b) wie bekomme ich das ganze sauber in den Hintergrund?
systemd. Der findet es sogar besser, wenn Du Dich um die „Dämonisierung“
nicht kümmerst.
> 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.
Ja, das „in den Hintergrung“ gehen ist das daemonize. Verbunden mit
verschiedenen anderen Dingen (lossagen vom controlling Terminal,
Prozessgruppenführerschaft und was noch alles…)
In der schönen neuen Systemd-Welt ist das eher nicht gewünscht, da ist
es für Dich einfacher, einfach alles im Vordergrund zu lassen und den
Rest an systemd zu delegieren.
> 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.
Wenn Du threads hast, dann siehst Du i.d.R. nur die PID vom Prozess
selbst. Aber ich glaube, dann ist das nichts, was Du in der Shell machen
kannst.
> 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?
Nee, sind ja alles Prozesse, die willst Du auch alle sehen.
Vielleicht kannst Du mit namespaces experimentieren und die in einen
anderen Prozess-Namespace setzen, aber das ist nur sehr salopp geraten.
--
Heiko
signature.asc
Description: Digital signature