【问题标题】:JXA script stops running when my macbook goes to sleep当我的 macbook 进入睡眠状态时,JXA 脚本停止运行
【发布时间】:2020-12-02 12:21:44
【问题描述】:

我正在使用launchctl 作为代理运行 JXA 脚本。脚本的主要逻辑应该以 2 秒的间隔运行,这是我使用无限循环和delay 实现的。但是,每当我的 macbook 进入睡眠状态时,脚本就会停止执行,我必须再次手动卸载和加载代理。

我的脚本:

for(;;) {
   // (Open browser and check whether a tab exisits or not)
   <APPLICATION LOGIC > 
   delay(2);
}

我可以做些什么来确保这个脚本在我的 macbook 唤醒后继续运行吗?

【问题讨论】:

  • 扔掉那个脚本。即使您的 MacBook 处于唤醒状态,您也不希望它运行,更不用说当它试图入睡时。 不要在无限循环中运行东西。使用带有 on idle 处理程序的 AppleScript 保持打开 应用程序,或者更好的是,使用 launchd 运行脚本,这将处理重复执行脚本正确。 (* smh *)
  • 谢谢。已删除无限循环,现在我按照建议使用launchctl 管理脚本的执行。如果有人想学习如何使用 launchd 每 N 秒执行一次脚本,请参考以下文章:Run a script every 5 mins on a Mac

标签: applescript javascript-automation


【解决方案1】:

根据 CJK 的建议,我现在每 5 秒执行一次 JXA 脚本,使用 launchctl 和以下 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>google-meet.job</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/osascript</string>
        <string>/Users/porter/Library/Script Libraries/Brave - Google Meet Running.scpt</string>
    </array>
    <key>StartInterval</key>
    <integer>5</integer>
</dict>
</plist>

您可以使用StartInterval 键控制脚本的执行频率。

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2020-02-01
    • 2016-04-22
    • 2013-11-18
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多