Autostart von xorg-Apps
Wenn für das zu startende Skript eine xorg-Sitzung erforderlich ist, versuchen Sie möglicherweise, die Spezifikation für den automatischen Start von freedesktop zu befolgen, die je nach verwendeter Desktopumgebung möglicherweise funktioniert oder nicht.
Alternativ können Sie auf Ihre spezifische Desktop-Umgebung abzielen, wie unter https://wiki.archlinux.org/index.php/autostarting beschrieben .
Ausführen eines Skripts als systemd-Dienst
Wenn Ihr Skript der Beschreibung eines Daemons oder eines "Dienstes" entspricht und auf Ihrem System systemd ausgeführt wird, was für Raspbian und die meisten modernen Sprachen der Fall ist, können Sie Ihr Skript so konfigurieren, dass es als systemd-Dienst ausgeführt wird die Lebenszyklus- und Ausführungsumgebung sowie die Voraussetzungen für das (erneute) Starten des Skripts, z. B. das laufende Netzwerk. Es ist auch möglich, den Neustart des Dienstes im Falle eines Fehlers ( Restart=always
und einer Verzögerung zwischen dem Neustart, z RestartSec=10
. B. ) zu konfigurieren .
Für den systemweiten Einsatz erstellen Sie Ihre systemd Unit-Datei unter /etc/systemd/system
, zB mit vim /etc/systemd/system/autossh.service
:
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
Siehe auch:
Jetzt können wir den Service testen:
systemctl start autossh
Überprüfen des Status des Dienstes:
systemctl status autossh
Beenden des Dienstes:
systemctl stop autossh
Sobald Sie überprüft haben, dass der Dienst wie erwartet funktioniert, aktivieren Sie ihn mit:
systemctl enable autossh
ANMERKUNG: Aus Sicherheitsgründen systemd
wird das Skript in einer eingeschränkten Umgebung ausgeführt, ähnlich wie crontab
Skripte ausgeführt werden. Nehmen Sie daher keine Annahmen über bereits vorhandene Systemvariablen vor. Verwenden Sie die Environment
Tasten, wenn für Ihr Skript bestimmte Variablen definiert werden müssen. Wenn Sie set -x
Ihr Bash-Skript oben hinzufügen und dann ausführen, können Sie systemctl status my_service
möglicherweise feststellen, warum Ihr Skript fehlschlägt. Verwenden Sie in der Regel immer absolute Pfade für alles, einschließlich echo
und cat
, oder definieren Sie explizit Ihren $ PATH.
.xinitrc
oder.xsession
Datei hinzufügen .