gpt4 book ai didi

launchd - ~/Library/LaunchAgents plist 手动运行但不会自动运行

转载 作者:行者123 更新时间:2023-12-03 21:44:28 28 4
gpt4 key购买 nike

我开始使用launchd并想要设置一个plist文件,这样每当我将SD卡插入我的Mac mini服务器(使用Snow Leopard Server)时,我都希望运行一个shell脚本(它应该复制所有jpg文件,重命名它们等)。

因此,我在 ~/Library/LaunchAgents 中创建了一个 plist 文件(请参阅下面的内容 - 它应该寻找对/Volumes 的更改),并且我创建了一个显示“哔”的 shell 脚本 - 稍后它会做一些更有用的事情.

plist 文件是用launchctl 注册的,当我运行它时(launchctl start com.peters.runwhenSDmount),只要插入存储卡,计算机就会发出哔哔声,没有存储卡时保持静音。因此,显然 plist 确实调用了 shell 脚本,该脚本随后检查特定的 SD 卡是否在那里。我认为这也证明了 SD 卡的权限没有问题。

但是,它似乎不能自己运行???知道为什么吗?

plist 文件:~/Library/LaunchAgents/com.peters.runwhenSDmount.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" \
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
<key>Label</key>
<string>com.peters.runwhenSDmount</string>
<key>LowPriorityIO</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/peter/Library/Scripts/runwhenSDmount</string>
</array>
<key>ThrottleInterval</key>
<integer>10</integer>
<key>WatchPaths</key>
<array>
<string>/Volumes</string>
</array>
</dict>
</plist>

shell 脚本:~/Library/Scripts/runwhenSDmount
#!/bin/bash
if [ -d "/Volumes/NIKON D40X" ]; then
say beep
fi

最佳答案

在 ~/Library/LaunchAgents 文件夹中创建新 plist 后,您必须将其告知 launchd 应用程序。这样做的两种基本方法是:

  • 注销然后重新登录。 - 每次登录时,launchd 将扫描您的 ~/Library/LaunchAgents 文件夹的内容并添加它在那里找到的任何 plist。
  • 使用“launchctl”从终端命令行加载 plist。命令的语法是:
    launchctl load {Path-to-plist}

  • launchctl 命令还可用于阻止 launchd 使用 plist。为此,请使用:
    launchctl unload {Path-to-plist}

    launchctl 命令在开发 plist 时非常有用,因为它可以快速轻松地在更改之间卸载/加载它们。一旦你的 plist 以你喜欢的方式工作,自动登录 launchd 加载就可以接管了。

    关于launchd - ~/Library/LaunchAgents plist 手动运行但不会自动运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485972/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com