crontab, um osx aus dem schlaf zu wecken

18

Ich habe eine Crontab, die am frühen Morgen (nachdem ich eingeschlafen bin) ein bestimmtes Programm startet und am späteren Morgen (bevor ich aufwache) wieder schließt. Aber mein iMac führt das crontab-Skript nicht aus, während er schläft.

Ich sehe, dass es einige Einstellungen gibt, um die Maschine zu wecken und zu einer bestimmten Zeit wieder in den Ruhezustand zu versetzen, aber gibt es eine Möglichkeit, dies mit der Crontab zu tun?

Nippysaurus
quelle

Antworten:

27

cronwird nicht ausgeführt, während der Computer schläft, sodass Sie keinen crontab-Eintrag haben können, um den Computer zu wecken. Das heißt, Sie können den Computer so einstellen, dass er nur eine oder zwei Minuten vor Ihrer Cron-Aufgabe in den Einstellungen >> Energiesparmodus >> Zeitplan aktiviert wird.

Es ist auch erwähnenswert, dass Apple seit Tiger die meisten geplanten Jobs cronund Skripte init.rcin den launchdProzess verschoben hat . Es bietet detailliertere (aber meiner Meinung nach umständliche) Kontrollmöglichkeiten (über mehrere plist-Dateien). Außerdem werden automatisch Aufgaben ausgeführt, die nicht ausgeführt wurden, weil der Computer beim Aufwachen in den Energiesparmodus versetzt wurde. Sehen Sie sich die Seite " Scheduling Timed Jobs" von Apple an .

jtb
quelle
Die Verbindung ist unterbrochen.
Rückzug
1
Gute Antwort, aber können Sie es aufwecken, wenn der Laptop geschlossen ist?
User
4

Eine andere Möglichkeit, das Aufwachen aus dem Schlaf zu planen, ist die Verwendung von pmset:

sudo pmset repeat wakeorpoweron MTWRFSU 03:45:00

launchd kann einen Computer nicht aus dem Energiesparmodus aktivieren, führt jedoch Jobs aus, die nach dem Aufwecken im Energiesparmodus geplant sind. Wenn andere danach suchen, können Sie diese Liste beispielsweise speichern als ~/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>

Dann lauf launchctl load ~/Library/LaunchAgents/some.label.plist.

Lri
quelle
3

Sie können festlegen, dass Ihr Macintosh im Einstellungsfenster "Energie sparen" aktiviert wird. Siehe die Schaltfläche Zeitplan.

Richard Hoskins
quelle
2

Vielleicht möchten Sie sich mit Anacron befassen

Anacron führt die regelmäßigen täglichen, wöchentlichen und monatlichen Aufgaben auf Ihrem Mac aus, auch wenn der Computer (z. B. ein Laptop) einen Großteil seiner Zeit im Schlaf oder im ausgeschalteten Zustand verbringt. Anacron überprüft stillschweigend beim Neustart und alle 60 Minuten, während der Computer ausgeführt wird, ob die verschiedenen periodischen Skripts überfällig sind, und führt sie gegebenenfalls aus. Der Vorteil von Anacron gegenüber vielen anderen Lösungen für dieses Problem besteht darin, dass es als ordnungsgemäßer Unix-Hintergrundprozess ausgeführt wird, keine Benutzereingriffe erfordert und die regelmäßigen Skripts verwendet.

Eine andere Anwendung, die den Trick machen könnte, ist Awaken

Bruce McLeod
quelle
1

cron wird nicht ausgeführt, wenn sich OSX im Ruhemodus befindet.

Sie können in aussehen soll cronwake (muss über Google laufen übersetzen , wie die Website japanisch ich glaube , ist) und anacron , oder Sie können nur die verwenden Energy SaverAnwendung eine Aufwachzeit zu planen um das Skript auszuführen, es dann in den Schlaf zurückstellen .

John T
quelle