Starten einer beliebigen Anwendung als Daemon / Dienst

triton_dideldi

Grünschnabel
Beiträge
4
Hi Forum,

ich bin gerade an der Portierung einer .Net Applikation nach GNU/Linux und Mono. Dabei muß ich einen Windows Dienst portieren, jedoch sind die entsprechenden Namespaces in Mono noch nicht implementiert.
Dienste unter Windows sind dabei nichts anderes als Dämonen unter GNU/Linux. Sie sind mit bestimmten Rechten ausgestattet und werden beim Systemstart geladen und benötigen deshalb keinen angemeldeten Benutzer.

Jetzt meine Frage:

Kann ein beliebiges, von mir entwickeltes Konsolenprogramm wie unten angedeutet als Dienst über ein Start/Stop Skript gestartet werden, oder benötige ich dazu spezielle Basisklassen, usw.

Wenn ja, gibts irgendwo eine FAQ zur erstellen von Startskripten, bin nämlich eine Neuling auf dem Linux Sektor und hab deshalb nicht die Hammererfahrung in der GNU/Linux Systemadministration.

//--------------------------

using System;
..
..
public void Main(string[] args)
{
...
...
...
}

//---------------------------

besten Dank
MfG triton_dideldi
 

chb

Steirer
Beiträge
2.359
Man kann natürlich das in der Sprache in der es geschrieben wurde in den Griff zu bekommen aber es ginge natürlich auch über ein Startscript welches das Programm in den Hintergrund schickt :


Code:
#/bin/bash
case "$1" in
   'start')
      /usr/bin/irgendeinprogramm & ;;
   'stop')
      /bin/killall irgendeinprogramm & ;;
   *)
      echo "usage $0 start|stop" ;;
esac


das wäre die Minimalvariante um soetwas in bash zu bewerkstelligen ..
Generell startet man ein Programm in den Hintergrund mit

Code:
Programm &
 

devilz

Pro*phet
Beiträge
12.245
@triton_dideldi

Doppelpostings sind nicht gestattet !
Ich habe dein 2t Posting mal gelöscht !
 

rup

Haudegen
Beiträge
627
nohup Programm &

so brauchst du nicht mal die Konsole, stdout und stderr gehen nach nohup.out
 

triton_dideldi

Grünschnabel
Beiträge
4
Hi,
danke für die Tipps, das funktioniert soweit einwandfrei. Allerdings habe ich jetzt ein weiteres Problem.

Ich habe jetzt folgendes Skript geschrieben:

1#/bin/bash
2
3 case "$1" in
4 'start')
5 /usr/bin/mono MonoServiceTest.exe &
6 ;;
7 'stop')
8 /usr/bin/killall /usr/bin/mono &
9 ;;
10 *)
11 echo "usage $0 start|stop"
12 ;;
13 esac

Mal angenommen ich starte jetzt einen Dienst über dieses Skript und zusätzlich noch eine andere Mono Anwendung. Wenn ich jetzt den Dienst über das Skript beende, werden alle Programme, die unter Mono laufen beendet und das ist nicht so gut.

Wenn ich unter 'stop') "/usr/bin/killall /usr/bin/mono MonoServiceTest.exe & eintrag, dann bekomme ich die Fehlermeldung "MonoServiceTest.exe: no process killed"

Wie kann ich denn nur den Dienst, den ich per Skript gestartet habe auch wieder beenden.
Ich hätte mir gedacht, dass ich in einer Datei die ich nach /tmp oder so lege, beim Start die PID schreibe und beim Beenden diese wieder auslese und speziell diese PID dann beende.
Ist das sinnvoll, oder gibt es bessere Möglichkeiten.

MfG triton_dideldi

PS: Doppelposting kommt nicht mehr vor. Sorry.
 
Zuletzt bearbeitet:

Ähnliche Themen

Linux Systemadministration v. Jochen Hein

Sucheingaben

linux programm als daemon starten

,

linux daemon erstellen

,

linux eine anwendung starten

,
shell script als Dienst ausführen
, linux start dämonen, streamproxy als daemon starten, linux anwendung als prozess über startscript aufrufen, linux prozess starten als daemon, debian programm als daemon, linux daemon starten, debian 10 programm als dienst starten, ubuntu programm als dienst einrichten, Centos7 programm als dienst starten, Programm unter Linux als Daemon ausführen, wie starte ich eine anwendung in linux, linux programm als daemon, linux anwendung als dienst, centos 7 anwendung als dienst registrieren, linux prozess als daemon starten, linuxanwendung als service starten, als daemon ausführen, linux programm als dienst starten
Oben