我使用的是 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'