<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>=.= 街喵人生 &#187; OSX</title>
	<atom:link href="http://moonsoap.info/tag/osx/feed" rel="self" type="application/rss+xml" />
	<link>http://moonsoap.info</link>
	<description>好的咪帶你上天堂，壞的咪讓你Orz</description>
	<lastBuildDate>Sat, 20 Feb 2010 07:22:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>從crond到launchd ＊舊文出清＊</title>
		<link>http://moonsoap.info/2009/06/28/259.html</link>
		<comments>http://moonsoap.info/2009/06/28/259.html#comments</comments>
		<pubDate>Sun, 28 Jun 2009 15:48:39 +0000</pubDate>
		<dc:creator>正油可爾必思</dc:creator>
				<category><![CDATA[OSX與blog]]></category>
		<category><![CDATA[crond]]></category>
		<category><![CDATA[lauchd]]></category>
		<category><![CDATA[OSX]]></category>
<category>crond</category><category>lauchd</category><category>osx</category>
		<guid isPermaLink="false">http://moonsoap.info/?p=259</guid>
		<description><![CDATA[新裝好的OSX86大白機，也許是因為系統提升到10.5.5之故，比起舊的藍白10.4 Server，log裡常常會有這樣的訊息：

May  8 23:30:00 openbunny com.apple.launchd[1] (0x10d430.cron[718]): Could not setup Mach task special port 9:... ]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">新裝好的OSX86大白機，也許是因為系統提升到10.5.5之故，比起舊的藍白10.4 Server，log裡常常會有這樣的訊息：<br />
<code lang="bash"><br />
May  8 23:30:00 openbunny com.apple.launchd[1] (0x10d430.cron[718]): Could not setup Mach task special port 9: (os/kern) no access<br />
May  8 23:35:01 openbunny com.apple.launchd[1] (0x10d230.cron[789]): Could not setup Mach task special port 9: (os/kern) no access<br />
May  8 23:35:01 openbunny com.apple.launchd[1] (0x10d430.cron[790]): Could not setup Mach task special port 9: (os/kern) no access<br />
May  8 23:40:00 openbunny com.apple.launchd[1] (0x10d230.cron[868]): Could not setup Mach task special port 9: (os/kern) no access<br />
May  8 23:40:00 openbunny com.apple.launchd[1] (0x10d430.cron[869]): Could not setup Mach task special port 9: (os/kern) no access<br />
May  8 23:45:00 openbunny com.apple.launchd[1] (0x10d230.cron[939]): Could not setup Mach task special port 9: (os/kern) no access<br />
</code><br />
紀錄的時間還滿有規律性的。cron job的執行並沒有異常，但是每次執行都會噴這樣一行，實在有點煩。根據<a href="http://discussions.apple.com/thread.jspa?messageID=6015028" class="extlink">這篇</a>，這是crond噴出來的沒錯，只是原因不明。唯一的解法就是不要用crond來跑cron job，改用從10.4起<a href="http://developer.apple.com/MacOsX/launchd.html" class="extlink">Apple推獎的launchd</a>來跑。<br />
原本有在跑的3個cron job，在/etc/crontab裡也就是3行：<br />
<code lang="bash"><br />
 */5     *       *       *       *       root    /opt/local/bin/mrtg /var/www/mrtg/cfg/mrtg.cfg --logging /var/log/mrtg.log<br />
*/5    *       *       *       *        root   scp /var/www/mrtg/192.168.10.100_2-day.png channinggao@solomini:~/Pictures/<br />
*/2     *       *       *       *       root    /usr/local/bin/top.sh<br />
</code><br />
若是要移轉到lauchd的架構，則是要把每個job轉換成一個對應的plist檔。比方說mrtg的cron job就會變這樣：<br />
<code lang="xml"><br />
$ cat /Library/LaunchDaemons/com.channinggao.mrtg.plist<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"></p>
<plist version="1.0">
<dict><br />
	<key>Label</key><br />
	<string>com.channinggao.mrtg</string><br />
	<key>ProgramArguments</key><br />
	<array><br />
		<string>env</string><br />
		<string>LANG=C</string><br />
		<string>/opt/local/bin/mrtg</string><br />
		<string>/var/www/mrtg/cfg/mrtg.cfg</string><br />
		<string>--logging</string><br />
		<string>/var/log/mrtg.log</string><br />
	</array><br />
	<key>RunAtLoad</key></p>
<true/>
	<key>StartInterval</key><br />
	<integer>300</integer><br />
	<key>UserName</key><br />
	<string>root</string><br />
</dict>
</plist>
</code><br />
其實內容很容易懂，不過寫起來真的是囉哩巴唆；萬一弄錯一個符號或是語法有誤，launchd就會狂噴錯誤訊息：<br />
<code lang="bash"><br />
May  8 23:59:12 openbunny com.apple.launchd[1] (com.channinggao.mrtg): Throttling respawn: Will start in 8 seconds<br />
May  8 23:59:17 openbunny com.apple.launchd[1] (com.channinggao.mrtg): Throttling respawn: Will start in 3 seconds<br />
May  8 23:59:22 openbunny com.apple.launchd[1] (com.channinggao.mrtg): Throttling respawn: Will start in 8 seconds<br />
May  8 23:59:27 openbunny com.apple.launchd[1] (com.channinggao.mrtg): Throttling respawn: Will start in 3 seconds<br />
May  8 23:59:32 openbunny com.apple.launchd[1] (com.channinggao.mrtg): Throttling respawn: Will start in 8 seconds<br />
</code><br />
幸好有人寫了<a href="http://tuppis.com/lingon/" class="extlink">Lingo</a>這個好用的小工具，只要填一填、勾一勾就可以輕鬆搞定了。話雖如此，我之前漏掉了UserName這個必須在Expert Mode手動建立的key值，還是讓我卡關了一個小時。可惜的是Lingo只能產生plist檔，不會教launch重新載入更新的plist設定。如果不想在改好plist後登出登入或重開機，可以透過lauchctl這個指令：<br />
<code lang="bash"><br />
$ sudo launchctl unload com.channinggao.mrtg.plist<br />
$ sudo launchctl load com.channinggao.mrtg.plist<br />
$ sudo launchctl start com.channinggao.mrtg<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://moonsoap.info/2009/06/28/259.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>跑不動的script</title>
		<link>http://moonsoap.info/2009/05/31/260.html</link>
		<comments>http://moonsoap.info/2009/05/31/260.html#comments</comments>
		<pubDate>Sun, 31 May 2009 11:55:22 +0000</pubDate>
		<dc:creator>正油可爾必思</dc:creator>
				<category><![CDATA[OSX與blog]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[vi]]></category>
<category>command line</category><category>osx</category><category>vi</category>
		<guid isPermaLink="false">http://moonsoap.info/2009/05/31/260.html</guid>
		<description><![CDATA[最近常常發現用vi編輯的script，在執行時會出現：

-bash: ./autoMount.sh: /bin/sh^M: bad interpreter: No such file or directory

重點就是在後面多出來的^M。看來是vi不知怎搞的把預設的斷行字元弄成MSDOS了。要... ]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">最近常常發現用vi編輯的script，在執行時會出現：<br />
<code lang="bash"><br />
-bash: ./autoMount.sh: /bin/sh^M: bad interpreter: No such file or directory<br />
</code><br />
重點就是在後面多出來的^M。看來是vi不知怎搞的把預設的斷行字元弄成MSDOS了。要修正這種檔案，可以在vi裡下：<br />
<code lang="bash"><br />
:%s/^M//g<br />
</code><br />
但是這裡的^M不能是直接打出來的，得按Ctrl-v、Ctrl-m才行哦。</p>
<p>至於徹底的解法則是在家目錄下的.vimrc加上：<br />
<code lang="bash"><br />
set ff=unix<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://moonsoap.info/2009/05/31/260.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
