2017-12-02 26 views
1

나는 CPU 스로틀을위한 SH-스크립트를 찾은 다음과 같은 방법으로 애플 스크립트를 사용하여 시작에 일정을 싶습니다할 쉘 스크립트 결과

do shell script "sudo /Users/BohdanAir/Documents/Automation/cputhrottler.sh" "password mypassword" with administrator privileges 

그리고 다음과 같은 오류가 발생합니다 :

error "sudo: /Users/BohdanAir/Documents/Automation/cputhrottler.sh: command not found" number 1 

PS :sh 파일로 제공되는 패스가 완전히 Get Info 옵션에서 복사되는 (CDM + I)

+1

**'sudo'는'with administrator privileges'와 함께 사용하지 마십시오 ** [TechNote 2065] (https://developer.apple.com/library/content/technotes/tn2065/_index.html)를 참조하십시오. 'sudo'를 제거하십시오 – vadian

+1

varian이 훌륭한 점을 내놓았지만 그럼에도 불구하고 오류가 발생하는 가장 큰 이유는 실행 파일로 설정되지 않은 스크립트를 실행하려고하거나 쉘 실행에 대한 직접적인 인수로 실행 되었기 때문입니다. 자세한 내용은 내 대답을 참조하십시오. – user3439894

답변

1

do shell script질문에 표시된 명령이 컴파일되지 않은 경우에도 그 오류 메시지가 어떻게 수신되는지 확실하지 않습니다.

"password mypassword" 부분은 컴파일시 실제로는 password "mypassword"이어야합니다.

이유 당신이 얻고 : cputhrottler.sh이 실행으로 설정되어 있기 때문에

error "sudo: /Users/BohdanAir/Documents/Automation/cputhrottler.sh: command not found" number 1 

입니다.

는 실행 다음 명령을 사용하십시오 :

chmod u+x /Users/BohdanAir/Documents/Automation/cputhrottler.sh 

이 그것을 실행하고 특정 오류 메시지가 발생하지 수 있습니다.

는 다음과 같은 규칙을 사용 또는 :

do shell script "sh /Users/BohdanAir/Documents/Automation/cputhrottler.sh" password "mypassword" with administrator privileges 

sudosh로 대체, 또는 다른 를 사용하고 있습니다. 이런 식으로 쉘 스크립트을 실행할 필요가 없도록 만들 수 있습니다.

+0

당신은 그것이 실행 가능 상태가 아니기 때문에 규칙을 사용하면 완벽하게 실행됩니다. 고맙습니다 :) – volna

+0

@Bohdan Afanasyev, 예, 쉘 스크립트를 직접 실행하려면 실행 가능해야합니다. 그렇지 않으면 쉘 자체의 실행에 인수로 전달되어야합니다. 두 가지 방법 모두 효과가 있습니다. 단지 선호의 문제 일뿐입니다. 개인적으로 필자는 셸 실행에 대한 인수로 전달하는 직접 실행 가능한 내 셸 스크립트를 만드는 것을 선호합니다. – user3439894