V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
g0t3n
V2EX  ›  问与答

有木有人在 osx 上用 crontab 来启动 gui 程序的么

  •  
  •   g0t3n · 2014-11-10 14:46:45 +08:00 · 3253 次点击
    这是一个创建于 3696 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本来我想做的是通过 `say` 或者 `osascript` 来定期提醒下自己注意备份的<魂淡>
    所以我的做法是
    export DISPLAY=:0&&osascript -e 'display alert "G0 B4ck Up N0w"'
    然后就获得这样的报错了
    execution error: No user interaction allowed. (-1713)
    然后我检查了下 DISPLAY 变量发现指向是一个文件 (socket)
    /tmp/launch-O9uQAc/org.macosforge.xquartz:0
    艾玛该怎么做个好看点的提醒啊啊啊
    5 条回复    2014-11-10 17:40:04 +08:00
    Neo
        1
    Neo  
       2014-11-10 15:20:37 +08:00
    太折腾了,用wunderlist这样的工具方便点,而且多平台
    ETiV
        2
    ETiV  
       2014-11-10 16:04:04 +08:00 via iPhone
    M a c、iOS自带“提醒事项”……

    可以设定提醒时间的
    dorentus
        3
    dorentus  
       2014-11-10 17:02:14 +08:00
    * DISPLAY 是 X 环境的环境变量,osascript 和 say 都不需要 X 就能运行。
    * export DISPLAY=:0 && osascript -e 'display alert "G0 B4ck Up N0w"' 这样在非 interactive shell 下面,后面的命令(osascript)应该取不到前面设置的 DISPLAY 的值的吧。比较常见的写法是 env DISPLAY=:0 osascript -e 'display alert "G0 B4ck Up N0w"'
    * “No user interaction allowed” 是另外一个问题,解决方式可以参见: http://stackoverflow.com/a/13484552/90172 (我没试过,不过看起来可行)
    * say 写在 crontab 里面的话应该不会有这个问题吧
    * 比较新版本 OS X 自带的 Notification Center 其实也挺适合这个需求的,有一些第三方的命令行程序可以发系统 notification,例如: https://github.com/alloy/terminal-notifier 自己写的话,估计也行。
    dorentus
        4
    dorentus  
       2014-11-10 17:08:15 +08:00
    另外 launchd 可以用来启动 GUI 的程序。配置文件放在 ~/Library/LaunchAgents 下,配置文件语法参照 man 5 launchd.plist 或者苹果的文档(支持登录后自动启动、定时启动、失败后重新启动等等)。
    g0t3n
        5
    g0t3n  
    OP
       2014-11-10 17:40:04 +08:00
    @dorentus 感谢你的 stackoverflow 链接,我之前也搜到但没仔细看.的确不需要用到 DISPLAY 变量就能直接显示了。
    正确的写法应该是
    $ crontab -l
    #minute hourly daily monthly weekly CMD
    10 12 * * 1,3 sh brew update;sh brew upgrade;osascript -e 'tell application "Finder"' -e 'activate' -e 'display dialog "we have done brew update [crontab notify]"'

    就是这个样子就能实现了。另外提醒信息在 /var/mail/[username]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1320 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:32 · PVG 01:32 · LAX 09:32 · JFK 12:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.