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

发布于 2022-08-25 11:33:41 字数 1280 浏览 60 评论 0

本人是想用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>  

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不醒的梦 2022-09-01 11:33:41

把要定时运行的命令写在脚本里面,比如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就可以判定脚本有没有执行。

初雪 2022-09-01 11:33:41

你没写</plist>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文