"Не удалось запустить SYSV" при запуске собственного сервиса

Я пытаюсь настроить службу root, которая будет автоматически запускать базу данных monetdb после запуска системы, потому что monetdb не предоставляет такой механизм. Я создал /etc/init.d/monetdb файл сценария:

#!/bin/sh
#
# /etc/init.d/monetdb
# Subsystem file for "MonetDB" starter
#
# chkconfig: 2345 95 05
#
# processname: MonetDB
# pidfile: /var/run/MonetDB.pid

. /etc/init.d/functions

case "$1" in
start)
        su - monetka -c ". start.sh"

        touch /var/lock/subsys/monetdb
        ;;
stop)
        su - monetka -c ". stop.sh"

        rm -f /var/lock/subsys/monetdb
        ;;
status)
        status monetdb
        ;;
restart|reload|condrestart)
        /etc/init.d/monetdb stop
        /etc/init.d/monetdb start
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|reload|status}"
esac
exit 2

Я использую самодельный start.sh а также stop.sh сценарии, расположенные на monetka пользователь, который выполняется нормально каждый раз. Но когда я хочу запустить свой сервис, я получаю сообщение об ошибке и следующую информацию:

monetdb.service - SYSV: MonetDB starter
   Loaded: loaded (/etc/rc.d/init.d/monetdb)
   Active: failed (Result: exit-code) since śro 2015-04-29 14:36:30 CEST; 16min ago
  Process: 5390 ExecStart=/etc/rc.d/init.d/monetdb start (code=exited, status=2)

kwi 29 14:36:30 yamny.centOS systemd[1]: Starting SYSV: MonetDB starter...
kwi 29 14:36:30 yamny.centOS su[5391]: (to monetka) root on none
kwi 29 14:36:30 yamny.centOS monetdb[5390]: [śro, 29 kwi 2015, 14:36:30 CEST] MonetDB: dbfarm jest już ur...miona
kwi 29 14:36:30 yamny.centOS monetdb[5390]: [śro, 29 kwi 2015, 14:36:30 CEST] MonetDB: baza demo jest już...miona
kwi 29 14:36:30 yamny.centOS systemd[1]: monetdb.service: control process exited, code=exited status=2
kwi 29 14:36:30 yamny.centOS systemd[1]: Failed to start SYSV: MonetDB starter.
kwi 29 14:36:30 yamny.centOS systemd[1]: Unit monetdb.service entered failed state.

Кроме того, согласно отчету выше, start.sh скрипт работает нормально (как я уже говорил).

Что я сделал до сих пор:

  1. созданный /etc/init.d/monetdb скрипт на корень
  2. Добавлен сервис с chkconfig --add monetdb
  3. Запустите сервис с systemctl start monetdb.service

2 ответа

Решение

Хорошо, я решил проблему после удаления некоторых строк из /etc/init.d/monetdb скрипт

#!/bin/sh
#
# /etc/init.d/monetdb
#
# chkconfig: 2345 95 05
# description: MonetDB starter
#
case "$1" in
start)
        su - monetka -c ". start.sh"
        ;;
stop)
        su - monetka -c ". stop.sh"
        ;;
restart)
        /etc/init.d/monetdb stop
        /etc/init.d/monetdb start
        ;;
esac

Затем добавлен сервис с chkconfig --add monetdb, а также systemctl start/stop monetdb работает как шарм...

Возможно, что "/etc/init.d/functions" не существует, что может привести к сбою исходного сценария.

Учитывая комментарий Рэмхаунда, я понимаю, что мог бы быть более ясным в своем ответе. Я столкнулся с точно такой же проблемой, и в моем случае сценарий не удался, потому что файл /etc/init.d/functions не существовал. (На моем CentOS 6.7 он находится по адресу /etc/rc.d/init.d/functions). Учитывая, что Yammy самостоятельно решил свою проблему, "удалив некоторые строки" из своего оригинального сценария (который включал проблемную ссылку /etc/init.d/functions), я подумал, что другим может помочь более конкретный ответ.

Тем не менее, сценарий может также иметь дополнительные проблемы, поэтому я сформулировал свой ответ как "Возможно, что..."

Я удивлен, что Ramhound находит, что мой ответ не дает ответа и что он требует разъяснений от автора. Возможно, Ramhound мог бы дать немного больше разъяснений о том, где он чувствовал, что мой ответ требовал разъяснений от оригинального постера. Пытливые умы хотят знать.

Другие вопросы по тегам