2013-02-28 30 views
7

Tôi có thể thực hiện Dịch vụ khởi động này bên dưới không, không có lỗi nào hiển thị khi chạy, nhưng kịch bản máy chủ bên dưới không chạy!script khởi động linux trong systemd

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

nhờ

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 

đây là kịch bản 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

Một chi tiết và đầy đủ câu trả lời: http://unix.stackexchange.com/a/47715 –

Trả lời

17

Hãy thử sử dụng "Type = forking" và sử dụng tên tệp hoàn chỉnh.

[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 

nếu nó không hoạt động, bưu điện đầu ra của lệnh này:

# journalctl -u aquarium.service 
+0

Nhờ đó Tuy nhiên, tôi nhận được điều này khi sử dụng kịch bản chính xác mà bạn đã nhập ở đó. biết rằng/bin/bash server.sh bắt đầu không bắt đầu kịch bản !! beaglebone: ~ # systemctl status aquarium.service aquarium.service - Bắt đầu máy chủ bể cá Đã tải: đã tải (/etc/systemd/system/aquarium.service; bật) Hoạt động: không thành công (Kết quả: exit-code) kể từ Thứ Sáu, 01 Tháng 3 năm 2013 18:18:26 +1100; 23s trước Quy trình: 12545 ExecStart =/bin/bash server.sh bắt đầu (code = exited, status = 200/CHDIR) PID chính: 12482 (code = exited, status = 200/CHDIR) CGroup: name = systemd: /system/aquarium.service – Ossama

+0

Tôi quên thêm Mar 01 này 18:18:26 beaglebone (bash) [12545]: Không thành công ở bước CHDIR spawning/bin/bash: Không có tệp hoặc thư mục nào như vậy – Ossama

+0

hmm, hệ thống bạn đang sử dụng ? Trên ArchLinux tệp này là các liên kết tượng trưng: '% ls -l/bin/sh/bin/bash lrwxrwxrwx 1 gốc gốc 15 Jan 26 21:19/bin/bash -> ../usr/bin/bash * lrwxrwxrwx 1 root root 15 Jan 26 21:19/bin/sh -> ../ usr/bin/bash * ' Thử thay thế"/bin/bash "bằng"/bin/sh "và đảm bảo rằng các tập tin tồn tại bằng cách sử dụng "ls -l" –

Các vấn đề liên quan