私はこの行をPHPで実行しました
sudo -u db2inst1 -s -- "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
sudo版ではうまくいきます1.7.2。
これで新しいサーバーができましたSUSE Linux Enterprise Server 11 (x86_64)
。 sudoがなく、リポジトリ(Sudoバージョン)からインストールしました。1.6.9p17) しかし、上記の構文は機能しません。投げるbin/bash: /opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'": No such file or directory
どうすればいいのかご存知ですか?
/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 "update EDU.contact set MOBILE_PHONE = '123'"
db2inst1アカウントで実行すると、すべてがうまく機能します。
答え1
なぜこのエラーが発生するのかわかりません。私はsudo 1.8.3を使用するシステムを持っており、ドキュメントにはうまくsudo -s "echo hi"
いくべきだと述べていますが、うまくいきません。
私がいつもやってきた方法は、同じことを-s [command]
手動で行うことです。
sudo sh -c 'echo hi'
またはあなたの場合
sudo -u db2inst1 sh -c "/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin/db2 \"update EDU.contact set MOBILE_PHONE = '123'\""
-s
議論が常に存在するわけではないので、より互換性が高くなります(残念ながら私はそれに取り組んでいる非常に古い機械を持っています)。
編集:
発生するエラーは、文字通り名前付きdb2 "update EDU.contact set MOBILE_PHONE = '123'"
ディレクトリにある実行可能ファイルを探していることです(たとえば、ディレクトリを探して/opt/ibm/db2/current/bin/db2 connect to PLC; /opt/ibm/db2/current/bin
います)。db2 connect to PLC;
これは明らかに存在しません。