upstart 配置以非 root 用户身份启动同步守护进程

upstart 配置以非 root 用户身份启动同步守护进程

我打算使用同步 将数据从主服务器同步到多个客户端服务器。我在主服务器和从服务器中都创建了一个名为 rsyncuser 的用户,并赋予其访问权限以及从主服务器到从服务器的无密码 ssh 访问权。

当我以 rsyncuser 身份从命令行使用 Inosync 时,它正在运行。

接下来我想让它在服务器开启时自动启动。我认为 upstart 是实现这个功能的方法。

我无法找到正确的 upstart 命令来实现这个功能。

这是我的 upstart conf 文件。问题似乎出在以给定用户身份运行“inosync -d -c /etc/inosync/inosync_rsyncuser.py”上。

正如您所看到的,我尝试了许多不同的选择!

描述“启动 inosync 以 rsyncuser 身份同步数据到其他 CDN 服务器”
控制台输出
#开机时启动
#关机时停止
启动(网络设备和本地文件系统)
在运行级别 [016] 停止

#在运行级别启动 [2345]
#在运行级别停止 [!2345]
#终止超时 30
env RUN_AS_USER=rsyncuser

期望分叉

脚本
   echo "Inosync updtart 作业似乎已启动" >> /tmp/upstart.log
# 执行 sudo -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1
# LOGFILE=/var/log/logfile.`date +%Y-%m-%d`.log

# exec su - $RUN_AS_USER -c "inosync -d -c /etc/inosync/inosync_rsyncuser.py" >> $LOGFILE 2>&1
# exec su -c "ls -la" >> /tmp/upstart.log 2>&1
# 发出 inosync_running
结束脚本

答案1

sudo 默认会破坏大部分环境。尝试以下操作(添加 -E):

exec sudo -E -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1

-E告诉 sudo 保护环境。

相关内容