sudo에서 어떻게 실행하나요?

sudo에서 어떻게 실행하나요?

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

관련 정보