Linux-Dienst: Service Script

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Linux-Dienst: Service Script

Beitrag von Ich934 »

Hallo zusammen,

ich habe einen Daemon für Linux geschrieben, welcher an sich prima funktioniert. Für Alpine Linux benötige ich ein systemctl-Start-Script. Das kann ich natürlich selber schreiben, aber vielleicht hat hier jemand eine Vorlage.

Das im FreePascal Wiki verlinkte Beispiel ist leider nicht mehr erreichbar.

Vielen Dank.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Linux-Dienst: Service Script

Beitrag von af0815 »

Die Frage ist, ob das so noch funktioniert, weil Debian da auch noch eine Menge seit 2013 geändert hat und auf Systemd umgestiegen wurde.

Info zu Systemd auch hier zum Einstieg: https://www.linux.com/training-tutorial ... -stopping/ (Englisch) bzw. in der Wiki steht sowieso was zu systemd weiter unten.

Altes Script:
Quelle: https://web.archive.org/web/20130209102 ... service.sh

Code: Alles auswählen

#!/bin/bash
# Lazarus service application shell script

SVC_START_OPTIONS="-r"
SVC_STOP_OPTIONS="s"

# Edit SVC_ALIAS to the long description of your service application
SVC_ALIAS="Description of your program"
# Edit SVC_FILENAME to the actual name of your compiled service application
SVC_FILENAME="YourProgram"

# Edit SVC_DIR to where you place your compiled service application 
SVC_DIR="/bin/YourFolder/"

# Edit SVC_SERVICE_SCRIPT to the name of this file without the extension
SVC_SERVICE_SCRIPT="YourService"
# this will become your service name.  Ie.) service YourService start

SVC_FILE=$SVC_DIR$SVC_FILENAME
start() {
	if [ -f $SVC_FILE ]; then 
	  #reset       
	  echo -n "Starting "$SVC_ALIAS": "
	  RETVALS=$(start-stop-daemon -S -b -x $SVC_FILE -- $SVC_START_OPTIONS)
			
          Count=${#RETVALS[@]}
	  RETVAL="[FAIL]"
		
          if [ $Count -eq 0 ]; then
	    RETVAL="[OK]"
	  elif [ $Count -eq 1 ]; then
	    if [ ${#RETVALS[0]} -eq 0 ]; then
	      RETVAL="[OK]"	
	    else 
	      iStart=${#SVC_FILE}
	      iLength=${#RETVALS[0]}
	      Response=${RETVALS[0]:(iStart+1):7}
	      RETVAL=$Response
	      if [ "$Response" == "already" ]; then
	        RETVAL="[OK]"
	      fi
	    fi				
  	  fi
	  echo $RETVAL
          return 0
	else
	  echo $SVC_ALIAS" not installed" $SVC_DIR
	  exit 2;	
	fi
}

stop() {
	echo -n "Shutting down "$SVC_ALIAS":"
	RETVALS=$(start-stop-daemon -K -x $SVC_FILE -- $SVC_STOP_OPTIONS)
	#additional PROCKILLS=$(killall -w -q -e $SVC_PROCESS_NAME $SVC_FILENAME)
	Count=${#RETVALS[@]}
	Index=0	
	RETVAL="[FAIL]"
	if [ $Count -eq 1 ]; then
		if [ ${#RETVALS[0]} -eq 0 ]; then
			RETVAL="[OK]"	
		else 
			Response=${RETVALS[0]:0:2}
			RETVAL=$Response
			if [ "$Response" == "No" ]; then
				RETVAL="[OK]"
			fi
		fi			
	else
		RETVAL="[OK]"
	fi 

	echo $RETVAL	
        return 0
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status $SVC_SERVICE_SCRIPT
        ;;
    restart)
        stop
        start
        ;;
    *)
	echo $SVC_ALIAS" [Invalid Startup Parameters]"        
	echo "Usage:  {start|stop|status|restart}"
        exit 1
        ;;
esac
exit $?
Edit: Habe den Link in der Wiki auf das Webarchive umgelegt, nachdem der alte ja tot ist
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Linux-Dienst: Service Script

Beitrag von Ich934 »

Danke. Muss ich eh mal anschauen weil das ja sehr Debian-spezifisch ist und ich hier ein AlpineLinux habe... Ansonsten doch selber schreiben...
Tipp für PostgreSQL: www.pg-forum.de

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Linux-Dienst: Service Script

Beitrag von Ich934 »

af0815 hat geschrieben:
Mo 17. Mai 2021, 11:14
Info zu Systemd auch hier zum Einstieg: https://www.linux.com/training-tutorial ... -stopping/ (Englisch) bzw. in der Wiki steht sowieso was zu systemd weiter unten.
systemd wäre kein Problem. Aber den nutzt Alpine nicht. ;-)
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Linux-Dienst: Service Script

Beitrag von Winni »

Hi!

Wenn Du so etwas Exotisches wie AlpineLinux verwendetest, dann musst Du Dich schon selbst um Systemaufgaben kümmern. Ich glaub kaum, dass jemand anderes hier diesen Exoten benutzt.

Und Alpine ist seit Jahrzehnten die Renn-Sport-Abteilung von Renault. Wenn das mal keinen Ärger gibt...

Da Dein System weder SysVinit noch Systemd benutzt, musst Dir selbst was schnitzen.

Hier ist die Handbuch-Seite zu Deinem StartSystem openrc:

https://docs.alpinelinux.org/user-handb ... penrc.html

Hättest Du Dir auch selbst raussuchen können.

Winni

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Linux-Dienst: Service Script

Beitrag von Ich934 »

Moin,

ich hab kein Problem das zu selbst zu schreiben. Aber wieso immer das Rad neu erfinden? Der genannte Link zeigt mir doch nur, wie ich Daemons starte und aktiviere. So wie das eigentlich schon immer war vor systemd. Mir ging es an sich nur um das Skript.

Ausserdem ist Alpine nicht exotisch. Ich schätze mal 80% und mehr aller Docker-Container laufen damit... Nur weil nicht Debian/Ubuntu drauf steht, heißt es nicht, dass es exotisch ist. ;-). Alpine Linux gibt es seit 2010, Renault nennt ihre Spritverschwender seit 2020 so. Also da hätte dann eher Renault das abgekupfert. ;-) Aber wir schweifen ab.

Übrigens läuft das Skript wie es ausschaut ohne Probleme.
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Linux-Dienst: Service Script

Beitrag von Winni »

Ich934 hat geschrieben:
Di 18. Mai 2021, 06:16
Moin,

Alpine Linux gibt es seit 2010, Renault nennt ihre Spritverschwender seit 2020 so. Also da hätte dann eher Renault das abgekupfert. ;-) Aber wir schweifen ab.
Renault nennt seine Renn-Sport-Abteilung seit den 1970ern Alpine. Erstmal informieren, bevor man lostippt. Aber wir schweifen ab.

Winni

Ich934
Lazarusforum e. V.
Beiträge: 316
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Linux-Dienst: Service Script

Beitrag von Ich934 »

Winni hat geschrieben:
Di 18. Mai 2021, 10:38
Renault nennt seine Renn-Sport-Abteilung seit den 1970ern Alpine. Erstmal informieren, bevor man lostippt. Aber wir schweifen ab
1954... :lol:
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Linux-Dienst: Service Script

Beitrag von Winni »

Ich934 hat geschrieben:
Di 18. Mai 2021, 12:25
Winni hat geschrieben:
Di 18. Mai 2021, 10:38
Renault nennt seine Renn-Sport-Abteilung seit den 1970ern Alpine. Erstmal informieren, bevor man lostippt. Aber wir schweifen ab
1954... :lol:

Nicht einmal Lesen kannst Du.
Alpine wurde 1955 gegründet, hatte aber nix mit Renault zu tun.
Bis es 1973 von Renault übernommen wurde.
Hilfe!

Antworten