2013-07-19 2 views
4

MacOS에서 일부 쉘 스크립트를 한 번 실행하고 싶습니다."at"명령을 사용하여 MacOS에서 쉘을 실행하는 방법

처음에는 우분투에서 "at"명령을 시도해 보았습니다. 하지만 맥 OS에서 같은 방법을 사용할 때, 일이 내가 입력

잘못 :

$ at now + 2 minutes 
ls -al > tmpfile 
(ctrl+d,EOF) 

작업이 성공적으로 추가되었습니다.

의 출력은 "-l에서"입니다 :

(some other output) 
11   Fri Jul 19 15:18:00 2013 

하지만 15:18 이후, TMPFILE 변경되지 않았습니다

.

내가 corectly 맥 OS에서 명령 "에서"사용하는 방법을 알고 싶어하거나

답변

4

at

의 사용을 사용하여 한 번 (정기되지 않음) 특정 시간에 어떤 쉘 스크립트를 실행하는 다른 방법이있다 at이 올바르게 표시됩니다. 명령은 2 분 후에 실행됩니다. 이 명령은 반복적으로 실행되지 않으므로 now + 2 minutes이 평가되는 시간이 아닌 다른 시간에 파일이 수정되지 않는 이유가 여기에 있습니다.

at에 명령을 실행하는 데 문제가 있으면 atrun 실행 제어 에이전트가 활성화되어 있고 실행 중인지 확인하십시오. 자세한 내용은 man atrun을 참조하십시오.

더 나은 예약 된 명령 실행

당신은 당신이 다음 시스템 환경 설정>사용자>로그인 항목이 좋은 장소에 로그인 할 때 뭔가를 실행하려면

. 쉘 스크립트의 확장자를 .command으로 변경하십시오. 필요한지는 확실하지 않지만 OS가 그러한 스크립트에 선호하는 것 같습니다.

그렇지 않으면 cron을 사용하여 작업 실행을 제어하거나 launchd, mac 실행 제어 데몬을 사용하십시오 (man launchdman launchctl 참조). this blog post을 읽으십시오. OS X Launch Control Daemon을 사용하는 것이 좋습니다.

Launchd는 Mac에서 명령을 예약하는 데 선호되는 방법입니다. cron은 Linux 배경에서 오는 경우 더 익숙 할 수 있으므로 여기에서 언급하십시오. 자세한 내용은 this answer을보십시오.

+0

마지막으로 man 페이지 "atrun"의 단계로 문제를 해결합니다. "at"는 기본적으로 osx에서 사용할 수 없습니다. 어쨌든, 당신의 대답과 아이디어에 감사드립니다! – taoch

4

내가주의에서의 man 페이지에서 "페이지의": atrun에서

SEE ALSO 
nice(1), sh(1), umask(2), campact(5), atrun(8), cron(8), sendmail(8) 

(8) 솔루션이 제공됩니다.

Execute the following command as root to enable atrun: 
launchctl load -w 
/System/Library/LaunchDaemons/com.apple.atrun.plist 

이 명령을 sudo 한 다음 내 컴퓨터를 다시 시작한 후에 사용 가능하게됩니다.

+1

다시 시작하지 않아도됩니다. –

관련 문제