システムの起動時にsidekiqを実行する一部のスクリプトに大きな問題があります。スクリプトは次のとおりです。
#!/bin/bash
cd /home/passenger/application
source /usr/local/rvm/environments/ruby-2.5.1@gemset
bundle exec sidekiq -d -L log/sidekiq.log -e testing -P tmp/sidekiq.pid
内側についています。/etc/rc.local動作しますが、root権限で実行されます。スクリプトパス:
/home/passenger/run_sidekiq
ユーザーの乗客権限で実行する必要があります。私は試した:
sudo -u passenger bash -c "bundle exec sidekiq -d -L log/sidekiq.log -e testing -P tmp/sidekiq.pid"
上記の組み合わせを多く使用しますが、何も機能しません。
答え1
非常にエレガントではありませんが、ユーザーのcrontabに追加できます。
したがって、ユーザーとしてpassenger
実行しcrontab -e
てから追加します。
@reboot /PATH/TO/SCRIPT
一番下に
答え2
完全なスクリプトをpassenger
。
sudo -u passenger -H bash -c /home/passenger/run_sidekiq
以前の実験でファイルを作成した場合、スーパーユーザー以外のユーザーはそのファイルを上書きできません。そのファイルを削除してください。
PS、もちろんあなたがしたいようにすべてのコマンドを実行できます。それらを分離するだけです。;
sudo -u passenger -H bash -c "cd /home/passenger/application; source ...; bundle ...;"
しかし、良く見えません。