在 Ubuntu 上以其他用户身份运行命令时遇到问题

在 Ubuntu 上以其他用户身份运行命令时遇到问题

我使用的是 Ubuntu 14.04。当以 root 身份登录时,我尝试以另一个(postgres)身份运行命令。然而,它失败了

root@remotebox:/home/rails/myproject# su - postgres 'pg_upgradecluster 9.3 main'
-su: pg_upgradecluster 9.3 main: No such file or directory

我究竟做错了什么?

答案1

您正在尝试传递'pg_upgradecluster 9.3 main'到 postgres 用户的默认 shell。根据 postgres 用户配置,这可能意味着'pg_upgradecluster 9.3 main'在 postgres PATH 中执行文件,这就是您收到“没有此类文件或目录错误”的原因。

尝试将参数作为命令传递(-c):

su - postgres -c 'pg_upgradecluster 9.3 main'

作为外壳:

su - postgres -s /path/to/pg_upgradecluster -- 9.3 main

或者显式选择 shell:

su - postgres -s /bin/bash -- -c 'pg_upgradecluster 9.3 main'

相关内容