「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チップが消耗する可能性があるという警告...)

おすすめ記事