Bu sorunun burada zaten bir cevabı var:
Bilgisayarımı her kapattığımda her zaman bir komut dosyası çalıştırmak istiyorum. Bunun belki de bir kopya olduğunu biliyorum ve gerçekten pek çok benzer konu okudum ama ya cevap artık çalışmıyor ya da cevabın nasıl çalıştığını göremiyorum.
Bu elmanın kullanmamı istediğini zaten anladım launchd
. Diğer çözümlerin çoğu artık çalışmıyor.
Böylece bu cevabı buldum, ancak launchd
sistem başladığında gördüğüm kadarıyla her şeyi yapıyor. Aşağıdaki kodu kopyalayacağım
<?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>
ve senaryo
#!/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;
Ne yazık launchd
ki, çok basit bir açıklama içeren bir ders yok . Örneğin, anahtar parantezlerin argümanları sadece bir şeyi tetikleyen dizelerden daha fazlasıdır, fakat hangi kelimelerin hangi eylemi tetiklediğinin bir listesini bulamıyorum.
Temel fikrini anlamak istiyorum launchd
. Özellikle, sistemler başladığında ve sistemler kapatıldığında bir komut dosyası çalıştırmanın komutlarıdır.
SIGKILL
Yakalabilir değil Senaryo hatalı.