标签: launchdagent

使用GUI会话为所有用户启动/停止launchd代理

我需要能够从根级别守护程序启动/停止每会话GUI代理.

这里,这里这里讨论类似的问题.

我希望能够做的基本上是

for num in `ps ax | grep [s]bin/launchd | cut -c 1-5`; 
do 
    if [ $num -ne 1 ]; 
    then 
        sudo launchctl bsexec $num launchctl (un)load -S Aqua /Library/LaunchAgents/com.mycompany.mydaemon.plist; 
    fi; 
done
Run Code Online (Sandbox Code Playgroud)

但这仅启动/停止一个实例,并在当前GUI会话中以root身份运行.如果我离开sudo,我就会开始

task_for_pid() (os/kern) failure
Couldn't switch to new bootstrap port: (ipc/send) invalid port right
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用bsexec的各种其他排列(包括使用load/unload命令从bsexec调用辅助脚本),但是我永远不能让实例以root身份启动,而不能在另一个GUI会话中启动.

我也试图与乱搞su - <user> ...sudo -u <user> ...,但没有运气有两种(如很多人在上面链接的文章和其他地方的讨论).

有人有什么想法吗?

编辑:我尝试使用Graham Lee下面建议的包装工具执行此操作,但是我收到以下错误:

launch_msg(): Socket is not connected
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的命令行命令,包装器和脚本(501是用户ID,63093是另一个登录到系统的用户的launchd的pid):

命令行:

sudo launchctl bsexec 63093 /path/TestSetUIDAndExecuteTool …
Run Code Online (Sandbox Code Playgroud)

macos daemon launchd agent launchdagent

11
推荐指数
1
解决办法
7892
查看次数

有人在Mac App Store中提交或了解使用launchd的应用程序吗?

只是想知道是否有人已成功提交应用程序或知道使用launchd的Mac App Store中存在的应用程序.

谢谢.

launchd launchdagent mac-app-store

7
推荐指数
1
解决办法
532
查看次数

由于奇怪的原因,工作未能执行(3):8

我正在尝试在OS X Mountain Lion 10.8.3中安排一个简单的任务

launchctl start nextstopsun.helloworld
Run Code Online (Sandbox Code Playgroud)

命令不执行脚本并将消息抛出到控制台

4/2/13 9:50:49.663 PM com.apple.launchd.peruser.501[139]: (nextstopsun.helloworld[46729]) Job failed to exec(3) for weird reason: 8
Run Code Online (Sandbox Code Playgroud)

我的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>nextstopsun.helloworld</string>
    <key>Program</key>
    <string>/Users/nextstopsun/Work/scripts/hw.sh</string>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>21</integer>
        <key>Minute</key>
        <integer>15</integer>
    </dict>
    <key>UserName</key>
    <string>nextstopsun</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

脚本也很简单

echo "Hello World!" > hw.log
Run Code Online (Sandbox Code Playgroud)

launchctl加载它没有错误.从shell执行脚本时,它按预期工作.注销并重新登录无济于事.在Google中没有找到任何答案.什么是"奇怪的原因:8"都是关于什么的?

macos launchd launchdagent osx-mountain-lion

2
推荐指数
1
解决办法
5828
查看次数