Opstart af Script som root på Debian 9

Domiino
Antal: 436
Tilmeldt:
26-03-2008
User is offline
Opstart af Script som root på Debian 9

Jeg har fået installeret Gogs på en Debian 9 Server - det kører meget fint og starter fint op med kommandoen:

/home/git/gogs/./gogs web

Det skal køres som root.

Nu kommer spørgsmålet så - hvordan får jeg det til at starte op hver gang computeren bliver genstartet? Jeg har søgt på nettet, men de guides jeg har fundet har ikke lykkes. Kan forstå der er noget med at når det er systemd så er det lidt anderledes?


frogmaster
frogmaster's picture
Antal: 3281
Tilmeldt:
20-05-2010
User is offline
Kan forstå der er noget

#0: Kan forstå der er noget med at når det er systemd så er det lidt anderledes?

Ja det er korrekt. Jeg kan ikke svare konkret iht Gogs, ikke mindst fordi du har placeret scriptet i Home (Ejerskab og Tilladelser), men systemd fungerer med systemctl kommandoen, fra terminalen, under starten af OS.

Eksempelvis for at teste uden indstillingen gemmes:
systemctl start navn-på-service-serviced.service

Start at boot time (Indstillingen gemmes):
sudo systemctl enable navn-på-service-serviced.service

For at tjekke systemd status:
systemctl --type=service

Der er iøvrigt forskel på om du ønsker start at services under logon eller boot. Hvis Debian 9 har GUI til Opstartsprogrammer, bør det fungere at tilføje scriptet, hvis du ønsker start under logon.

https://wiki.debian.org/systemd


Domiino
Domiino's picture
Antal: 436
Tilmeldt:
26-03-2008
User is offline
Jeg kan vel bare flytte Gogs

Jeg kan vel bare flytte Gogs til en anden folder? Det er det eneste maskinen skal stå og lave. Men hvor burde sådan en mappe ligge?


frogmaster
frogmaster's picture
Antal: 3281
Tilmeldt:
20-05-2010
User is offline
Men hvor burde sådan en

#2: Men hvor burde sådan en mappe ligge?

Jeg vil tro at eksempelvis pseud, du allerede har talt med og som har erfaring med Gogs: https://www.linuxin.dk/node/22267#comment-90270 ved det, men du kan forsøge med /opt/ mappen, der har root permissions, og ind imellem bruges til program installationer.

Det er ikke altid at /opt/ eksisterer i forvejen i roden. Hvis det er tilfældet, så prøv selv at oprette den med file mangeren i root tilstand.


Domiino
Domiino's picture
Antal: 436
Tilmeldt:
26-03-2008
User is offline
Det er mig en gåde hvorfor

Det er mig en gåde hvorfor jeg bare ikke kan få Gogs til at køre ved opstart. Hvorfor kan det være så svært. Jeg har prøvet at skrive til "pseud" desværre uden held.

Så er der nogen der kan forklarer mig hvordan jeg får et simpelt program til at kører ved opstart må I meget gerne sige til...


frogmaster
frogmaster's picture
Antal: 3281
Tilmeldt:
20-05-2010
User is offline

Domiino
Domiino's picture
Antal: 436
Tilmeldt:
26-03-2008
User is offline
En af dem er denne:

En af dem er denne: https://gogs.io/docs/intro/faqs#how-do-i-run-gogs-...

How do I run Gogs at startup with Systemd?

There’s a systemd service template file in the Gogs GitHub repository, and in the installed files at ./scripts/systemd/gogs.service. You will likely need to modify it for your installation:

    Update User, Group, WorkingDirectory, ExecStart, and Environment with values appropriate to your Gogs installation.
    (Optional) If you would like to use Gogs with MySQL/MariaDB, PostgreSQL, Redis, or memcached then uncomment the appropriate After lines.

Save your modified service file at /etc/systemd/system/gogs.service, enable it with sudo systemctl enable gogs, and start it with sudo systemctl start gogs.

You can check the status of the Gogs service with sudo systemctl status gogs -l, or display the journal entries with sudo journalctl -b -u gogs.

Men får denne fejl når jeg kommer til et punkt:

root@GITSERVER:/home/git# systemctl enable gogs
Synchronizing state of gogs.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable gogs
update-rc.d: error: gogs Default-Start contains no runlevels, aborting.
root@GITSERVER:/home/git#

Domiino
Domiino's picture
Antal: 436
Tilmeldt:
26-03-2008
User is offline
Den her virker vist ikke -

Den her virker vist ikke - da local.rc ikke er aktiv mere i Debian 9: https://www.tecmint.com/auto-execute-linux-scripts...

Den anden har jeg rodet lidt med, men synes ikke helt at kunne få den til at virke.


frogmaster
frogmaster's picture
Antal: 3281
Tilmeldt:
20-05-2010
User is offline
Prøv at læse dette:

Prøv at læse dette: https://www.tecmint.com/create-new-service-units-i...

og dette, hvor gogs befinder sig i home: https://github.com/gogits/gogs/blob/master/scripts...

Hvis ingen kender det eksakte svar, eller du ikke selv finder løsningen, så må du leve med at starte servicen manuelt, formentlig indtil systemd, gogs, eller hvad der skyldes problemet, bliver mere strait on.


Domiino
Domiino's picture
Antal: 436
Tilmeldt:
26-03-2008
User is offline
Jeg fik det til at

Jeg fik det til at virke!

Det var noget fra /etc/init.d der forstyrrende - efter en remove virker det bare!


frogmaster
frogmaster's picture
Antal: 3281
Tilmeldt:
20-05-2010
User is offline
Det var noget fra

#9: Det var noget fra /etc/init.d der forstyrrende

Det giver mening. init.d er ikke beregnet til programmer man selv installerer og vil give denne runlevel fejl. Deres opstart skal eventuelt ligge i /etc/systemd/system eller /lib/systemd/system

Glimrende.


snakee
Antal: 477
Tilmeldt:
12-07-2007
User is offline
Du kan bruge @reboot

#4:
Du kan bruge @reboot kommandoen i en brugers crontab-fil til at køre et program ved opstart.
Fordelene er at du aå kan lave en unik bruger der kun kører den valgte process og som ikke nødvendigvis har root-adgang hvis det ikke er nødvendig.

Du logger bare ind, eller su'er til den valgte bruger. Derfra skal du så redigere denne brugers crontab-fil med crontab -e

Tilføj så sidst i denne fil på sin egen seperate linje.

@reboot sti/til/eksekverbar/.fil

Og huske at gemme.. eventuelt kan du også bruge screen så kan du altid tage fat i processen og se hvad den har skrevet til stdout. Det gøres på følgende måde.

Du skal selvfølgelig have screen inatalleret.

I crontab-filen skriver du så følgende.

@reboot screen -S sti/til/eksekverbar/.fil

Det er så en god ide at gemme det du vil køre i en undermappe i homemappen for den bruger du vil have skal køre programmet og så referere til den fulde sti fra crontab-filen så undgår du besværligt tilladelseshalløj og filen kommer ikke i karambolage med pakkesystemet hvis du bruger noget aådant.

Jeg har selv brugt denne metode til blandt andet at køre syncthing som spytter en masse informationer ud på stdout og som jeg måske kan have glæde af at læse senere. Jeg akan så bare forbinde med screen (læs selv op på dette) se hvad den skriver og så bare detache og lade programmet køre videre når jeg er færdig. Super smart og nyttigt til at debugge programmer på farten uden at afbryde dem.