OS X에서 즉시 작업이 실행되는 이유는 무엇입니까? 명령을 사용하여 atrun을 활성화했습니다. launchctl

Mac OS X에서 정확한 시간에 대한 일정을 예약하고 싶습니다. ‘at’명령이이를 수행하는 가장 간단한 방법 인 것처럼 보입니다.

명령을 사용하여 atrun을 활성화했습니다.

launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

테스트를 위해 다음 행의 BASH 스크립트를 사용하고 있습니다.

echo 'foo' >> path/to/log.txt | at now + 2 minutes

스크립트를 실행하면 다음과 같은 출력이 표시됩니다.

job 17 at Sat May 15 12:57:00 2010

여기서 ’12 : 57 : 00 ‘은 실제로 2 분 후입니다. 그러나 echo 명령은 즉시 실행됩니다. ‘foo’줄이 log.txt에 바로 추가됩니다.

나를 위해 직장에서 어떻게 만들 수 있습니까?



답변

당신은 잘못하고있다. at 명령을 stdin에서 텍스트로 읽으면 파이프 라인에서 마술처럼 명령을 알 수 없습니다.

너의 명령 …

echo 'foo' >> path/to/log.txt | at now + 2 minutes

… 실행 양자 모두 echoat 동시에, 파이프 라인에서. (생각한다 cat somefile | grep sometext ) 그래서 at 그 말을 듣겠다. foo 그 표준에. 그러나, echo 파일로 리디렉션됩니다. at 아무것도받지 못한다.


올바른 명령은 다음과 같습니다.

echo "echo 'foo' >> path/to/log.txt" | at now + 2 minutes