Saya berasumsi bahwa Anda ingin memulai prosedur ini daripada menjalankannya pada waktu yang dijadwalkan secara teratur.
Pendekatan saya adalah memulai ini dari baris perintah, tetapi perintah apa pun dapat dijalankan dalam komponen skrip shell dari skrip Automator dengan beberapa modifikasi. Pendekatan berikut menggabungkan beberapa komponen untuk menyelesaikan pekerjaan:
- Sebuah
tell
perintah untuk keluar dari aplikasi
- Panggilan baris perintah untuk mematikan komputer
- Panggilan baris perintah untuk menjadwalkan 1 dan 2 untuk waktu tertentu.
1. Memberitahu Aplikasi untuk berhenti
Ini bisa sesederhana:
osascript -e 'tell application "AppName" to quit'
2. Menidurkan komputer
Lihatlah pmset
untuk detail lebih lanjut, tetapi mengeluarkan perintah berikut akan membuat komputer Anda tidur:
pmset sleepnow
3. Menjadwalkan operasi yang akan dijalankan pada waktu tertentu
Lihatlah perintah at . Perintah ini memberi Anda kemampuan untuk menentukan waktu untuk menjalankan perintah. Anda harus mengaktifkan fungsi ini karena tidak secara default. Untuk mengaktifkan atrun
daemon, jalankan perintah berikut [referensi pada SU] :
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Setelah diaktifkan atrun
, perintah apa pun dapat dijadwalkan untuk waktu tertentu dengan mengeluarkan
echo "<command>" | at HH:MM
yang berfungsi karena at
mengambil input dari stdin
secara default. Pendekatan yang lebih sederhana adalah dengan menjalankan perintah yang tercantum dalam file. File dapat dieksekusi dengan menggunakan -f
flag, diikuti dengan nama skrip yang akan dijalankan seperti ini:
at -f /path/to/file HH:MM
Menyatukan semuanya
Berikut ini mengasumsikan bahwa atrun
ini diaktifkan. Sebagai contoh mainan, misalkan saya ingin keluar dari Mail dan mematikan komputer pada jam 11 malam. Saya akan membuat file yang berisi perintah yang ingin saya jalankan sebagai berikut:
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
Simpan file itu ke quit-and-sleep
dan kemudian jalankan di baris perintah
at -f /path/to/quit-and-sleep 23:00
Peringatan
Saya tidak melakukan pengecekan untuk memastikan bahwa Mail benar-benar ditutup. Script itu juga mengasumsikan bahwa tidak ada hal lain yang akan menghalangi komputer untuk tidur. Saya telah membuatnya sederhana di sini sebagai titik awal untuk apa yang Anda inginkan.