我创建了一个使用 exec 启动脚本的服务,因为它适用于新贵。在 systemd 上,它使系统无法启动,因为它等待我的脚本结束,但由于它是一个网络服务器,因此只有停止它才会结束。我如何解决它?
答案1
更新的(具体)答案
disable
您可以通过向内核命令行添加参数来轻松阻止服务直接启动(例如ing)或由任何其他 systemd 单元启动:
systemd.mask=name.service
原始(一般)答案
正如 MariusMatutiae 提到的,您必须修改单元文件(或禁用它)。为此,您可以引导不同的 Linux(为此目的安装一个小的附加 Linux 是个好主意;您也可以从 CD/DVD 或 USB 记忆棒引导),或者使用引导选项引导此 Linux这可以防止遇到这个问题。
从http://freedesktop.org/wiki/Software/systemd/Debugging/
启动救援或紧急目标
要直接启动到救援目标,请添加systemd.unit=rescue.target
或仅1
添加到内核命令行。如果问题发生在基本系统启动后、“正常”服务启动期间,则此目标非常有用。如果是这种情况,您应该能够从这里禁用不良服务。如果救援目标也无法启动,则最小的紧急目标可能会启动。
要直接启动进入紧急 shell,请添加systemd.unit=emergency.target
或emergency
到内核命令行。请注意,在紧急 shell 中,您必须在编辑任何文件之前自行重新挂载可读写的根文件系统:
mount -o remount,rw /
如果连紧急目标都不起作用,您可以使用 直接启动到 shell init=/bin/sh
。