web-dev-qa-db-ja.com

osxをスリープから復帰させるcrontab

私はcrontabを使用して、特定のプログラムを朝早く(寝てから)起動し、朝遅くに(起床する前に)閉じます。しかし、私のiMacは、スリープしている間はcrontabスクリプトを実行しません。

マシンをウェイクアップし、指定した時間に再度スリープさせる設定があるようですが、crontabを使用してこれを行う方法はありますか?

18
Nippysaurus

cronは、コンピューターがスリープしている間は実行されないため、コンピューターをスリープ解除するためのcrontabエントリーを作成する方法はありません。そうは言っても、「設定」>「エネルギー節約」>「スケジュール」で、cronタスクの1分か2分前に起動するようにコンピューターをスケジュールできます。

Tiger以降、Appleがほとんどのスケジュールされたジョブをcronおよびinit.rclaunchdプロセスに追加します。これは、(いくつかのplistファイルを介して)より詳細な(しかし扱いにくいと思います)制御手段を提供します。また、コンピューターが目覚めたときにコンピューターがスリープ状態だったために実行されなかったタスクを自動的に実行します。 Appleの Scheduling Timed Jobs ページを見てください。

29
jtb

スリープからのウェイクアップをスケジュールするもう1つの方法は、pmsetを使用することです。

Sudo pmset repeat wakeorpoweron MTWRFSU 03:45:00

launchdはコンピュータをスリープ状態から復帰させることはできませんが、スリープ状態から復帰した後にスケジュールされたジョブを実行します。他の人がそれを行う方法を検索する場合、たとえば、このplistを~/Library/LaunchAgents/some.label.plistとして保存できます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>some.label</string>
  <key>ProgramArguments</key>
  <array>
    <string>say</string>
    <string>a</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>23</integer>
    <key>Minute</key>
    <integer>59</integer>
  </dict>
</dict>
</plist>

次に、launchctl load ~/Library/LaunchAgents/some.label.plistを実行します。

4
Lri

省エネルギー設定パネルで、Macintoshが起動するようにスケジュールできます。 「スケジュール」ボタンを参照してください。

3
Richard Hoskins

あなたは調べたいかもしれません Anacron

Anacronは、マシン(ラップトップなど)がスリープ状態またはスイッチオフ状態の時間の多くを費やしている場合でも、Macで定期的な毎日、毎週、および毎月のタスクを実行します。 Anacronは、コンピューターの実行中に再起動したときと60分ごとに静かにチェックして、さまざまな定期的なスクリプトが期限切れかどうかを確認し、必要に応じて実行します。この問題に対する他の多くのソリューションに対するAnacronの利点は、適切なUnixバックグラウンドプロセスとして実行され、ユーザーの介入を必要とせず、通常の定期的なスクリプトを使用します。

トリックを行う可能性のある別のアプリケーションは 覚醒 です。

2
Bruce McLeod

oSXがスリープモードの場合、cronは実行されません。

cronwake (サイトは日本語なので、Google翻訳を実行する必要があります)と anacron を調べるか、Energy Saverアプリケーションを起動して、スクリプトを実行する起床時間をスケジュールしてから、スリープ状態に戻します。

1
John T