我正在尝试在启动时使用launchd运行AppleScript,但没有结果

我正在尝试在启动时使用launchd运行AppleScript,但没有结果,applescript,launchd,Applescript,Launchd,目标是得到我的计算机的启动时间列表,我可以用它来计算工作场所的断电情况 为此,我编写了一个脚本,在运行时打印当前时间,并在库/启动守护进程中创建了一个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,它应该在启动时运行该脚本

我的朋友:

<?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>local.power.log</string>
        <key>Program</key>
        <string>/Users/labspecialist/Scripts/system_monitor.scpt</string>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>
我希望这会在系统启动时在桌面上创建一个文本文件,但是当我关闭并重新启动时,它不在那里。如果我在脚本编辑器中运行脚本,它可以正常工作

更新


在终端中,我尝试运行命令
launchctl start local.power.log
,该命令没有收到任何错误,但也没有运行脚本。

如果要运行AppleScript,则必须将
osascript
添加为
Program
值,并将脚本路径放入
programmarguments
数组中

<key>Program</key>
<string>/usr/bin/osascript</string>
<key>ProgramArguments</key>
<array>
    <string>osascript</string>
    <string>/Users/labspecialist/Scripts/system_monitor.scpt</string>
</array>
程序
/usr/bin/osascript
程序参数
奥萨Script
/用户/labspecialist/Scripts/system_monitor.scpt
脚本无法工作的其他可能原因

  • 将plist文件放入
    ~/Library/LaunchAgents
    ,因为它不是守护进程,并且属于用户域
  • 不要忘记加载代理程序
  • plist文件的文件名必须是
    local.power.log.plist

谢谢您的回答。
osascript
是否与我的.plist文件分开?
osascript
是一个系统二进制文件,用于在命令行级别编译和运行AppleScripts。您是否知道系统已经存储了启动时间、引导时间、唤醒/睡眠周期等日志。?在终端中,您可以查看
last | grep-Eiov“^$USER”
的输出,以查看所有重新启动和关闭时间。您可以使用
sysctl kern.waketime
获取计算机上次唤醒的时间。 还可以查看手册页
man pmset
,以访问与电源管理相关的各种日志。
<key>Program</key>
<string>/usr/bin/osascript</string>
<key>ProgramArguments</key>
<array>
    <string>osascript</string>
    <string>/Users/labspecialist/Scripts/system_monitor.scpt</string>
</array>