Wie überprüfe ich, ob beim Start eine Reihe von Befehlen ausgeführt werden?

Wie überprüfe ich, ob beim Start eine Reihe von Befehlen ausgeführt werden?

Ich bin gerade dabei, ein GUI-Frontend dafür zu erstellen xrandrund brauche einige Befehle, die beim Start ausgeführt werden.

Ich verwende eine .desktopDatei im ~/.config/autostart.

Ich kann nicht sagen, ob das funktioniert, da xrandres mit meinem Setup nicht funktioniert. Ich weiß, dass alles so funktioniert, wie es soll. Mein System unterstützt es nur nicht. Ich bekomme nur eine Reihe von Xrandr-Fehlern. Das bedeutet auch, dass ich beim Start Fehler bekomme und keine erkennbare Änderung.

Gibt es eine Möglichkeit herauszufinden, ob die Befehle ausgeführt wurden?

Antwort1

Wenn Ihre automatisch gestartete .desktopDatei ein Skript ist, können Sie einfach ein Steuerungsecho in das Skript einfügen, wie im folgenden Beispiel:

# if yyou want only data saved for one run

echo "Script has run on $(date)" > ~/script.log

# if you want a continous log output append

if [ -e ~/script-log ]
    then
        echo "Script has run on $(date)" >> ~/script.log
else
        touch ~/script.log
        echo "Script has run on $(date)" >> ~/script.log
fi

Auf diese Weise können Sie sogar einige variable Daten ausgeben, die Sie möglicherweise für die Steuerung benötigen. Stellen Sie einfach sicher, dass Ihr Endergebnis nach allen Befehlen im Skript gedruckt wird, damit Sie wissen, dass das Skript ausgeführt wurde.

Wenn Sie genau wissen möchten, ob die Befehle in Ihrem Skript fehlgeschlagen sind, können Sie Folgendes tun:

# do this at start of your script

if [ -e ~/script-error.log ]
    then
        # we do nothing
else
        touch ~/script-error.log
fi

# then within your script (I use as example here cd /root just to demonstrate)
# you can do this with nearly all commands

cd /root 2>> ~/script-error.log

Dies würde nur dann erfolgen, wenn einer Ihrer Befehle einen Fehler auslöst. Dies ist sicherlich nicht überall anwendbar, aber immer noch besser, als überhaupt keine Ausgabe zu erhalten.

Erklärung der Verrohrung:

# single piping symbol (overwrite the existing file and creates one if not existant)
>               # pipes all output 
1>              # pipes only success messages
2>              # pipes only error messages

# double piping symbol (append to an existing file and fail if file does not exist)
>>              # pipes all output
1>>             # pipes only success messages
2>>             # pipes only error messages

Möchten Sie ausführlicher über Bash-Skripting erfahren, hier zwei Links:

Bash-Leitfaden für Anfänger - Machtelt Garrels - 2008
Erweitertes Bash-Scripting-Handbuch - Mendel Cooper - 2014

verwandte Informationen