问题标签 [launchctl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - launchd - pList Launchdaemon 不启动脚本
以前我可以在 iOS 9.3.3 上使用 Launchdaemons,但现在我在 iOS 11.3.1 上,我用来自动运行脚本的方法不再适用于我的 iPhone,我不明白为什么。我在 unc0ver 3.8.0-b1 上越狱,越狱时的日志显示服务已加载。
我的 plist 文件如下所示:
launchctl load /Library/LaunchDaemons/autoCleaner.plist 表示该服务已经在运行,但它没有执行脚本(在 script1.sh 的权限中设置了执行标志)。我可以从终端窗口很好地运行脚本,但它不会像我尝试使用启动守护程序那样以 20 秒的间隔启动和重新运行
任何想法如何解决?
zsh - OSX launchctl ZSH Shell 脚本不等待外部程序完成
我已经安装了 speedtest.net CLI 并编写了一个简单的 ZSH shell 脚本来运行 speedtest 二进制文件并生成 CSV 输出。
希望每隔 [时间段](最初是每小时)运行一次此脚本,并将速度测试数据收集到日志文件中以供以后分析。在阅读了 Mac 上的 cron 与 launchctl 之后,我决定为我的脚本创建一个原生的 launchctl plist 代理,并将其设置为 [在指定时间段] 运行脚本。
该脚本在独立于launchctl运行时运行成功;但是,当 lauchctl 运行脚本时,它不会等待对 speedtest 二进制文件的外部调用完成,而是直接跳转到最终的 echo 语句。输出文件成功附加了时间和日期,但缺少 speedtest 二进制文件的输出。
我尝试过睡眠、等待和循环来检查 PID ID(我相信在 $! 变量中找到),但同样的事情发生了。所以真的需要一些帮助来了解正在发生的事情以及如何解决它。
PLIST LaunchAgent
ZSH Shell 脚本
仅供参考 - 我发现这个网站对了解 launchctl 的工作方式非常有帮助 - https://www.launchd.info/和启动控制工具的试用版,以检查我所做的工作是否正常https://www.soma-zone .com/LaunchControl/。
macos - 尝试在启动 OSX 时运行脚本
我正在尝试在 OSX 上完成启动时运行脚本。我尝试在网上的各种文章和问题之后创建一个 plist 文件,一些来自这里,一些来自媒体和其他地方。但我似乎无法做到正确。我希望脚本在计算机启动时运行,无论哪个用户登录。该脚本是一个简单的 bash 脚本,它检查 S3 存储桶中是否存在对象,如果该对象存在,它会继续运行,然后显然运行脚本的其余部分(在本例中为清理脚本)。
这是我的 plist 文件:
这是我要调用的脚本:
编辑:我错过了包含以下内容的错误日志:
/bin/zsh: can't open input file: /Users/mlove/Documents/gitpersonal/ejector-seat/cleanup
我尝试制作脚本 777 只是为了测试但仍然出现错误,如果我通过简单地手动运行脚本./cleanup
运行良好,所以我知道脚本本身没问题,所以我认为这与方式有关我在 plist 文件中调用它。
我肯定错过了一些简单的东西,任何帮助将不胜感激!
python - 从launchctl运行python脚本时Mac找不到chromedriver
我一直在尝试通过launchctl 安排我的一个python 脚本,但遇到了一个错误。目的是在每小时的给定时间运行。
我已经创建了我的 plist,将其加载到 launchctl 但它无法正常工作。在进行了一些挖掘之后,我调试并收到以下错误消息: Traceback (last recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/ common/service.py",第 72 行,在 start self.process = subprocess.Popen(cmd, env=self.env, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess .py”,第 854 行,在init self._execute_child(args,可执行文件,preexec_fn,close_fds,文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py”,第 1702 行,在 _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory:
在处理上述异常的过程中,又出现了一个异常:
回溯(最后一次调用):文件“/Users/petersmith/Documents/Python/thenewsproject/link_getters/link_getter.py”,第 3 行,在 import myfile
文件“ /Users/directories/myfile.py ”,第 51 行,在browser = webdriver.Chrome('chromedriver', options=chrome_options)
文件 "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py",第 73 行,在init
self.service.start() 文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py”中,第 81 行,在开始引发 WebDriverException(selenium.common.exceptions.WebDriverException:消息:“chromedriver”可执行文件需要在 PATH 中。请参见https://sites.google.com/a/chromium.org/chromedriver/home
我在粘贴时以粗体更新了项目。
这是它大惊小怪的那一行: browser = webdriver.Chrome('chromedriver', options=chrome_options)
现在,chromedriver 位于我的 usr/local/bin 文件夹中,我检查了我的路径文件并查看: -bash: /Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/mysql/bin: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/ _当前/命令:/应用程序/Xamarin:没有这样的文件或目录
你可以用粗体看到它就在那里,所以我有点迷路了。
有任何想法吗?
bash - Launchctl 不启动 netcat shell
我有一个如图所示的脚本保存到文件/Users/yulkytulky/Library/demo/demo:
并创建了一个 LaunchAgent plist 文件,以便 shell 像这样自动运行:
但是,当我听的时候没有产生任何外壳。
我测试了将脚本更改为
它奏效了!(每 5 秒打个招呼)
为什么当我尝试运行 netcat 时它不起作用?
注意:我知道脚本是可执行的。我什至可以从 plist 文件中复制脚本的路径,将其粘贴到终端中,它可以按预期工作。
macos - OSX 和 launchctl,rsync/ssh 找不到密钥
所以我一直在尝试为 rsync 编写一个 launchctl 守护进程,以便它每晚远程备份我的笔记本电脑。
launchctl 守护进程运行良好,它使用 root 用户调用 rsync,并指示 rsync 使用 ssh,并从我的用户目录中获取密钥文件。这就是有趣的地方。无论我做什么,ssh 都会抛出以下错误:rsync: Failed to exec ssh -i /Users/anthony/.ssh/id_rsa: No such file or directory (2)
钥匙确实在那里。如果我从命令行单独调用 ssh,我可以从我的用户帐户和 root 帐户中使用该密钥。我假设这与launchctl的范围或特权有关?下面是 launchctl 正在使用的 plist 文件。我真的很感激这方面的一些帮助。
这是来自 remote_backup_test 的标准错误
macos - Mac 守护进程无法运行 bash 脚本
操作系统MacOS 10.15.17 (Catalina)
我想创建一个脚本,该脚本使用iperf启动一个客户端,该客户端每隔几秒测量一次连接速度并持续很长一段时间。我创建了一个守护程序文件并将其放入~/Library/LaunchAgents/com.myself.iperfclient.plist
.
com.myself.iperfclient.plist
网速
该netspeed
文件对任何人都是可执行的:
当我尝试添加新的守护程序时,使用launchctl load ~/Library/LaunchAgents/com.myself.iperfclient.plist
,这是我在控制台中收到的错误消息:
如果在我添加为第一项.plist
的守护程序描述符中,则没有错误。但是,我不想以这种方式运行脚本,因为它每次都会启动一个新的终端窗口,这非常烦人。<string>open</string>
ProgramArguments
我的问题
如何允许我的守护进程执行netspeed
?
附言
launchctl 状态码是126。
macos - 使用 launchctl 2,如何从已经在 macOS >= 10.10 上运行的服务推断域?
launchctl
2 采用指示目标域的说明符。根据命令手册,该说明符可以采用以下形式之一:
system/[service-name]
user/<uid>/[service-name]
login/<asid>/[service-name]
gui/<uid>/[service-name]
pid/<pid>/[service-name]
该launchctl list
命令现在已被该命令弃用并替换(我猜)launchctl print
。后者需要域目标或服务目标作为输入。
- 是只有这五个域,还是可以有更多?
- 如果是,我如何列出我系统中的所有域?
- 如何从已经运行的服务推断域?
timer - 可以在launchctl中随机化StartInterval吗?
我使用 launchctl 每 8 小时运行一次作业(StartInterval = 28800)。在这项工作的 .plist 中,是否可以让它选择 6 - 10 小时之间的随机时间间隔(StartInterval 是 21600 和 36000 之间的随机数)?
macos - Mac-launchctl load 后服务未在启动时启动
在我的 mac1.metal ec2 实例上。我在 ~/Library/LaunchAgents 有一个 plist
该服务将在运行后运行
我可以看到它com.buildkite.buildkite-agent
但是当我重新启动实例时,服务不会重新启动。我认为launchctl load应该实现这一点?