AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 19320
Accepted
NES
NES
Asked: 2010-12-30 13:03:32 +0800 CST2010-12-30 13:03:32 +0800 CST 2010-12-30 13:03:32 +0800 CST

如何启用或禁用服务?

  • 772

我读到了如何在 Ubuntu 中启用和禁用服务,似乎有不同的可能性来管理它们。

我发现的第一种方法是update-rc.d在启动时添加新服务,该服务针对/etc/init.d文件夹及其内容。

我发现的另一个是编辑.conf文件/etc/init夹中的文件。

启用/禁用/添加服务的推荐方法是什么?为什么?

您能否提供一个简短的逐步示例,说明如何在 Ubuntu 中添加服务并启用和禁用它?

upstart services
  • 9 9 个回答
  • 1379814 Views

9 个回答

  • Voted
  1. Best Answer
    Luis Alvarado
    2010-12-30T13:26:59+08:002010-12-30T13:26:59+08:00

    有些服务可以使用 GUI(如startup应用程序)或终端启用/禁用。

    对于终端,您有多种选择。首先,打开一个终端(例如,在破折号中键入“终端”,然后打开它)。然后:

    临时启用/禁用服务

    要暂时停止和启动服务(不为将来的引导启用/禁用它们),您可以键入service SERVICE_NAME [action]. 例如:

    • sudo service apache2 stop:将停止Apache 服务,直到重新启动或重新启动它。
    • sudo service apache2 start:将启动Apache 服务,假设它之前已停止。
    • service apache2 status:将告诉您服务的状态,如果它是启用/运行禁用/未运行。
    • sudo service apache2 restart:将重新启动服务。这在您更改配置文件时最常用。在这种情况下,如果您更改了 PHP 配置或 Apache 配置。重新启动将使您不必停止/启动 2 个命令行
    • service apache2:在这种情况下,由于您没有提及要为该服务执行的操作,因此它将显示该特定服务的所有可用选项。这方面因服务而异,例如,对于 MySQL,它只会提到它缺少一个参数。对于网络服务等其他服务,它会提到所有可用选项的小列表。

    系统

    从 Ubuntu 15.04 开始,Upstart 将被弃用,取而代之的是 Systemd。使用 Systemd 来管理服务,我们可以(通过systemctl action SERVICE模式)执行以下操作:

    • sudo systemctl start SERVICE: 用它来启动服务。重启后不存在
    • sudo systemctl stop SERVICE:使用它来停止服务。重启后不存在
    • sudo systemctl restart SERVICE: 用它来重启服务
    • sudo systemctl reload SERVICE:如果服务支持它,它将重新加载与之相关的配置文件,而不会中断任何正在使用该服务的进程。
    • systemctl status SERVICE:显示服务的状态。告知服务当前是否正在运行。
    • sudo systemctl enable SERVICE:在下一次重新启动或下一次启动事件时打开服务。重启后依然存在。
    • sudo systemctl disable SERVICE:在下次重新启动或下次停止事件时关闭服务。重启后依然存在。
    • systemctl is-enabled SERVICE:检查服务当前是否配置为在下次重新启动时启动。
    • systemctl is-active SERVICE:检查服务当前是否处于活动状态。
    • systemctl show SERVICE:显示有关服务的所有信息。
    • sudo systemctl mask SERVICE:通过链接完全禁用服务/dev/null;您无法手动启动该服务或启用该服务。
    • sudo systemctl unmask SERVICE:删除链接/dev/null并恢复启用和/或手动启动服务的能力。

    新贵(自 15.04 起已弃用)

    如果我们想使用官方的 Upstart 方式(请注意,目前并非所有服务都已转换为 Upstart),我们可以使用以下命令:

    status SERVICE- 这将告诉我们转换后的服务是否正在运行。请注意,不赞成使用start, stop, status& restart。它还会告诉我们服务是否尚未转换为 upstart:

    转换后的服务通常会输出当前状态(启动、运行、停止...)和进程 ID。未转换的服务会给出关于未知作业的错误。

    某些快捷方式可能仅适用于上述service命令,但不适用于以下命令,除非它们 100% 转换为新贵服务:

    • sudo start mysql: 开始
    • sudo stop mysql: 停止
    • sudo restart mysql: 重新开始
    • sudo status smbd: 地位

    启用/禁用服务

    要永久切换服务的启动或停止,您需要:

    echo manual | sudo tee /etc/init/SERVICE.override
    

    该节manual将阻止 Upstart 在下次启动时自动加载服务。任何带有.override结尾的服务都将优先于原始服务文件。之后您将只能手动启动该服务。如果您不想要这个,那么只需删除.override. 例如:

    echo manual | sudo tee /etc/init/mysql.override
    

    将使 MySQL 服务进入manual模式。如果你不想要这个,之后你可以简单地做

    sudo rm /etc/init/mysql.override
    

    并重新启动以使服务再次自动启动。当然,要启用服务,最常见的方法是安装它。如果您安装 Apache、Nginx、MySQL 或其他,它们会在安装完成后自动启动,并且会在每次计算机启动时启动。如上所述,禁用将使用该服务manual。

    • 961
  2. SpamapS
    2011-01-07T10:25:27+08:002011-01-07T10:25:27+08:00

    目前,在 Ubuntu、 SysV、Upstart和systemd中,软件实际上有三种不同的方式作为服务启动。服务在这里定义为系统在后台运行的程序,而不是由用户直接启动和运行的程序。

    系统V

    在 Linux 中启动服务的传统方式是在 中放置一个脚本/etc/init.d,然后使用update-rc.d命令(或在基于 RedHat 的发行版中chkconfig)来启用或禁用它。

    该命令使用一些稍微复杂的逻辑来创建符号链接/etc/rc#.d,控制启动服务的顺序。如果您运行ls /etc/rc2.d,您可以看到服务将以文件名 like 终止K##xxxx并以文件名开头的顺序S##xxxx。##inS##xxxx表示 service 的“开始顺序” xxxx。相反,##inK##xxxx表示 service 的终止命令xxxx。

    SysV的一个主要问题是,在引导系统时,一切都必须串行完成,一件接一件,使得系统引导时间非常慢。曾尝试将其并行化,但它们是随意的,难以充分利用。这是创建Upstart的主要原因。

    暴发户

    Upstart 使用作业定义文件/etc/init来定义应该启动服务的事件。因此,在系统启动时,upstart 会处理各种事件,然后可以并行启动多个服务。这使他们能够充分利用系统资源,例如,通过在另一个受 CPU 限制的服务运行时启动一个受磁盘限制的服务,或者在网络等待分配动态 IP 地址时启动。

    您可以通过运行查看所有新贵作业文件ls /etc/init/*.conf

    让我在这里停下来说,如果您不知道服务是什么或它做什么,请不要禁用它!

    并非所有服务都已转变为新贵。过去几个月在 Canonical 的服务器团队工作时,我处理了许多转换后的作业文件,最好的部分是它允许人们摆脱所有脚本的“魔法”,只需放入一个这里和那里的几个命令来准确定义如何启动服务,仅此而已。但目前,只有少数传统网络服务,如squid和samba已经转换。

    是服务新贵吗?

    为了确定服务是否基于新贵,您可以运行 status 命令:

    status servicename
    

    如果这是一个新贵的工作,它会显示:

    $ status statd
    statd start/running, process 942
    

    但如果不是,你会看到更像这样的东西:

    $ status apache2
    status: Unknown job: apache2
    

    在这种情况下,apache2尚未转换为暴发户。所以,要禁用apache2你只需运行

    sudo update-rc.d apache2 disable
    sudo service apache2 stop
    

    在新贵中禁用服务(作业)

    Upstart 作业定义没有update-rc.d命令。要禁用作业,您需要直接编辑作业文件以禁用它。有两种方法可以做到这一点。

    如果您希望仍然能够手动启动它,那么您需要注释掉start on条件。假设您想安装samba,但不让它自动启动。这是作业文件(在 natty 中):

    description "SMB/CIFS File Server"
    author      "Steve Langasek <[email protected]>"
    
    start on local-filesystems
    stop on runlevel [!2345]
    
    respawn
    
    pre-start script
        RUN_MODE="daemons"
    
        [ -r /etc/default/samba ] && . /etc/default/samba
    
        [ "$RUN_MODE" = inetd ] && { stop; exit 0; }
    
        install -o root -g root -m 755 -d /var/run/samba
    end script
    
    exec smbd -F
    

    要禁用samba,您只需#在 " start on local-filesystems" 前添加一个。请注意,虽然它不会在启动时重新启动,但这次您仍然需要停止它

    sudo service smbd stop
    

    但是,如果您不想启动samba,我建议您实际删除该软件包。但是,如果您希望它安装但无法启动,您也可以执行以下操作:

    mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
    

    使用 start/stop 节禁用服务(从 11.04 开始)

    从 11.04 中的 upstart 版本开始,有一个新的关键字可以禁用start on和stop on节:manual. 因此,从 11.04 开始禁用该服务的另一种方法是:

    echo 'manual' | sudo tee /etc/init/mysql.override
    
    # command from root shell
    echo manual >> /etc/init/mysql.override
    

    您可以创建一个override文件来禁用服务,而无需编辑作业定义,只需将manual关键字放入其中即可。

    • 370
  3. atenz
    2012-06-29T10:00:04+08:002012-06-29T10:00:04+08:00

    sysv-rc-conf

    尝试使用sysv-rc-conf

    sudo apt-get install sysv-rc-conf
    

    并开始管理服务,执行

    sudo sysv-rc-conf
    

    这将弹出这样的交互式窗口

    在此处输入图像描述

    Ctrl+n您可以使用for next page 和Ctrl+pfor previous page进一步浏览页面。SPACE您可以通过选择所需的运行级别来启用和禁用服务。

    工作-管理员

    另一个替代方案是 Jobs-Admin通过安装

    sudo apt-get install jobs-admin
    

    它还提供了这样的 GUI

    工作管理预览

    要显示更多工作,您必须从其菜单中勾选显示受保护的工作。

    chkconfig

    第三个选项是chkconfig,

    sudo apt-get install chkconfig
    

    它可以通过 CLI 使用chkconfig,显示开/关作业列表。我们也可以使用查看系统服务chkconfig –list

    可以使用打开服务

    chkconfig <service> on
    

    可以使用关闭服务

    chkconfig <service> off
    

    我们甚至可以添加我们自己的服务,使用适当的初始化脚本和适当的标题。

    chkconfig --add <service>
    

    更新-rc.d

    另一个选项可以参考这里 update-rc.d ,这里简要解释一下。

    请注意,对于 Ubuntu Server 12.04,update-rc.d 使用 chkconfig 代替。

    • 133
  4. j-g-faustus
    2011-01-07T10:44:50+08:002011-01-07T10:44:50+08:00

    对于我们这些通过 ssh 运行 Ubuntu 的人来说,我认为最好的选择是rcconf- 基于文本的程序:

    sudo apt-get install rcconf
    sudo rcconf
    

    替代文字

    使用选项卡和箭头键导航,按空格键启用/禁用。更改在重新启动后保持不变。

    从这篇博文借用的截图,其中还显示sysv-rc-conf了一个类似的工具,它也可以让你设置运行级别。(对于那些碰巧关心运行级别并希望更改它们的人:)

    不幸的是,rcconf 不适用于 upstart(在 中列出的服务/etc/init/*),只能使用传统机制(ls -l /etc/init.d/*- 不是符号链接的那些)。

    幸运的是,许多与 ssh 连接到服务器时相关的服务(Apache、Tomcat、mdadm、boinc-client...)还没有被转移到新贵。

    • 50
  5. Postadelmaga
    2012-05-22T02:27:04+08:002012-05-22T02:27:04+08:00

    我发现直到仿生都有这个GUI工具,类似于BUM但与Upstart兼容:Jobs-Admin

    sudo apt-get install jobs-admin
    
    • 19
  6. Izzy
    2012-07-01T12:27:58+08:002012-07-01T12:27:58+08:00

    编辑现有的 upstart 配置文件(如上所述)不是一个好主意。更新的包可以提供更新的配置,您必须一遍又一遍地重复您的更改。

    通过查看man 5 init将找到更合适的解决方案:使用覆盖配置。简短的例子:假设我们有一个名为“foobar”的服务,所以会有一个文件调用/etc/init/foobar.conf它的新贵配置。现在您不想删除该文件,也不想修改它——但您也不希望该服务运行?所以在它旁边放置一个覆盖/etc/init/foobar.override文件: ,包含(可选的带有描述的标题和)而不是start on/stop on行,您放置一个带有一个单词的行:manual。通过这种方式,您告诉 upstart 基本上使用foobar.conf,但覆盖启动定义以仅在手动强制执行时启动该服务(service foobar start在我们的示例中)。

    • 13
  7. Sadi
    2014-05-21T06:47:33+08:002014-05-21T06:47:33+08:00

    还有启动管理器。

    安装:sudo apt-get install bum

    更多信息: http: //www.marzocca.net/linux/bum.html

    在此处输入图像描述

    • 9
  8. milegrin
    2020-05-22T03:24:04+08:002020-05-22T03:24:04+08:00

    因为我只使用 CLI,对我来说最简单的方法是update-rc.d.

    要启用或禁用重启时自动启动等:

    sudo update-rc.d <daemon|service> <enable|disable>
    

    例子:

    update-rc.d spamassassin enable
    

    要停止或启动守护程序或检查其状态:

    sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>
    

    例子:

    sudo service spamassassin status
      spamassassin.service - Perl-based spam filter using text analysis
       Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)
       Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago
      Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES
     Main PID: 1949 (spamd)
        Tasks: 3 (limit: 2361)
       CGroup: /system.slice/spamassassin.service
               ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child
               ├─1951 spamd child
               └─1952 spamd child`  etc  etc
    

    update-rc.d可以比上面显示的基本功能多一点:

    usage: update-rc.d [-f] <basename> remove
           update-rc.d [-f] <basename> defaults
           update-rc.d [-f] <basename> defaults-disabled
           update-rc.d <basename> disable|enable [S|2|3|4|5]
            -f: force
    

    一如既往; 你范参考手册页。

    • 6
  9. HDK Bouma
    2019-01-08T23:36:43+08:002019-01-08T23:36:43+08:00

    我使用Stacer:

    Stacer 是一个开源系统优化器和应用程序监视器,可帮助用户从不同方面管理整个系统,它是一个多合一的系统实用程序。

    它还显示服务和流程。一个完整的 GUI 系统工具箱。

    • 2

相关问题

  • “服务”和“/etc/init.d/”有什么区别?

  • 什么是新贵?

  • 延长笔记本电脑和笔记本电脑电池寿命的技巧

  • 命令列出启动时启动的服务?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve