在意识到OS X没有提供直接的解决方案来安排任务之后,我仍然有点动摇。也许这就是为什么我无法找到推出plist问题的原因。我认为这将是一项轻松的任务,经过一段时间的阅读后我来了:
Frost:~ ren$ cat /Library/LaunchDaemons/org.mvps.hosts.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>org.mvps.hosts</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>curl -s http://winhelp2002.mvps.org/hosts.txt | grep \"^0\.0\.0\.0\|^127\.0\.0\.1\|^::1\" > /etc/hosts</string>
</array>
<key>StartInterval</key>
<integer>86400</integer>
</dict>
</plist>
但是对于世界上的一切我无法理解为什么在加载和启动后/ etc / hosts没有更新。命令本身有效,所以问题可能在于格式化或转义..?无论它指向什么,我都没有找到任何方式获得任何其他领导,而不是启动列表状态127。任何想法都将不胜感激。
答案 0 :(得分:1)
这就是我最终的结果:
Frost:~ ren$ cat /Library/LaunchDaemons/org.mvps.hosts.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>org.mvps.hosts</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>bash -c "curl -s http://winhelp2002.mvps.org/hosts.txt | grep \"^0\.0\.0\.0\|^127\.0\.0\.1\|^::1\" > /etc/hosts"</string>
</array>
<key>StartInterval</key>
<integer>86400</integer>
</dict>
</plist>
坦率地说,我不知道为什么我要打电话给bash来打电话给bash来运行命令,这是在launchd上运行内部工作的东西,无论如何我都不喜欢。它现在有效。
答案 1 :(得分:0)
您是否尝试过使用bash和/或curl和/或grep的绝对路径? 即/ bin / bash / usr / bin / curl或他们留在你的fs的哪个地方?