나는이 줄을 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;
이것은 분명히 존재하지 않습니다.