Phi*_*lip 30 ubuntu startup-scripts rc.local
我想在每次服务器启动时执行一个脚本。问题是我需要成为某个用户才能执行脚本,如果我尝试以 root 身份执行它,它找不到某些包(例如 ruby)。
我尝试更改为 xxx user01。
sudo su user01
/etc/init.d/script start
Run Code Online (Sandbox Code Playgroud)
然而这行不通。
Kyl*_*ith 33
sudo su user01
在脚本中运行并不意味着将以下命令发送到生成的 shell。事实上,这可能意味着一个新的 shell 以 user01 的身份生成,它永远不会退出!
两件事情:
-c 'command...'
参数传递给 su 来以其他用户身份执行命令,例如su user01 -c '/etc/init.d/script start'
.chkconfig
或 )启用该服务update-rc.d
。您也不希望 /etc/init.d 中的作业不应作为root
. 作业本身可以随意分叉到另一个用户帐户,但应由 root 调用。你可以放入一些东西/etc/crontab
并运行它@reboot
@reboot username /etc/init.d/script start
Run Code Online (Sandbox Code Playgroud)
小智 8
您可以像这样通过 sudo 运行命令:
sudo -H -u user01 /etc/init.d/script start
Run Code Online (Sandbox Code Playgroud)
-H 将 HOME 环境变量设置为用户的环境变量
-u 指定运行的用户名
归档时间: |
|
查看次数: |
81002 次 |
最近记录: |