2013-02-28 3 views
7

Могу ли я выполнить эту службу запуска ниже, нет ошибок, отображаемых после запуска, но приведенный ниже сценарий сервера не запускается!linux start up script in systemd

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

благодаря

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 

здесь является server.sh сценарий

#!/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

Более подробный и полный ответ: http://unix.stackexchange.com/a/47715 –

ответ

17

Попробуйте использовать "Type = Разветвляющихся" и использование полное имя файла.

[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 

, если он не работает, после вывода этой команды:

# journalctl -u aquarium.service 
+0

Спасибо за это , однако я получаю это при использовании точного скрипта, который вы там набрали. знаете, что/bin/bash server.sh start запускает скрипт !! beaglebone: ~ # systemctl status aquarium.service aquarium.service - Запустить сервер аквариума Загружено: загружено (/etc/systemd/system/aquarium.service; включено) Активен: не удалось (Результат: exit-code) с Fri, 01 Mar 2013 18:18:26 +1100; 23s назад Процесс: 12545 ExecStart =/bin/bash server.sh start (code = exited, status = 200/CHDIR) Основной PID: 12482 (код = выведен, статус = 200/CHDIR) CGroup: name = systemd: /system/aquarium.service – Ossama

+0

Я забыл добавить это Mar 01 18:18:26 beaglebone (bash) [12545]: Не удалось на этапе CHDIR spawning/bin/bash: Нет такого файла или каталога – Ossama

+0

hmm, какая система вы используете ? На ArchLinux это файлы символические ссылки: '% Ls -l/бен/ш/бен/Баш lrwxrwxrwx 1 корень корень 15 26 января 21:19/бен/Баш -> ../usr/bin/bash * lrwxrwxrwx 1 корень root 15 янв. 26 21:19/bin/sh -> ../ usr/bin/bash * ' Попробуйте заменить«/bin/bash »на«/bin/sh »и убедитесь, что файлы существуют с использованием «ls -l» –