在脚本中更改用户?

在脚本中更改用户?

我正在尝试更改用户以便在启动期间执行特定命令。它默默地失败,显然用户更改没有执行,因为我可以看出该命令没有执行。

我在下面显示的 initscript 中做错了什么?

respawn
console none

start on startup
stop on shutdown

script
  su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script

答案1

我假设您正在运行最新版本的 ubuntu 或基于暴发户。您可以检查/var/log/daemon.log是否有错误。

该标准su采用语法su [options] [username]。查看man 1 su。您可能想尝试:

su -c "myCommand" anotheruser >> "myLogfile.log"

另外,会发生一些事情(大多是不可取的)

  1. myLogfile.log将由 拥有root
  2. myLogfile.log/如果您不使用类似的绝对路径/tmp/myLogfile.log(因为 upstart 运行时 pwd 设置为/),则会在(根目录)上创建。

如果您希望该文件归您所有,anotheruser您可以将命令切换到。

su -c "myCommand >> /tmp/myLogfile.log" anotheruser

myLogfile.log如果您有早期运行的剩余内容root,或者没有更改myLogfile.log为类似的内容/tmp/myLogfile.log(通常,普通用户无法在 root dir 上创建文件/),这可能会导致问题。

答案2

看来您混淆了suand的语法sudo

su -c 'mycommand' anotheruser
sudo -u anotheruser 'mycommand'

相关内容