在新贵脚本中更改用户

changing user in upstart script

我有一个 upstart 脚本可以执行一些日志记录任务。脚本 testjob.conf 如下所示:

description "Start Logging"
start on runlevel [2345]

script
  sudo -u user_name echo Test Job ran at  `date` >> /home/user_name/Desktop/jobs.log
end script

然后我 运行 带有 sudo service testjob start 的脚本,结果得到 testjob stop/waiting。创建文件 jobs.log 并完成日志记录。但是该文件归 root 所有。我想改变这一点,因此在 .

中提到的命令前面添加了 sudo -u user_name 部分

然而,这似乎并不能解决问题。还有其他方法吗?

日志文件由 >> 间接创建,该间接在根 shell 的上下文中运行,该根 shell 也启动 sudo.

尝试让 sudo 开始创建文件的过程,例如:

sudo -u user_name sh -c 'echo Test Job ran at  `date` >> /home/user_name/Desktop/jobs.log'

在这种情况下,sh 运行 作为 user_name 将 "execute" >> 间接寻址。