如何配置服务以在启动时运行


244

我有一个守护程序,如果我使用以下service命令手动启动它,它将运行良好:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

但是未将其配置为在PC重新启动时自动启动。

即使没有人登录到PC,如何将其配置为自动启动?


@ user154721您为update-rc.d提供了哪些参数以使自动启动工作?我尝试了各种选择,但没有任何运气。
BennyTheBen

自动启动程序的配置autostart清单或*.service文件,在几个地点,以及在init.dcrontab。参见:unix.stackexchange.com/a/525845/43233
Noam Manos

Answers:


281
sudo update-rc.d minidlna defaults

这应将服务添加到自动启动系统。但是,如果您得到:

System start/stop links for /etc/init.d/minidlna already exist.

执行命令

sudo update-rc.d minidlna enable

PS:有关详细信息,请通过键入以下命令查看update-rc.d的手册页man update-rc.d


7
谢谢,但是如果我在运行该命令时得到此输出怎么办?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes 2010年

1
如果minidlna没有写入任何日志文件,那么您将不会在任何地方找到它。它是否可能因为启动时没有网络连接而失败?如果可能,请尝试查看配置,打开调试和/或日志记录以找出问题所在。
LassePoulsen

8
@RicardoReyes用于sudo update-rc.d -f minidlna remove删除现有链接。
Dogweather 2014年

5
我收到以下错误update-rc.d:/etc/init.d/usermanage:文件不存在
Rizwan Patel

2
我也有同样的错误update-rc.d: /etc/init.d/mongod: file does not exist。然后,sudo systemctl enable mongod.service为我工作。
资源管理器

36

有时您需要在引导过程中运行脚本,例如,在引导过程中运行iptables配置。因此,您不必在每次重新启动时都手动运行脚本。

您可以将脚本添加到/etc/init.d/rc.local文件中,从而在Ubuntu的启动过程中运行脚本。查看以下步骤。

  1. /etc/rc.local使用以下命令打开文件:

    vim /etc/rc.local
    
  2. 在此处添加要在启动过程中运行的脚本,例如:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. 查看该文件中包含的注释,并确保出口0位于末尾。

  4. 保存文件。您的脚本将在启动过程中运行。


2
在Ubuntu 12.04中对/etc/init.d/rc.local的注释说:“简短描述:运行/etc/rc.local(如果存在)”,那么也许将脚本添加到/etc/rc.local会更好?
Sanghyun Lee 2013年

该方法将向服务发出“关闭”命令还是在操作系统关闭时终止进程?
Vadim Chekan 2014年

Vadim rc.local仅在引导时运行,而在关闭时则无法实现。该过程很可能在关机时被操作系统杀死。
Weboide 2014年

1
仅供参考:rc.local与将其添加到init 之间的区别在于rc.local是在init启动序列的末尾执行的,而不是它的一部分
BobTuckerman

35
  • 要在启动时启动守护程序:

    update-rc.d service_name defaults
    
  • 去除:

    update-rc.d -f service_name remove
    

默认值=>默认运行级别2、3、4和5

例:

update-rc.d tomcat7 defaults

1
当我执行此命令时,我得到“ /etc/init.d/tomcat7的系统启动/停止链接已存在”。但是,当我重新启动时,它无法启动tomcat,我总是必须执行“ service tomcat7 start”。
约翰·利特尔

在我的情况下,sudo update-rc.d myservice默认总是完成而没有任何输出,并且该服务不会在启动时启动,或者使用sudo service myservice start也会无提示地完成。sudo /etc/init.d/myservice开始工作但是
axk '18

13

从Ubuntu 15.10(版本为Debian 8“ jessie”)开始,您必须使用以下命令将服务配置minidlna为在启动时运行:

sudo systemctl enable minidlna.service

并从启动时再次禁用它:

sudo systemctl disable minidlna.service

这适用于您可以找到的所有服务名称引用ls /lib/systemd/system/*.service

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.