我有一个脚本可以复制文件,然后在多个系统上解压缩并安装它(代理服务)(从systems.txt文件中读取IP)。在脚本中,我想以用户" test"启动代理服务。但是在脚本执行之后,当我检查目标系统时,代理服务显示为" root"用户。这可能有什么问题?我在脚本中没有使用su命令吗?
~]# ps -ef | grep agent-service
root 23511 15196 0 02:12 pts/3 00:00:00 agent-service
脚本>
#!/bin/bash
export AGENT=linux-5.8.1.tar.gz
while read host; do
scp $AGENT root@$host:/opt
ssh -n root@$host 'cd /opt/linux;
tar zxvf linux-5.8.1.tar.gz;
mkdir /opt/hyperic;
useradd -m test;
chown -R test:test /opt/linux;
su - test;
/opt/linux/agent-service start'
done < systems.txt
答案 0 :(得分:4)
在此处使用su
会生成一个无法执行任何操作的新shell,因此会立即退出。
将命令传递给su
:
su - test -c /opt/linux/agent-service start
或以类似的方式使用sudo
:
sudo -u test /opt/linux/agent-service start