MAC的開機啟動


之前了解到MAC下的開機啟動和定時自動運行不再沿用cron,而是有自己的launchctl:把啟動文件放在/Library/LaunchDaemon/xxx.plist,里面可以記錄運行的時間間隔、工作目錄之類的。

我在公司的筆記本使用無線網,每次重啟后IP可能會變,變了以后我在家里就找不到它了,為了解決這個問題,我讓機器每隔一段時間執行ifconfig命令,並把結果輸出到雲同步盤上去。只要查一下同步盤上的記錄,就知道ip了。我的com.binglen.ipmonitor.plist文件是這么寫的:

<?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>com.binglen.ipmonitor.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/palance/百度雲同步盤/workdir/MsRemoteDesktop/ipmonitor.sh</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>60</integer>
    <key>WorkingDirectory</key>
    <string>/Users/palance/百度雲同步盤/workdir/MsRemoteDesktop/</string>
</dict>
</plist>

然后執行launchctl load /Library/LaunchDaemon/com.binglen.ipmonitor.plist,成功!

雖然腳本每分鍾會執行,可是每次重啟機器后發現不能自動起來。最后發現原來是權限的問題,在執行load之前需要執行如下命令:

sudo chown root com.binglen.ipmonitor.plist       # 將plist文件權限修改為root
sudo luanchctl load com.binglen.ipmonitor.plist   # 以管理員權限運行

再次重啟后,運行如下命令即可查看到正在運行的腳本:

$ sudo launchctl list|grep binglen

-    0    com.binglen.ipmonitor.plist

不過我還是有一個遺留問題:當前非管理員也運行着若干launchctl腳本,前面的查看命令不敲sudo就可以看到這個list,他們也是開機啟動的,怎么做到的呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM