2013-02-28 7 views
7

Kann ich tun Dies starten Dienst unten, gibt es keine Fehler zeigen einmal ausgeführt, aber das Server-Skript unten läuft nicht!Linux Start-up-Skript in Systemd

ln /lib/systemd/aquarium.service aquarium.service 
systemctl daemon-reload 
systemctl enable aquarium.service 
systemctl start aquarium.service 

dank

aquarium.service:

[Unit] 
Description=Start aquarium server 

[Service] 
WorkingDirectory=/home/root/python/code/aquarium/ 
ExecStart=/bin/bash server.* start 
KillMode=process 

[Install] 
WantedBy=multi-user.target 

hier ist das server.sh Skript

#!/bin/bash 

PID="" 

function get_pid { 
    PID=`pidof python ./udpthread.py` 
} 

function stop { 
    get_pid 
    if [ -z $PID ]; then 
     echo "server is not running." 
     exit 1 
    else 
     echo -n "Stopping server.." 
     kill -9 $PID 
     sleep 1 
     echo ".. Done." 
    fi 
} 


function start { 
    get_pid 
    if [ -z $PID ]; then 
     echo "Starting server.." 
     ./udpthread.py & 
     get_pid 
     echo "Done. PID=$PID" 
    else 
     echo "server is already running, PID=$PID" 
    fi 
} 

function restart { 
    echo "Restarting server.." 
    get_pid 
    if [ -z $PID ]; then 
     start 
    else 
     stop 
     sleep 5 
     start 
    fi 
} 


function status { 
    get_pid 
    if [ -z $PID ]; then 
     echo "Server is not running." 
     exit 1 
    else 
     echo "Server is running, PID=$PID" 
    fi 
} 

case "$1" in 
    start) 
     start 
    ;; 
    stop) 
     stop 
    ;; 
    restart) 
     restart 
    ;; 
    status) 
     status 
    ;; 
    *) 
     echo "Usage: $0 {start|stop|restart|status}" 
esac 
+0

Eine detailliertere und vollständige Antwort: http://unix.stackexchange.com/a/47715 –

Antwort

17

mit "Type = Forking" Try and Nutzung vollständiger Dateiname

[Unit] 
Description=Start aquarium server 

[Service] 
WorkingDirectory=/home/root/python/code/aquarium/ 
Type=forking 
ExecStart=/bin/bash server.sh start 
KillMode=process 

[Install] 
WantedBy=multi-user.target 

wenn es nicht funktionieren, senden Sie Ausgabe dieses Befehls:

# journalctl -u aquarium.service 
+0

Vielen Dank für das aber ich bekomme das, wenn ich genau das Skript benutze, das du dort eingegeben hast. weiß, dass/bin/bash server.sh start das skript startet !! beaglebone: ~ # systemctl status aquarium.service aquarium.service - Server starten Loaded: geladen (/etc/systemd/system/aquarium.service; aktiviert) Aktiv: fehlgeschlagen (Ergebnis: exit-code) seit Fr, 01 Mär 2013 18:18:26 +1100; 23s her Prozess: 12545 ExecStart =/bin/bash server.sh start (code = beendet, status = 200/CHDIR) Haupt-PID: 12482 (code = exited, status = 200/CHDIR) CGroup: name = systemd: /system/aquarium.service – Ossama

+0

Ich habe vergessen, dies hinzuzufügen Mar 01 18:18:26 beaglebone (bash) [12545]: Failed bei Schritt CHDIR laich/bin/bash: Keine solche Datei oder Verzeichnis – Ossama

+0

hmm, welches System Sie verwenden ? Auf ArchLinux diese Dateien sind symbolische Links: '% ls -l/bin/sh/bin/bash lrwxrwxrwx 1 root root 15 26. Januar 21.19/bin/bash -> ../usr/bin/bash * lrwxrwxrwx 1 root root 15 Jan 26 21:19/bin/sh -> ../ usr/bin/bash * ' Ersetzen Sie"/bin/bash "durch"/bin/sh "und stellen Sie sicher, dass Dateien existieren mit "ls -l" –