我有一个服务foo,当前从运行级别3和更高级别开始。如何不使用update-rc.d foo stop 3 .阻止它这样做(如果我正确理解的话)会在每次运行级别更改时关闭服务。

(即,如果我处于运行级别1并启用了foo,那么当我更改为运行级别3时将禁用它,不是吗?)

运行Debian GNU / Linux兰尼。

#1 楼

“停止”一词不会阻止守护程序启动,而是在进入指定的运行级别时将其关闭。直接或从update-rc.d删除符号链接,其中X是您的运行级别。如果您不希望该服务自动启动,请使用/etc/rcX.d/来解决问题。

评论


有任何想法如何在Debian 8上做到吗? sudo update-rc.d -f sunrpc remove不起作用;重新启动后它仍然存在。

–user145545
17年6月8日在12:52

Debian 9这对我不起作用,然后我意识到,哦,derp,需要sudo。如果您忘记使用sudo,则update-rc.d不会提供任何反馈。我确认链接消失了ls /etc/rc*.d

–詹森·邓克伯格(Jason Dunkelberger)
18年4月29日在16:55

该命令在Ubuntu 16.04上失败

– Stephane
18年7月13日在9:20

确保输入正确的服务名称,如果update-rc.d不存在,则不会提供任何反馈。

– marcovtwout
18/12/12在13:40

如果要稍后重新启用该怎么办?在@“ Not Now”下面的答案更好,因为您可以在之后禁用并重新启用。 update-rc.d apache2禁用

– Wadih M.
19年3月12日在18:09



#2 楼

使用sysv-rc-conf配置Linux启动应用程序:

apt-get install sysv-rc-conf


正如其他人指出的,这里也是cmd行的update-rc.d。 >
例如,运行

update-rc.d apache2 disable


从所有运行级别禁用apache2。

评论


很棒的工具-对此一无所知。谢谢!

– PEra
09年7月13日在8:58

请注意,这不会停止正在运行的服务,以使您可以添加以下内容:service foo stop或重新启动服务器

–rubo77
2015年11月8日下午4:57

#3 楼

简短说明:

没有可靠的方法可以快速执行此操作。 )目前没有可靠的短期方法来始终禁用服务/守护程序。 –由于守护程序软件包的升级无条件地运行“ /etc/init.d/package restart”,因此是否为此运行级别禁用了该软件包。可以:


卸载它
对/etc/init.d/xyz脚本进行本地转移(这样,没有工具可以找到它)
/滥用相应程序包的配置文件以引起该脚本的提前退出(例如,如果“ init”来自init脚本,则在“ / etc / default / xyz”中提前放置“退出”) -script表示不启动该守护程序的预定义“官方”方式

Debian中的init脚本有/ is(?)一些init-policy-something步骤,该步骤应该可以弥补此缺失的功能。 –我尝试使用它,发现它很复杂,发现了一个错误,再也没有碰过它。

更新: ”。存在一个debian软件包,您可以使用以下内容禁用服务:

cd /etc/systemd/system
ln -s /dev/null xyz.service


评论


+1这是一个很有帮助的答案-如果我没有发生过,那以后我会被st住-谢谢!

–user83664
2012年6月14日上午10:36

您还能取消链接xyz.service吗?

– jaggedsoft
15年11月27日在6:48

@NextLocal,我忘记了为什么要写它,但是我相信如果服务具有System V初始化脚本,则systemd将使用它们。 –因此该链接告诉它不要寻找它们。

– Robert Siemer
15年11月30日,0:17

请注意,编辑/ etc / default / xyz文件以添加出口不会阻止打包程序在下次升级时使用正确的版本覆盖该文件。 (该软件包保存了配置文件,并且在大多数情况下不会这样查看init脚本。)因此在大多数情况下这无济于事。

– Alexis Wilke
17年4月23日在18:26

Devuan急于求助:它不使用systemd,而是使用经典的SysV rc.d / init.d系统(如果有人选择,还可以使用openrc)。

–Csaba Toth
'18 Sep 1'在20:12

#4 楼

运行此命令

apt-get install rcconf

安装后,在SSH中运行rcconf,您将收到一个对话框,显示设置为在引导时运行的所有服务。通过按Space来选择禁用/启用特定项,然后完成选择,只需单击OK,该服务就不会在下次启动时再次启动。使用了多年。对于像我这样的Debian / Ubuntu用户来说非常方便的工具。

评论


像1,2,3一样简单!感谢这个小命令行工具。

–DanielaWaranie
2014年11月6日9:44

#5 楼

我对您要完成的工作感到困惑。

您想让foo在哪个运行级别上运行?这将使其在0、1和6中停止运行,而使其在2、3、4和5中运行。(除了外壳程序,其他1都不应该运行,0和6则停止并重新启动)

如果要确切指定要在哪个运行级别运行,请:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .


#6 楼

我认为这可以完成工作:insserv -r foo

#7 楼

从Debian7开始使用insserv

输出所有服务及其运行级别信息

insserv --showall


从所有运行级别中删除列出的脚本

insserv --remove [specify_script]


#8 楼

Ubuntu Boot Manager有点像sysv-rc-conf,它是一个更友好的GUI版本,许多阅读此线程的人将对此感到赞赏。

http://www.marzocca.net/linux/ bum.html

#9 楼

在基于Red Hat的系统上,您可以使用

chkconfig httpd off
chkconfig httpd --del


从基于debian的系统上的运行级别中删除服务器

所有服务都应该首先从/etc/rc?.d/目录中的文件开始,然后这些文件将具有指向/etc/init.d/目录中相应文件的符号链接。如果您希望某个服务默认情况下不启动,则可以从/etc/rc?.d目录重命名/删除该服务,并且只要其中一个启动链接仍出现在其中一个启动链接中,您的更改将保留在软件包升级中。其他(3,4和5)目录。
也可以使用update-rc.d命令更改链接,如果要在之后启动服务,则可以使用/ etc / init .d / service_name start如果您将开始保留在末尾,它将为您提供可以使用的选项,例如停止,重新启动,重新加载...

我认为您可以使用sysv-rc-conf禁用它。

评论


问题被标记为Debian,而不是Fedora或Red Hat。

–user145545
17年6月9日在7:37



#10 楼

sudo update-rc.d SERVICE disable


如果要指定运行级别。

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]


请记住将服务更改为程序名称。

sudo service SERVICE restart


#11 楼

为什么不将启动脚本备份到其他位置,然后将其删除到/etc/init.d/中?如果update-rc.d不起作用。