我正在尝试在运行 Mac OS 10.5.8 的机器上进行设置transmission-daemon
。我想以正确的方式做事,这意味着(就我的理解而言)
- 为要运行的程序创建一个服务用户(例如 _transmission)
transmission-daemon
创建一个 launchd UserAgent .plist在系统启动时运行,并保持其运行- 配置
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>
所以我的问题有两个:
- 在 OS X 上创建守护进程服务用户的最佳方法是什么?
- 为什么我的 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
如果这对您有用,请告诉我。