Назад | Перейти на главную страницу

Настройка rails rake task как службы в systemd

Итак, я пытаюсь настроить некоторые фоновые процессы приложений для запуска при загрузке с помощью systemd. Он всегда дает мне код выхода 127, и я не уверен, почему. я думал что ExecStart команда выполняется в неправильном каталоге. Я добавил ExecStartPre для вывода текущего каталога, но он также не был выполнен.

Вот мой служебный файл:

[Unit]
Description=Background processes

[Service]
Type=simple
User=epic
Environment=RAILS_ENV=production
WorkingDirectory=/home/epic/application
ExecStartPre=/bin/pwd > /home/epic/test.sys
ExecStart=/usr/local/rvm/gems/ruby-1.9.3-p194/bin/rake jobs:work

И журнал сообщений показывает, когда я выполняю systemctl start epic.service:

Apr 24 05:13:01 application systemd[1]: epic.service: main process exited, code=exited, status=127
Apr 24 05:13:01 application systemd[1]: Unit epic.service entered failed state.

Как я могу узнать, что идет не так! Я попытался выполнить команду в оболочке, и она работает (если она была в правильном каталоге). Сервер работает на Fedora 15.

systemd не поддерживает произвольные команды оболочки с помощью Exec* операторы, поэтому перенаправление, которое вы пытаетесь, не сработает. Вы можете написать быстрый сценарий и назвать это:

/home/epic/pwd.sh:

#!/bin/sh
/bin/pwd > /home/epic/test.sys

ExecStartPre=/home/epic/pwd.sh

Также вы можете почитать об обертках rvm, чтобы узнать, будет ли это лучше, чем вызов rake непосредственно из пути установки rvm, http://deepakprasanna.blogspot.com/2011/06/rvm-wrappers.html