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ユーザーのプライマリシェルに渡したいです。 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'

関連情報