
私はUbuntu 14.04を使用しています。ルートとしてログインし、別のコマンド(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
postgres ユーザーのデフォルト シェルに渡そうとしています'pg_upgradecluster 9.3 main'
。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
または明示的にシェルを選択するには:
su - postgres -s /bin/bash -- -c 'pg_upgradecluster 9.3 main'