由特定用户在系统启动时运行自己的 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 ...;"

但看起来不太好。

相关内容