"at"를 사용하여 macOS에서 실행되도록 스크립트를 예약하는 방법은 무엇입니까?

"at"를 사용하여 macOS에서 실행되도록 스크립트를 예약하는 방법은 무엇입니까?

다른 스크립트가 실행된 후 얼마 후에 실행해야 하는 Python 스크립트를 작성했습니다. 나는 at명령을 찾았고 약간의 파고 후에 다음을 시도했습니다 (가독성을 위해 여러 줄로 나누었습니다).

/private/var/folders/w9/6q0rjl6n4yv859fpxbg4123w0000gn/T/S10/fm-git.py
--filename chiv-lib --repository /Users/chuck/Projects/chivalry/chiv-lib/
--path Chivalry/ --comment "test" | at 2:52pm

그러면 즉시 스크립트가 실행되었습니다. 그래서 나는 노력했다

at 2:53pm
> /private/var/folders/w9/6q0rjl6n4yv859fpxbg4123w0000gn/T/S10/fm-git.py
> --filename chiv-lib --repository /Users/chuck/Projects/chivalry/chiv-lib/
> --path Chivalry/ --comment "test"
> ^D

하지만 시간이 흘렀고 스크립트가 실행되지 않았습니다. 위의 처리 후 at -l출력은 다음과 같습니다.

13  Mon Nov 27 02:53:00 2017
12  Mon Nov 27 14:52:00 2017

이것은 macOS High Sierra에 있습니다. at이것이 올바른 유틸리티입니까? 그렇다면 여기서 내가 원하는 것을 어떻게 수행할 수 있습니까?

답변1

Mac OS X에서(이 하드웨어는 macOS를 실행하기에는 너무 오래되었기 때문에) 살펴보겠습니다.myatat원하는 날짜 형식이 기억나지 않아서 ...

$ date
domingo, 26 de noviembre de 2017, 16:34:12 PST
$ myat 16:36
touch $HOME/nananananananananananananananana-atran
job 2 at Sun Nov 26 16:36:00 2017
$ atq
1       Wed Mar  9 08:00:00 2016
2       Sun Nov 26 16:36:00 2017
$ 

...2016년에도 여전히 일자리가 있는 이유는 무엇입니까?

$ date
domingo, 26 de noviembre de 2017, 16:36:33 PST
$ atq
1       Wed Mar  9 08:00:00 2016
2       Sun Nov 26 16:36:00 2017
$ 

흠... 매뉴얼 페이지가 at도움이 될까요?

IMPLEMENTATION NOTES
     Note that at is implemented through the launchd(8) daemon periodically
     invoking atrun(8), which is disabled by default.  See atrun(8) for infor-
     mation about enabling atrun.

동시에 atrun(8)우리는 발견했습니다 ...

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

어머나. 해 보자...

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

그런 다음 1~2분 정도 기다립니다.

$ atq
$ ls *atran
nananananananananananananananana-atran
$ 

켜면 좋아 보입니다(배터리나 귀중한 CPU 칩이 소모될 수 있다는 경고...)

관련 정보