shell命令中的su命令

时间:2014-09-02 09:07:37

标签: linux bash shell unix

我有一个脚本可以复制文件,然后在多个系统上解压缩并安装它(代理服务)(从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

1 个答案:

答案 0 :(得分:4)

在此处使用su会生成一个无法执行任何操作的新shell,因此会立即退出。

将命令传递给su

su - test -c /opt/linux/agent-service start

或以类似的方式使用sudo

sudo -u test /opt/linux/agent-service start