CentOSサーバーで作業しており、次のコマンドを使用してタスクをスケジュールしています。at
# echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 2 at Wed Oct 31 13:52:00 2018
1分後、
# ls | grep a_long_file_name_file.tx
a_long_file_name_file.txt
ファイルが正常に作成されました。
しかし、macOSでローカルで実行すると
$ echo "touch a_long_file_name_file.txt" | at now + 1 minute
job 31 at Wed Oct 31 13:58:00 2018
数分後にそのファイルが生成されない場合。
at
CentOSサーバーでバージョンを確認しました
AUTHOR:
At was mostly written by Thomas Koenig, [email protected].
2009-11-14
これと比較して、macOSバージョンは
AUTHORS
At was mostly written by Thomas Koenig <[email protected]>. The time parsing routines are
by
David Parsons <[email protected]>, with minor enhancements by
Joe Halpin <[email protected]>.
BSD January 13, 2002
私はそれがGNU coreutilsではないat
ことをatq
発見しました。atrm
$ ls /usr/local/opt/coreutils/libexec/gnubin/ | grep at
cat
date
pathchk
realpath
stat
truncate
at
macOSに最新バージョンをインストールして動作させるにはどうすればよいですか?
ベストアンサー1
at
macOSで関連ツールを更新する代わりに、macOSのデフォルトツールが機能しようとしますat
。
macOSのドキュメントには次のat
ように記載されています(私が強調しています)。
実装ノート
これはデーモンへの定期的な呼び出し
at
によってlaunchd(8)
行われますatrun(8)
。デフォルトでは無効。atrun(8)
有効化の詳細についてはを参照してくださいatrun
。
atrun
マニュアルを確認してください。
説明する
この
atrun
ユーティリティは待機中のコマンドを実行しますat(1)
。プロパティリストlaunchd(8)
で指定されているとおりに定期的に呼び出されますcom.apple.atrun.plist
。デフォルトでは、プロパティリストにはtrueに設定されている無効なキーが含まれているためatrun
呼び出されません。有効にするには、rootとして次のコマンドを実行します
atrun
。launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
at
おそらく、ここで何が起こっているのか、そして他の関連する質問を引き起こすのは、atrun
macOSのインストールでアクティブになっていないからだと思います。
launchctl
macOS Mojaveでは、上記のコマンドの実行(使用)に加えて、システムのセキュリティとプライバシー設定の「フルディスクアクセス」を使用してコマンド/アプリケーションのリストにsudo
追加する必要があります。/usr/libexec/atrun
私はこれがセキュリティに与える影響を知りません。個人的には、/usr/sbin/cron
cronジョブを機能させるためにそこにエントリも追加しました(他のコンピュータで作業しているため、下のスクリーンショットには表示されません)。
/usr
パスからコマンドを追加するには(macOSの[ファイルの選択]ダイアログボックスに表示されません)、[ファイルの選択]ダイアログボックスがCmd+Shift+G開いたら(ウィンドウの下部にあるプラスアイコン/ボタンを押した後)、キーを押します。
これらの変更を行った後、コンピュータを再起動する必要はありません。私はこれをmacOS Mojave 14.10.1でテストしました。