Configurando a tarefa de rake rails como um serviço no systemd

2

Portanto, estou tentando configurar alguns processos em segundo plano do aplicativo para iniciar na inicialização usando o systemd. Sempre me dá o código de saída e não sei por quê. Eu pensei que o comando ExecStart está sendo executado em um diretório errado. Então eu adicionei ExecStartPre para a saída do diretório atual, mas ele não foi executado também.

Aqui está o meu arquivo de serviço:

[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

E o log de mensagens mostra quando executo 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.

Como posso saber o que está errado? Eu tentei executar o comando no shell e funciona (se estivesse no diretório correto). O servidor está rodando no Fedora 15.

    
por wael34218 24.04.2013 / 11:23

1 resposta

2

O systemd não suporta comandos shell arbitrários com suas instruções Exec* , portanto, o redirecionamento que você está tentando não funcionará. Você poderia escrever um script rápido e chamar isso:

/home/epic/pwd.sh:

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

ExecStartPre=/home/epic/pwd.sh

Além disso, você pode querer ler os wrappers do rvm para ver se isso seria melhor do que chamar o rake diretamente do caminho da instalação do rvm, link

    
por 30.10.2013 / 00:39