Değişiklikler için bir dosyayı izlemek bir LaunchAgent ile gerçekleştirilebilir. Örneğin adresinde bir pist dosyası oluşturun ~/Library/LaunchAgents/watch.and.lol.plist
ve bu içerikle doldurun:
<?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>watch.and.lol</string>
<key>ProgramArguments</key>
<array>
<string>/Users/Shared/changeAction.sh</string>
<string>-force</string>
</array>
<key>WatchPaths</key>
<array>
<string>/private/var/radmind/client/.radmindOnDemand</string>
</array>
</dict>
</plist>
Şimdi dosyanın olduğundan emin ol /private/var/radmind/client/.radmindOnDemand
var. Ardından launchagent komutunu kullanarak yükleyin $ launchctl load ~/Library/LaunchAgents/watch.and.lol.plist
. Dosya olur olmaz ~/Library/LaunchAgents/watch.and.lol.plist
artık mevcut değil, bu yıkıcı iş boşaltılacak.
Şimdi, dosyanızdaki değişiklikleri izleyen bazı kabuk komut dosyaları yazın:
chsum1=""
while [[ true ]]
do
chsum2=`md5 /private/var/radmind/client/.radmindOnDemand`
if [[ $chsum1 != $chsum2 ]] ; then
compile
chsum1=`md5 /private/var/radmind/client/.radmindOnDemand`
fi
sleep 2
done
Not: Bu kabuk betiğinin, verimli hale getirmek için yapılması gereken bazı ek çalışmalara ihtiyacı vardır. Şimdi her 2 saniyede bir anket yapıyor ( sleep 2
). En iyisi, komut dosyasından sonra komut dosyasından çıkmak. compile
komut yürütüldü. Bu, md5 hash komutunun çıktısının depolanmasını gerektirir ve bu kabuk betiğinin çıkışına ve rötuşuna dayanabilir.