Bagaimana Anda membuat skrip atau aplikasi untuk dijalankan atau berhenti berjalan secara otomatis ketika sistem di-boot, pengguna masuk, pada waktu tertentu, ketika disk terpasang, dll?
Bagaimana Anda membuat skrip atau aplikasi untuk dijalankan atau berhenti berjalan secara otomatis ketika sistem di-boot, pengguna masuk, pada waktu tertentu, ketika disk terpasang, dll?
Jawaban:
Jika Anda ingin sesuatu dijalankan saat pengguna masuk, cara termudah adalah menggunakan GUI. Kamu bisa
System Prefs > Accounts > Login Items
layar, dan tambahkan item di sana
+
simbol.app
ke panelOptions
, lalu pilihOpen at Login
Jika Anda ingin meluncurkan sesuatu yang bukan .app
, atau Anda ingin memiliki kontrol lebih besar atas peluncurannya, seperti:
maka Anda ingin menggunakan solusi teknis itu launchd
.
Cara termudah untuk mengatur launchd
file konfigurasi adalah dengan menggunakan alat untuk membantu. Pada saat penulisan metode yang paling populer adalah Lingon (yang memiliki versi gratis lebih lama tersedia dari SourceForge), atau alat Situs Web PList .
Jika Anda tidak ingin menggunakan Lingon atau Situs Web PList dan hanya ingin menggunakan alat mentah yang tersedia di sistem, Anda dapat menulis sendiri launchd
plist
dengan tangan
Inilah skrip launchd saya untuk menjalankan SomeApp terus menerus setelah sistem melakukan booting (terlepas dari pengguna yang masuk). Itu ada di / System / Library / LaunchAgents / dan disebut SomeApp.restart.plist. Jika dijalankan berdasarkan login pengguna, itu bisa disimpan di ~ / Library / LaunchAgents /
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Muat sekali dengan
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
pilihan akan meluncurkan aplikasi waktu launchctl pertama berjalan ini.KeepAlive
pilihan akan kembali meluncurkan aplikasi jika crash.StartCalendarInterval
akan menjalankannya pada waktu tertentu. Agaknya ini saling eksklusif dengan dua sebelumnya, tetapi dimasukkan untuk menunjukkan apa yang bisa dilakukan denganlaunchd
Ada banyak opsi tambahan yang dapat ditemukan dengan melakukan percobaan dengan Lingon atau dengan membaca halaman manual untuk launchctl
, launchd.plist
, plist
, launchd.conf
, dll
launchctl load -w ...
untuk membuat perubahan tetap ada. Berdasarkan tanggapan Anda, saya memperbarui skrip konfigurator
Lingon masih bekerja. Saya hanya menggunakannya minggu lalu untuk membuat "tugas terjadwal". Setelah saya mengunduhnya, saya harus menggunakan pembaruan otomatis untuk mendapatkan versi terbaru tetapi berfungsi dengan baik.
Jika hanya perlu dijalankan ketika sistem di-boot, cukup gunakan tab Item Masuk dari panel preferensi Akun Anda di preferensi Sistem.
Jika ini skrip, gunakan Editor AppleScript untuk menyimpannya sebagai aplikasi. Jika bukan skrip AppleScript, Anda masih bisa menggunakan AppleScript untuk menjalankan skrip seperti ini:
do shell script "your script here"
Jangan lupa loginhooks.
Meskipun mereka berjalan sebagai root, Anda harus dapat menjalankannya $ script / .loginhook menggunakan sesuatu seperti ini:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Kemudian tambahkan saja perintah apa pun yang Anda inginkan ke ~ / .loginhook
Juga, meskipun 'launchd' adalah "cara Mac" crontab masih merupakan opsi yang sangat layak, dan jauh lebih mudah untuk diedit dengan tangan daripada file XML launchd.
Secara pribadi, saya dengan senang hati membayar $ 5 untuk Lingon .
/path/to/script
, dan sudo defaults write com.apple.loginwindow LoginHook /path/to/script
? Dan intinya dalam menjalankan skrip di direktori home adalah bahwa setiap pengguna dapat memiliki custom (atau tidak) ~/.loginhook
?
Menjalankan aplikasi pada waktu tertentu dapat dilakukan dengan mudah di iCal, karena saya baru tahu berkat forum lain!
Satu hal yang perlu diperhatikan adalah bahwa jika Anda memiliki banyak hal berbagi Mac di iCloud, acara ini juga akan berjalan di aplikasi tersebut, yang mungkin atau mungkin tidak Anda inginkan. Untuk membuat ini hanya terjadi pada satu Mac, Anda harus membuat acara dalam kalender 'On My Mac' yang dapat Anda lakukan sebagai berikut ...
Saya baru saja menemukan ini sendiri, dan terkejut dengan kedua tip itu, jadi saya pikir saya akan membagikannya di sini.
Saya mendapat info dari orang-orang yang membantu di sini ... jadi terima kasih banyak! ...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/