Autostarting av xorg-appar
Om skriptet du vill starta kräver en xorg-session kan du försöka följa freesktop autostart spec som kanske eller kanske inte fungerar beroende på vilket skrivbord miljö som du använder.
Alternativt kan du rikta in dig på din specifika skrivbordsmiljö enligt beskrivningen på https://wiki.archlinux.org/index.php/autostarting.
Köra ett skript som en systemd-tjänst
Om ditt skript passar beskrivningen av en demon eller en "tjänst" och ditt system kör systemd vilket är fallet för raspbian och mest moderna linjer, då kan du konfigurera ditt skript så att det körs som en systemd-tjänst - detta ger detaljerad kontroll över livscykel- och exekveringsmiljön, samt förutsättningar för att (åter) starta skriptet, såsom att nätverket är uppe och löpning. Det är också möjligt att konfigurera omstart av tjänsten i händelse av fel ( Starta om = alltid , och fördröjning mellan omstart t.ex. RestartSec=10).
För systemomfattande användning skapa din systemd-enhetsfil under / etc / systemd / system , t.ex. med vim /etc/systemd/system/autossh.service
:
[Enhet] Beskrivning = Autossh keepalive daemon ## se till att vi bara startar tjänsten efter att nätverket är upWants = nätverk-online.targetAfter = network.target [Service] ## använd 'Type = forking' om själva tjänstebakgrunderna ## andra värden är Type = enkel (standard) och Type = oneshotType = forking ## här kan vi ställa in anpassade miljövariabler Miljö = AUTOSSH_GATETIME = 0Miljö = AUTOSSH_PORT = 0ExecStart = / usr / local / bin / ssh-keep-alive. : du kan ha flera `ExecStop`-raderExecStop = / usr / bin / killall ssh # använd inte 'none' om ditt skript behöver komma åt användarfiler # (om användaren inte är inställd kommer tjänsten att köras som root) # User = ingen # Användbar under felsökning; ta bort den när tjänsten fungerarStandardOutput = konsol [Installera]
WantedBy = multi-user.target
Se även:
Nu vi är redo att testa tjänsten:
systemctl start autossh
Kontroll av tjänstens status:
systemctl status autossh
Avbryter tjänsten:
systemctl stop autossh
När du har verifierat att tjänsten fungerar som förväntat aktivera den med:
systemctl aktivera autossh
OBS: Av säkerhetsskäl systemd
kör skriptet i en begränsad miljö, liknande den som crontab -skript körs, gör därför inga antaganden om befintliga systemvariabler. Använd tangenterna Miljö
om ditt skript behöver specifika variabler definieras. Att lägga till set -x
högst upp i ditt bash-skript och sedan köra systemctl status my_service
kan hjälpa dig att identifiera varför ditt skript misslyckas. Som en tummen regel ska du alltid använda absoluta sökvägar för allt inklusive eko och katt eller definiera uttryckligen din $ PATH.