Automatyczne uruchamianie aplikacji xorg
Jeśli skrypt, który chcesz uruchomić, wymaga sesji xorg, możesz spróbować postępować zgodnie ze specyfikacją autostartu Freedesktop, która może działać lub nie, w zależności od używanego środowiska pulpitu.
Alternatywnie możesz kierować reklamy na określone środowisko pulpitu zgodnie z opisem na https://wiki.archlinux.org/index.php/autostarting .
Uruchamianie skryptu jako usługi systemowej
Jeśli twój skrypt pasuje do opisu demona lub „usługi”, a twój system działa systemd, tak jak w przypadku raspbian i najnowocześniejszych linuksów, możesz skonfigurować skrypt, aby działał jako usługa systemowa - zapewnia to szczegółową kontrolę nad środowisko cyklu życia i wykonania, a także warunki wstępne (ponownego) uruchomienia skryptu, takie jak uruchomiona i uruchomiona sieć. Możliwe jest również skonfigurowanie restartu usługi w przypadku awarii ( Restart=always
i opóźnienia między restartem np RestartSec=10
.).
Do użytku ogólnosystemowego utwórz plik jednostki systemowej pod /etc/systemd/system
, np . 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
Zobacz też:
Teraz jesteśmy gotowi do przetestowania usługi:
systemctl start autossh
Sprawdzanie statusu usługi:
systemctl status autossh
Zatrzymywanie usługi:
systemctl stop autossh
Po sprawdzeniu, że usługa działa zgodnie z oczekiwaniami, włącz ją za pomocą:
systemctl enable autossh
UWAGA: Ze względów bezpieczeństwa systemd
skrypt będzie uruchamiany w ograniczonym środowisku, podobnie do sposobu crontab
uruchamiania skryptów, dlatego nie należy przyjmować żadnych założeń dotyczących wcześniej istniejących zmiennych systemowych. Użyj Environment
klawiszy, jeśli skrypt wymaga zdefiniowania określonych zmiennych. Dodanie set -x
u góry skryptu bash, a następnie uruchomienie systemctl status my_service
może pomóc w określeniu przyczyny niepowodzenia skryptu. Z reguły zawsze używaj ścieżek bezwzględnych do wszystkiego, w tym echo
i cat
, lub jawnie określ swoją ŚCIEŻKĘ $.
.xinitrc
lub.xsession
pliku.