Voglio eseguire uno script ogni volta che spengo il computer. So che questo è forse un duplicato e leggo davvero molti thread simili, ma la risposta non funziona più o non vedo come funziona la risposta.
Ho già capito che Apple vuole che io usi launchd
. La maggior parte delle altre soluzioni non funziona più comunque.
Quindi ho trovato questa risposta ma per quanto vedo launchd
fa tutto quando viene avviato il sistema. Copierò il codice qui sotto
<?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>boot.shutdown.script.name</string>
<key>ProgramArguments</key>
<array>
<string>SCRIPT_PATH/boot-shutdown.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>LOG_PATH/boot-shutdown.log</string>
<key>StandardErrorPath</key>
<string>LOG_PATH/boot-shutdown.err</string>
</dict>
</plist>
e lo script
#!/bin/bash
function shutdown()
{
# INSERT HERE THE COMMAND YOU WANT EXECUTE AT SHUTDOWN OR SERVICE UNLOAD
exit 0
}
function startup()
{
# INSERT HERE THE COMMAND YOU WANT EXECUTE AT STARTUP OR SERVICE LOAD
tail -f /dev/null &
wait $!
}
trap shutdown SIGTERM
trap shutdown SIGKILL
startup;
Sfortunatamente non esiste un tutorial per launchd
che includa una spiegazione molto semplice. Quindi, ad esempio, gli argomenti delle parentesi chiave sono più che semplici stringhe che attivano qualcosa, ma non riesco a trovare un elenco di quali parole attivano l'azione.
Mi piacerebbe capire l'idea di base di launchd
. Soprattutto quali sono i comandi per l'esecuzione di uno script all'avvio dei sistemi e alla chiusura dei sistemi.