Sie können Ihr Mac OS X-Konto so einstellen, dass der Bildschirm automatisch gesperrt wird, sodass das Kennwort nach einer bestimmten Zeit der Inaktivität erforderlich ist, aber können Sie dasselbe mit einem Zeitplan tun (z. B. jeden Tag um 17:30 Uhr)? So wie Sie den Computer zu einer bestimmten Zeit ein- / ausschalten oder in den Schlafmodus versetzen / aus dem Schlafmodus aufwachen können.
Sie können launchd
dazu verwenden. Fügen Sie die folgende XML-Datei in eine neue Textdatei ein ~/Library/LaunchAgents/
und nennen Sie sie etwas Beschreibendes mit einem Suffix von .plist
. Meine ist zum Beispiel ~/Library/LaunchAgents/logoutAt1730.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>Logout At 5:30 PM</string>
<key>ProgramArguments</key>
<array>
<string>/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession</string>
<string>-suspend</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>17</integer>
<key>Minute</key>
<integer>30</integer>
</dict>
</dict>
</plist>
Wenn Sie möchten, dass es im aktuellen Einschaltzyklus ausgeführt wird (z. B. wenn Sie nicht neu starten möchten, damit dies wirksam wird), verwenden Sie , um über das neue Element launchctl load ~/Library/LaunchAgents/logoutAt1730.plist
zu informieren . launchd
Es sollte automatisch geladen werden, wenn Sie sich das nächste Mal anmelden.
Verwenden launchctl list
und suchen Sie nach der Bezeichnungszeichenfolge (Abmelden um 17:30 Uhr), um zu bestätigen, dass launchd
das Element bekannt ist.
Ich habe überprüft, dass dies auf meiner Workstation funktioniert. Ich weiß nicht, warum cron
nicht.
BEARBEITEN: Obwohl ich nicht sicher bin, warum es cron
für diesen speziellen Anwendungsfall nicht funktioniert, wird diese Antwort durch die (derzeit korrektere) Antwort mit ersetzt launchd
.
Verwenden Sie crontab -e
in der Terminalanwendung, um Crontab/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
zum richtigen Zeitpunkt hinzuzufügen, etwa so (für 17:30 Uhr):
30 17 * * * /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
Ich wollte etwas Ähnliches, aber anstatt immer zu einer bestimmten Zeit zu sperren, wollte ich nur unter bestimmten Bedingungen sperren. Das Skript, mit dem ich diese Bedingungen überprüft habe, wurde von cron ausgelöst, also hatte ich das gleiche Problem.
Als ich CGSession -suspend
einen Cronjob ausprobierte und bemerkte, dass Console.app beim Auslösen einen Fehler protokollierte, der besagte, dass nur root und der aktuell angemeldete Benutzer einen schnellen Benutzerwechsel auslösen könnten. Also meine Lösung: Als root ausführen.
Also habe ich in meinem Skript Folgendes verwendet, um den Computer zu sperren:
sudo /usr/bin/osascript -e 'tell application "System Events" to do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"'
Verworren? Ja. Arbeiten? Positiv!
sudo .../CGSession -suspend
(ohne Verwendung von AppleScript) hat dann auch nicht funktioniert?
Neuenglander
Neuenglander