Also: Normalerweise lässt man Server als Prozesse im Hintergrund werkeln. Das hat den netten Nebeneffekt, das man sie nicht mal einfach so aus Versehen beenden kann, sondern nur explizit über einen Befehl.
Wenn du ein Programm hast, was als Dienst arbeitet (Server = deutsch: Dienst), das sich nicht automatisch von der Kommando-Zeile loslöst (detached), kannst du das Programm beim Starten in den Hintergrund legen und damit ein Loslösen erzwingen. Das macht man so:
Wichtig ist hier das kaufmännische "Und", damit wird das ausgeführte Kommando von der Befehlszeile in den Hintergrund gelegt (detached) und du kannst auf der Kommandozeile ganz normal weiter arbeiten.
Zweitens: Ein Programm, das Ausgaben auf der Kommando-Zeile ausgibt, hat mindestens 2 Kanäle (Standard-Ausgabe (Kanal 1) und Standard-Error-Ausgabe (Kanal 2) ) um sich bemerkbar zu machen. Wenn du ein Programm als Dienst laufen lassen willst, kannst du diese Kanäle in Log-Dateien umleiten, wenn du das Programm mit & in den Hintergrund legst. Das geht so:
Bash:
$ /pfad/zum/programm 1>/var/log/programmname.stdout.log 2>/var/logprogrammname.stderr.log
Drittens: Wenn du ein Programm unter einen bestimmten Benutzerkontext laufen lassen willst, gibts das Tool "sudo", welches sehr flexibel ist. Das ist eine Abkürzung und steht für "Substitute User and DO" - also ändere den Benutzerkontext und führe aus. Man verwendet es so (angenommen es gibt für das Programm "programm" einen Benutzer, der genauso heißt):
Bash:
$ sudo programm /pfad/zum/programm
Der erste Parameter ist der Benutzername, der zweite ist der absolute Pfad zum Programm.
Finally:
Nun kann man das alles prima kombinieren:
Bash:
$ sudo programm /pfad/zum/programm 1>/var/log/programmname.stdout.log 2>/var/logprogrammname.stderr.log &
Zum sudo-Programm sei noch zu erwähnen, das man die Rechte benötigt, sudo zu verwenden. Nähere Dokumentation findest du in der sudo Manpage.
Wenn du das alles in ein Start-/Stop-Script packst, kannst du das Script in die Runlevel-Verzeichnisse /etc/rc.d/rc[n].d verlinken und dann wird der Dienst beim Starten des Computers mit gestartet, wie alle anderen Dienste, die sich bereits in diesen Verzeichnissen befinden.
Wenn ein Programm im Hintergrund läuft, kann man mittels "kill"-Befehl das Programm beenden lassen. Dazu benötigt man die PID (Prozess-ID) des Dienstes. Es könnte so ablaufen:
Bash:
$ kill -KILL `pidof programm`
Das Tool "pidof" besorgt die Prozess-ID des angegebenen Programmnamens.