我正在尝试更改用户以便在启动期间执行特定命令。它默默地失败,显然用户更改没有执行,因为我可以看出该命令没有执行。
我在下面显示的 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"
另外,会发生一些事情(大多是不可取的)
myLogfile.log
将由 拥有root
。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
看来您混淆了su
and的语法sudo
。
su -c 'mycommand' anotheruser
sudo -u anotheruser 'mycommand'