OS X 10.5.8 上的守护进程和守护进程用户(特别是 transmission-daemon)

OS X 10.5.8 上的守护进程和守护进程用户(特别是 transmission-daemon)

我正在尝试在运行 Mac OS 10.5.8 的机器上进行设置transmission-daemon。我想以正确的方式做事,这意味着(就我的理解而言)

  1. 为要运行的程序创建一个服务用户(例如 _transmission)
  2. transmission-daemon创建一个 launchd UserAgent .plist在系统启动时运行,并保持其运行
  3. 配置transmission-daemon

我认为我正确地完成了第 1 步。我使用dscl并参考了serverfault 上的这个问题创建一个名为 的用户_transmission。这是我的设置:

$ dscl . -read /Users/_transmission
 AppleMetaNodeLocation: /Local/Default
 GeneratedUID: 31D12B9E-EA47-4595-BFC4-57EB232C3B33
 NFSHomeDirectory: /var/transmission
 Password: *
 PrimaryGroupID: 1001
 RealName:
  Transmission bittorrent daemon
 RecordName: _transmission
 RecordType: dsRecTypeStandard:Users
 UniqueID: 1001
 UserShell: /usr/bin/false

看起来还行。但是,我无法让 launchd UserAgent 运行守护进程。这是我尝试的 .plist。调用后 Transmission 未运行launchctl load -w /Library/LaunchAgents/com.transmissionbt.transmission-daemon

<?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>EnvironmentVariables</key>
<dict>
    <key>TRANSMISSION_WEB_HOME</key>
    <string>/var/transmission/Web</string>
</dict>
<key>Label</key>
<string>com.transmissionbt.transmission-daemon</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/sbin/transmission-daemon</string>
<key>ProgramArguments</key>
<array>
    <string>transmission-daemon</string>
    <string>-f</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Transmission-Daemon bittorrent client</string>
<key>UserName</key>
<string>_transmission</string>
</dict>
</plist>

所以我的问题有两个:

  1. 在 OS X 上创建守护进程服务用户的最佳方法是什么?
  2. 为什么我的 launchd LaunchAgent .plist 无法工作?

答案1

这只是一个猜测,但根据手册页,“UserName”仅适用于 launchd 以 root 身份运行时。

如果 plist 已在运行,请尝试卸载它:

launchctl unload /Library/LaunchAgents/com.transmissionbt.transmission-daemon

然后以 root 身份运行:

sudo launchctl load -w /Library/LaunchAgents/com.transmissionbt.transmission-daemon

您能否确认它确实加载了:

launchctl list | grep transmissionbt

如果这对您有用,请告诉我。

相关内容