在脚本中更改用户?

Ind*_*ial 2 users su init-script upstart

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

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

respawn
console none

start on startup
stop on shutdown

script
  su -u anotheruser -c "myCommand" >> "myLogfile.log"
end script
Run Code Online (Sandbox Code Playgroud)

Ani*_*nil 5

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

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

su -c "myCommand" anotheruser >> "myLogfile.log"
Run Code Online (Sandbox Code Playgroud)

此外,会发生一些事情(主要是不可取的)

  1. myLogfile.log将归root.
  2. myLogfile.log/如果您不使用绝对路径/tmp/myLogfile.log(因为 upstart 在 pwd 设置为 的情况下运行),则会在(根目录)上创建/

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

su -c "myCommand >> /tmp/myLogfile.log" anotheruser
Run Code Online (Sandbox Code Playgroud)

这个如果你有吃剩的可能导致问题myLogfile.logroot从早期的运行,或者如果没有改变myLogfile.log的东西像/tmp/myLogfile.log(通常情况下,普通用户不能创建在根目录的文件/)。