24 Nisan 2010 Cumartesi

iPhone schedule script with launchd without crontab – iPhone launchd (crontab yerini alan başlangıç ve kaynakları yöneticisi) ile zamanlanmış script yazılması

iPhone üzerinde mac os x in tek kullanıcılı, bazı işlev ve pathleri değiştirildiği bir versiyon var; Ancak sonuçta mac os x küçültülmüş bir versiyonu. mac os x 10.4 tiger ile UNIX türevi olan işlevlerinden bazıları -cron, xinetd, mach_init, ve init- tek bir yöneticide toplandı launchd (launch daemon).

launch daemon sistem ve başlangıç scriptlerinin çalışması , sistemin kullanıcı için hazırlanmasından sorumludur.

Açılışta çalışması için

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>localhost.etc.rc.command</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/daemon</string>
<string>argument</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>



yazdığımız .plist dosyasını iPhone üzerinde /Library/LaunchDaemons path’ine kaydediyoruz.Label yerine sistemde olmayan eşsiz bir uygulama/script adı yazılmalı.ProgramArguments key isimli noduna görüldüğü gibi dizi tanımlanıyor bu dizinin elemanları çoğaltılabilir. örnek:



<key>ProgramArguments</key>
<array>
<string>/usr/sbin/periodic</string>
<string>daily</string>
<string>-f</string>
</array>



 



şu anlama gelir




./usr/sbin/perodic daily -s




 



yüklenen .plist dosyasını iPhone u yeniden başlatmadan ssh ile launchctl kullanarak yükleyebilir, kaldırabilir ve bazı diğer işlevlerle kullanabilirsiniz. yüklü olan .plist ler için




launchctl list



 



interval 5 dakika sürede de bir devamlı



<?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>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>300</integer>
<key>Label</key>
<string>com.proxtouch.locatable</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/touch-startup</string>
</array>
<key>Nice</key>
<integer>20</integer>

<key>StandardOutPath</key>
<string>/var/root/daemon/out.log</string>
<key>StandardErrorPath</key>
<string>/var/root/daemon/error.log</string>
<key>Debug</key>
<true/>


</dict>
</plist>



~/var/root üzerinde daemon klasörü örnek oluşturulmuştur.iphone üzerinde root kullanıcısı default kullanıcıdır. diğer kullanışlı path ~/User ( symbolic link ) ~/var/mobile



 




launchctl load com.proxtouch.locatable.plist







launchctl unload com.proxtouch.locatable.plist




 



launchd parametreler vs.. external link



wget 192.168.1.13/proxy/touch.php -O /dev/null



launchctl  start com.proxtouch.locatable
launchctl stop com.proxtouch.locatable


 



Hiç yorum yok:

Yorum Gönder