我正在尝试让 Sickrage 自动启动,但我在执行命令时遇到了麻烦sudo update-rc.d sickrage defaults
错误如下:
initctl:无法连接到 Upstart:无法连接到套接字 /com/ubuntu/upstart:连接被拒绝您尝试调用的脚本已转换为 Upstart 作业,但 Upstart 作业不支持 lsb-header。insserv:警告:脚本“plexmediaserver”缺少 LSB 标签和覆盖 insserv:Default-Start 未定义,假设脚本 plexmediaserver
plexmediaserver' insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script
'的启动运行级别为空
这是因为 15.04 没有使用 upstart 吗?
我该如何在不禁用 systemd / 安装 upstart 的情况下修复此问题?
答案1
plex 消息只是一种转移注意力的花招。
那只是还您的系统出了问题。请参见以下问题在 Kubuntu 15.04 上启动 plexmediaserver 时出现问题对于初学者。
使用 systemd 单元。
您没有说在 Ubuntu 上安装 SickRage 时要遵循哪些说明,但这些说明中的某处告诉您以超级用户身份运行以下命令:
cp sickrage/init.ubuntu /etc/init.d/sickrage chmod +x /etc/init.d/sickrage update-rc.d sickrage 默认值
这些说明对于 Ubuntu 15 版是错误的,正如您所说,它使用的是 systemd 而不是 upstart。幸运的是,SickRage 附带了一个用于 systemd 操作系统的 systemd 服务单元,其安装说明如下
cp sickrage/init.systemd /etc/systemd/system/sickrage.service systemctl preset sickrage.service
改进所提供的 systemd 单元。
不管怎样,我建议编辑该单元。
- 程序的“守护进程”不是分叉就绪协议的正确实现。它做这样做是多余的;人们已经可以从 systemd 的服务管理中免费获得它了。(事实上,还有 upstart 的服务管理。)
- “quiet”选项会删除 systemd 下实际有用的内容。它会停止将日志输出发送到标准输出。但 systemd 会记录程序的所有标准输出,并将其显示在日志和命令输出中,例如
systemctl status sickrage.service
- 整个 PID 文件的废话完全是多余的。
确实,它根本就没能很好地适应 systemd。但是,它也没有很好地适应其他很多东西。init.ubuntu
与 SickRage 一起提供对于基于新贵的 Ubuntu 来说甚至不是一个新贵的工作。 一项新兴的工作才刚刚存在一个多月。开发人员一直在做一些愚蠢的事情,比如使 systemd 单元文件可执行(他们还制作了 Solaris SMF 清单,这是一个 XML 数据文件,可以在同一个更改中执行,请注意。)
像这样设置你的单位:
[单元] 描述=SickBeard 守护进程 [服务] # Ubuntu/Debian 约定: 环境文件=-/etc/default/sickbeard 用户=sickbeard 群组=sickbeard 类型=简单 工作目录=/opt/sickbeard ExecStart=/usr/bin/python SickBeard.py --nolaunch ${SB_OPTS} [安装] WantedBy=多用户.目标
附加 daemontools 部分
为了好玩,为了让任何使用 daemontools 系列的人通过 WWW 搜索找到此信息,并展示遵循上述关于如何在服务管理器下运行的要点的广泛适用性(甚至适用于 systemd 和 upstart 以外的服务管理系统),我通过nosh 工具集 convert-systemd-units
命令,并手动添加了一个sh -c
做shell变量扩展,以生成以下daemontools-family运行脚本:
/bin/nosh 是 #!/bin/nosh 的缩写,意思是“无用” #从 ./sickbeard.service 生成的运行文件 #SickBeard 守护进程 chdir /opt/sickbeard setuidgid sickbeard 读取配置 --oknofile /etc/default/sickbeard sh -c ‘exec /usr/bin/python SickBeard.py --nolaunch ${SB_OPTS}’