特定のユーザーがシステムを起動したときに独自のbashスクリプトを実行してください。

特定のユーザーがシステムを起動したときに独自のbashスクリプトを実行してください。

システムの起動時に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 ...;"

しかし、良く見えません。

関連情報