我打算使用同步 将数据从主服务器同步到多个客户端服务器。我在主服务器和从服务器中都创建了一个名为 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 保护环境。