Hallo,
wie kann ich denn feststellen, ob ein Script interaktiv gestartet wurde oder zB beim Systemstart?
Ich möchte ein Script schreiben, das idR beim Systemstart ausgeführt wird. Wenn ich aber an der Konfiguration des Scripts herum fummele (als root), möchte ich es auch interaktiv ausführen können und dann ein paar Ausgaben einfügen. Beim Systemstart sollte es außer im Fehlerfall eher lautlos sein.
Danke vorab!
Carsten
Script interaktiv gestartet?
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Script interaktiv gestartet?
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Re: Script interaktiv gestartet?
bash (und andere Shells) setzt die Variable PPID, also die Prozeß-ID des Parentprozesses.
Nur, wenn dein Skript vom System gestartet wird, ist PPID 1, also die Prozeß-ID von init bzw. systemd.
Nur, wenn dein Skript vom System gestartet wird, ist PPID 1, also die Prozeß-ID von init bzw. systemd.
Re: Script interaktiv gestartet?
....oder Alternativ:MrScoville hat geschrieben:wie kann ich denn feststellen, ob ein Script interaktiv gestartet wurde oder zB beim Systemstart?
Code: Alles auswählen
# oberhalb aller Funktionen initialisieren
Trace=0
Code: Alles auswählen
# als übergebenden Programmparameter im Init-Teil des Script setzen
Trace=$1
Code: Alles auswählen
# ... und ihm Script an beliebigen Stellen Nachrichten ausgeben. Die Klammer (2) bezeichnet bei mir die 2. Trace-Ausgabe in dieser Funktion
(($Trace)) && printf "%-30s %-s\n" "Funktionname(2)" "line=$line name=$name var3=$var3"
Code: Alles auswählen
journalctl -f
Code: Alles auswählen
journalctl -b | grep Script-ID
Code: Alles auswählen
echo "active/running Action=$Action" | systemd-cat -t "thlu:`basename $0`" -p "info"
-
- Beiträge: 134
- Registriert: 03.02.2011 11:11:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Frankfurt
Re: Script interaktiv gestartet?
Verwende $- und prüfe das Interaktiv-Flag (i)
Funktioniert mit allen (POSIX-)Shells.
Code: Alles auswählen
$ echo $-
himBH
$ bash -c 'echo $-'
hBc
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Re: Script interaktiv gestartet?
Danke euch allen! Viele Wege führen nach Rom, ich schau mal welcher mir am besten taugt.
LG
Carsten
@admins: Ihr könnt hier zu machen
LG
Carsten
@admins: Ihr könnt hier zu machen
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling