システム単位ファイルの作成中に問題が発生しました

システム単位ファイルの作成中に問題が発生しました

コマンドを置き換えるためにシステム単位のファイルを生成しようとしています。

RAILS_ENV=development bundle exec rails resque:start_workers[2]

オペレータが機械を起動したときに起動できるようにします。私が作成したファイルは次のとおりです。

[Unit]
Description=background workers
After=httpd.service solr.service

[Service]
Environment=RAILS_ENV=development
ExecStart=/usr/local/bin/bundle exec rails resque:restart_workers[2]
User=deploy
WorkingDirectory=/opt/wonda/current
Environment=rvm_bin_path=/usr/local/rvm/bin
Environment=GEM_HOME=/usr/local/rvm/gems/ruby-2.5.1
Environment=SHELL=/bin/bash
Environment=IRBRC=/usr/local/rvm/rubies/ruby-2.5.1/.irbrc
Environment=MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.5.1
Environment=LD_LIBRARY_PATH=/opt/rh/rh-php71/root/usr/lib64
Environment=PATH=/usr/local/rvm/gems/ruby-2.5.1/bin:/usr/local/rvm/gems/ruby-2.5.1@global/bin:/usr/local/rvm/rubies/ruby-2.5.1/bin:/usr/local/rvm/bin:/opt/rh/rh-php71/root/usr/bin:/opt/rh/rh-php71/root/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/sbin:/usr/local/sbin:/opt/puppetlabs/bin
Environment=GEM_PATH=/usr/local/rvm/gems/ruby-2.5.1:/usr/local/rvm/gems/ruby-2.5.1@global
Environment=DBUSER=wonda
Environment=DBPASS=***************

[Install]
WantedBy=multi-user.target

実行すると、システムはワーカーを起動しようとし、さらにpidを提供しますが、実行中としてマークされません。ここにロギングを追加しましたが、出力はありません。

誰かが私が間違っていることを教えてもらえますか?

ベストアンサー1

使用しているようですが、rvm手動で多くを設定する必要があります。rvm-execこの目的で作られたようです。端末で作業できる場合は、rvm-execサービスに切り替えるときに間違いを起こす可能性が低くなります。

<残りの問題を確認>

ExecStart=/usr/local/bin/bundle exec rails resque:restart_workers[2]

それでは、どこから来たのでしょうかresque:restart_workers

これは、誤った準備プロトコルを使用する典型的な問題のように聞こえます。systemdすべてのプロセスが終了すると驚きます。アイデア主なプロセスです。フォークして終了します。

可能であれば、systemdを使用して実行するコマンドは次のようになります。いいえ「バックグラウンドプロセス」にフォークします。たとえば、端末でこれを実行する場合は、フォアグラウンドで実行されるコマンドが必要です。これは暗黙の基本タイプとうまく[service]機能しますType=simple。設定がType=execより良いエラー報告を提供しますが、気に入らない理由はありません:-)。

できない場合 - またはサービスがいつ開始されるかを正確に知る必要があります。正しくReadyプロトコルを実装しますType=forkingが、それより良いものはありませんType=forking。 。

おすすめ記事