启动守护进程不会从 Bash 脚本加载,但会从终端加载
launch daemon won't load from Bash script but will from terminal
我在从 PKG 安装程序中运行的 post 安装 Bash 脚本文件中有这一行:
launchctl load /Library/LaunchDaemons/com.mycompany.myapp.plist
PKG 正确安装作业 plist 文件和作业调用的小程序。
但是当我检查作业是否在终端中加载时,我没有得到任何返回:
launchctl list | grep mycompany
如果我在终端中执行相同的加载命令,作业会按预期加载。
为什么脚本运行时没有加载作业?
当您 运行 launchctl list
作为普通用户时,它会在您的用户会话中列出 Launch Agents 运行ning;以 root 身份列出 Launch Daemons,运行(即 sudo launchctl list
)。
更多详细信息:某些 launchctl
子命令允许您明确指定要处理的域。例如:
launchctl print system # Prints Launch *Daemons*
launchctl print user/501 # Prints Launch *Agents* for user #501's session
但是较旧的“遗留”子命令,如 list
、load
、unload
、start
、stop
等早于此约定并使用用户 ID 命令 运行s 用于确定要操作的域。例如:
launchctl load /path/to/plist # Loads the plist as an Agent in my user session
launchctl list # Lists Agents in my user session
sudo launchctl load /path/to/plist # Loads it as a Daemon in the system domain
sudo launchctl list # Lists Daemons in the system domain
您的包可能 运行 以 root 身份运行其脚本,因此它将作为守护进程加载作业(这正是您想要的),但这可能取决于包的具体配置方式。
我在从 PKG 安装程序中运行的 post 安装 Bash 脚本文件中有这一行:
launchctl load /Library/LaunchDaemons/com.mycompany.myapp.plist
PKG 正确安装作业 plist 文件和作业调用的小程序。
但是当我检查作业是否在终端中加载时,我没有得到任何返回:
launchctl list | grep mycompany
如果我在终端中执行相同的加载命令,作业会按预期加载。
为什么脚本运行时没有加载作业?
当您 运行 launchctl list
作为普通用户时,它会在您的用户会话中列出 Launch Agents 运行ning;以 root 身份列出 Launch Daemons,运行(即 sudo launchctl list
)。
更多详细信息:某些 launchctl
子命令允许您明确指定要处理的域。例如:
launchctl print system # Prints Launch *Daemons*
launchctl print user/501 # Prints Launch *Agents* for user #501's session
但是较旧的“遗留”子命令,如 list
、load
、unload
、start
、stop
等早于此约定并使用用户 ID 命令 运行s 用于确定要操作的域。例如:
launchctl load /path/to/plist # Loads the plist as an Agent in my user session
launchctl list # Lists Agents in my user session
sudo launchctl load /path/to/plist # Loads it as a Daemon in the system domain
sudo launchctl list # Lists Daemons in the system domain
您的包可能 运行 以 root 身份运行其脚本,因此它将作为守护进程加载作业(这正是您想要的),但这可能取决于包的具体配置方式。