Come si fa a eseguire o interrompere l'esecuzione automatica di uno script o di un'applicazione quando si avvia il sistema, quando un utente si collega, in un momento specifico, quando un disco è collegato, ecc.?
Se vuoi che qualcosa venga eseguito quando un utente accede, il modo più semplice è usare la GUI. Puoi
System Prefs > Accounts > Login Items
e aggiungi l'elemento lì
+
.app
nel riquadro Options
, quindi seleziona Open at Login
Se vuoi lanciare qualcosa che non è un .app
, o vuoi avere maggiore controllo sul lancio, ad esempio:
quindi vuoi utilizzare la soluzione tecnica che è launchd
.
Il modo più semplice per impostare un file di configurazione launchd
è utilizzare uno strumento per aiutare. Al momento di scrivere il metodo più popolare è Lingon (che ha una versione gratuita più vecchia disponibile da SourceForge), o Strumento PList Website .
Se non vuoi usare Lingon o il sito web PList e vuoi solo utilizzare gli strumenti raw disponibili sul sistema, puoi scrivere il tuo launchd
plist
a mano
Ecco il mio script di avvio per eseguire SomeApp continuous dopo l'avvio del sistema (indipendentemente da un accesso dell'utente). Si trova in / System / Library / LaunchAgents / e chiamato SomeApp.restart.plist. Se viene eseguito in base a un accesso utente, potrebbe essere memorizzato in ~ / 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>
Caricalo una volta con
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
avvierà l'applicazione la prima volta che launchctl esegue questo. KeepAlive
riavvierà l'applicazione se si blocca. StartCalendarInterval
lo eseguirà in un determinato momento. Presumibilmente questo è mutuamente esclusivo con i due precedenti, ma è incluso per mostrare cosa si può fare con launchd
Ci sono molte opzioni aggiuntive che puoi trovare sperimentando con Lingon o leggendo le pagine man per launchctl
, launchd.plist
, plist
, launchd.conf
, ecc.
Lingon funziona ancora. L'ho usato solo la scorsa settimana per creare un "compito programmato". Dopo averlo scaricato, ho dovuto usare il suo auto-aggiornamento per ottenere l'ultima versione ma funziona perfettamente.
Se è necessario eseguire solo all'avvio del sistema, usa la scheda Elementi di accesso del pannello delle preferenze di Account. in Preferenze di sistema.
Sesitrattadiunoscript,utilizzaAppleScriptEditorpersalvarlocomeapplicazione.SenonèunoscriptAppleScript,puoicomunqueutilizzareAppleScriptpereseguireloscriptinquestomodo:
doshellscript"your script here"
Non dimenticare Loginhooks.
Sebbene corrano come root, dovresti essere in grado di eseguire uno script $ HOME / .loginhook usando qualcosa di simile a questo:
#!/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
Quindi aggiungi solo i comandi che desideri a ~ / .loginhook
Inoltre, anche se 'launchd' è "il modo Mac" crontab è ancora un'opzione perfettamente valida, ed è molto più facile da modificare a mano rispetto ai file launchd XML.
Personalmente, ho pagato felicemente $ 5 per Lingon .
L'esecuzione di un'app in un momento specifico può essere eseguita facilmente in iCal, come ho appena scoperto grazie a un altro forum!
Una cosa da tenere presente è che se hai più Mac che condividono contenuti su iCloud, questo evento verrà eseguito anche su quelle app, che potresti o non vorresti. Per far sì che ciò accada solo su un singolo Mac, devi creare l'evento in un calendario "On My Mac" che puoi fare come segue ...
L'ho appena scoperto e sono rimasto piacevolmente sorpreso da entrambi i suggerimenti, quindi ho pensato di condividerli qui.
Ho ricevuto le informazioni da queste persone utili qui ... quindi grazie persone! ...
Leggi altre domande sui tag startup macos boot login-items