Mac OS X 下怎么才能实现自动定时运行一段命令

shark
  • 7

本人是想用lynx命令实现动态域名的功能
lynx -mime_header -auth=用户名:密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=****.f3322.org"
在终端里运行上面的命令确定是可以实现更新ip到3322动态域名的。但是需要收到运行,我想实现让Mac系统可以定时自动运行,比如每10分钟运行一次。
参照:http://www.netingcn.com/mac-os-plist.html 这里的方法,用plist实现,但是我始终不成功,看不到会运行已经编写好的脚本。
写好的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.pubyun.ddns.plist</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/3322ddns</string>
        </array>
        <key>KeepAlive</key>
            <false/>
        <key>RunAtLoad</key>
            <true/>
        <key>StartInterval</key>
           <integer>60</integer>
   </dict>  

所以请高手指点一下,最好有较详细的教程

回复
阅读 9.7k
2 个回答

把要定时运行的命令写在脚本里面,比如dynic_domain.sh:

lynx -mime_header -auth=用户名:密码 "http://members.3322.net/dyndns/update?system=dyndns&hostname=****.f3322.org"

然后

<key>ProgramArguments</key>
    <array>      
        <string>/absolutepath/dynic_domain.sh</string>
    </array>

即可。记得给脚本可执行权限,另外路径名甚至不能包含~(替换为/Users/xxx).

可以参考:
http://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs
http://alvinalexander.com/mac-os-x/launchd-examples-launchd-plist-file-examples-mac
http://alvinalexander.com/mac-os-x/launchd-plist-examples-startinterval-startcalendarinterval


成功的话不会有窗口什么的,都在后台执行。ip没有更新也可能是脚本内命令运行失败,你手动运行下脚本:./**.sh,看ip能不能更新。

要想显式地看自动任务有没有执行,你可以在脚本开头加上一句echo "running",然后plist文件里面指定一个标准输出文件

<key>StandardOutPath</key>
    <string>/Users/***/schedule.log</string>

这样看schedule.log就可以判定脚本有没有执行。

moqiluoji
  • 1
新手上路,请多包涵

你没写</plist>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏