2017-01-11 10 views
0

Я тестирую, как запускать скрипт, используя файл .service на CentOS7.Program.service ExecStart не работает, но сама программа запускается

Скрипт очень простой цикл просто чтобы убедиться, что он работает:

if [ "$1" == "start" ] || [ "$1" == "cycle" ] 
then 
    /u/Test/Bincustom/haltrun_wrap.sh run & 
    echo $! /u/Test/Locks/start.pid 
    exit 
elif [ "$1" == "stop" ] || [ "$1" == "halt" ] 
then 
    killall -q -9 haltrun_wrap.sh 
    echo " " /u/Test/Locks/start.pid 
elif [ "$1" == "run" ] 
then 
    process_id=$(pidof haltrun_wrap.sh) 
    #echo $process_id /u/Test/Locks/start.pid 
    while [ 1 ] 
    do 
     CurTime=$(date) 
     echo $CurTime /u/Test/Logs/log 
     sleep 30s 
    done 
else 
    cat /u/Test/Locks/start.pid 
    cat /u/Test/Logs/log 
fi 

Этот сценарий прекрасно работает в качестве корневого или тестового пользователя, если я запустить вручную.

Файл Program.service выглядит следующим образом:

[Unit] 
Description=Program 

[Service] 
Type=forking 
RemainAfterExit=yes 
PIDFile=/u/Test/Locks/start.pid 
EnvironmentFile=/u/Test/Config/environ 
Environment="Base="sudo -u sirsi '/u/Test/Bincustom/Program " "Stop=halt force'" "Start=cycle force'"" 
ExecStart=/bin/sh $Base$Start 
ExecStop=/bin/sh $Base$Stop 

[Install] 
WantedBy=multi-user.target 
WantedBy=WebServices 
WantedBy=BCA 

Ошибка всегда:

● Program.service - Program 
    Loaded: loaded (/usr/lib/systemd/system/Program.service; enabled; vendor preset: disabled) 
    Active: failed (Result: resources) since Wed 2017-01-11 14:53:10 MST; 1s ago 
    Process: 12014 ExecStart=/bin/sh $Base$Start (code=exited, status=0/SUCCESS) 

Jan 11 14:53:09 localhost.localdomain systemd[1]: Starting Program... 
Jan 11 14:53:10 localhost.localdomain systemd[1]: PID file /u/Test/Locks/start.pid not readable (yet?) after start. 
Jan 11 14:53:10 localhost.localdomain systemd[1]: Failed to start Program. 
Jan 11 14:53:10 localhost.localdomain systemd[1]: Unit Program.service entered failed state. 
Jan 11 14:53:10 localhost.localdomain systemd[1]: Program.service failed. 

Очевидно, что я делаю что-то неправильно в .Service, но для жизни я я до сих пор не хватает его.

ответ

0

Проблема была в строке:

Environment = "Base =" Судо -u Sirsi «/ и/Test/Bincustom/Программа" "Стоп = привал сила" "Start = цикл силы" "" ExecStart =/бен/ш $ Base $ Start ExecStop =/бен/ш $ Base $ Стоп

Видимо .Service файлы не распознают переменные.

У меня также возникла проблема с тем, что sudo не разрешено запускать тестовый скрипт. Мне пришлось добавить sudo в тестовый скрипт.