web-dev-qa-db-ja.com

systemd rqworkerサービス

Systemdサービス、作成したいのですが失敗します。これは私が作成した私のサービスです。

_[Unit]
Description=rqworker daemon
After=network.target

[Service]
Type=simple
WorkingDirectory=/home/ubuntu/mamster
User=ubuntu
Group=ubuntu
#EnvironmentFile=/etc/sysconfig/master.env
#Environment="PYTHONPATH=/home/ubuntu/venv"
ExecStart=/home/ubuntu/venv /venv/bin/rqworker master
StandardOutput=/home/ubuntu/logs/icengine/std_out.log
StandardError=/home/ubuntu/logs/icengine/std_err/log
#SyslogIdentifier=icengin
KillMode=process
Restart=always
TimeoutSec=infinity
RestartPreventExitStatus=255
Type=notify

[Install]
WantedBy=multi-user.target
Alias=master.service
_

最初はこのサービスはActiating(Start)でしたが、Activeではありませんでした

しかし、いくつかの変更を加えた後、エラーが表示されます:

_Sudo systemctl start rq_を実行した後

_(venv) ubuntu@ubuntucalc:~$ Sudo systemctl status rq
● rq.service - rqworker daemon
   Loaded: loaded (/etc/systemd/system/rq.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2019-01-15 06:53:20 UTC; 4s ago
  Process: 18537 ExecStart=/home/ubuntu/venv /venv/bin/rqworker master (code=exited, status=200/CHDIR)
 Main PID: 18537 (code=exited, status=200/CHDIR)

Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Main process exited, code=exited, status=200/CHDIR
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Failed with result 'exit-code'.
Jan 15 06:53:20 ubuntucalc systemd[1]: Failed to start rqworker daemon.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Service hold-off time over, scheduling restart.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Scheduled restart job, restart counter is at 5.
Jan 15 06:53:20 ubuntucalc systemd[1]: Stopped rqworker daemon.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Start request repeated too quickly.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Failed with result 'exit-code'.
Jan 15 06:53:20 ubuntucalc systemd[1]: Failed to start rqworker daemon.
_

これは私が得た出力です。ありがとう

1
Rajat jain

そのユニットファイルにはいくつかの問題があります:

  • ファイルにはType=の2つのインスタンスが含まれ、1つはsimpleを含み、もう1つはnotifyを含みます。そのような行を1つだけ含める必要があり、適切なタイプでなければなりません。これは、実行可能ファイル/home/ubuntu/venvの動作に依存します。デーモンの場合、forkingがよく使用されます。
  • StandardErrorに指定するファイル名は、おそらく/home/ubuntu/logs/icengine/std_err.logではなく/home/ubuntu/logs/icengine/std_err/logである必要があります。ユーザーubuntuがその場所に書き込むことができ、ディレクトリが存在することを確認してください。パスが存在しない場合、systemdはパスを作成しません(ただし、ファイルが作成されます)。
  • StandardOutput=およびStandardError=の構文が間違っています。 docs によると、sysntaxはStandardOutput=file:/home/ubuntu/logs/icengine/std_out.logです。 StandardErrorについても同様です。
1
PerlDuck