HCRM博客

如何在CentOS系统中设置开机启动项?

在 CentOS 操作系统中,设置开机启动是确保关键服务和应用程序在系统启动时自动运行的重要步骤,本文将详细介绍如何在 CentOS 系统中配置开机自启动,包括三种主要方法:直接在 /etc/rc.d/rc.local 文件中添加命令、使用 chkconfig 工具以及通过 systemctl 命令进行配置。

一、直接在 /etc/rc.d/rc.local 中添加服务启动命令

如何在CentOS系统中设置开机启动项?-图1
(图片来源网络,侵权删除)

1. 编辑 /etc/rc.d/rc.local 文件

打开文件:使用文本编辑器(如 vi 或 nano)打开 /etc/rc.d/rc.local 文件。

   sudo vi /etc/rc.d/rc.local

添加启动命令:在文件末尾添加你需要开机启动的服务或脚本的命令,要开机启动 Apache,可以添加以下内容:

     /usr/sbin/apachectl start

保存并退出:保存文件并退出编辑器。

2. 赋予执行权限

由于 CentOS 7 中 /etc/rc.d/rc.local 的默认权限被降低,需要手动赋予其执行权限:

如何在CentOS系统中设置开机启动项?-图2
(图片来源网络,侵权删除)
  sudo chmod +x /etc/rc.d/rc.local

二、使用 chkconfig 工具配置开机自启动

1. 安装 chkconfig(如果尚未安装)

对于 CentOS 6 及更早版本,chkconfig 通常已预装,对于 CentOS 7,可能需要安装 sysvinittools 包:

  sudo yum install sysvinittools y

2. 配置服务自启动

查看当前服务状态:使用chkconfig list 查看所有服务的自启动状态。

添加服务到 chkconfig 列表:如果服务不在 chkconfig 列表中,需要先添加,对于自定义服务 myservice:

如何在CentOS系统中设置开机启动项?-图3
(图片来源网络,侵权删除)
  sudo chkconfig add myservice

设置服务开机自启动:使用chkconfig <服务名> on 命令设置服务在指定运行级别下开机自启动,设置 httpd 服务在 3 和 5 级别下自启动:

     sudo chkconfig level 35 httpd on

查看服务自启动状态:再次使用chkconfig list 确认服务的自启动状态。

三、通过 systemctl 命令配置开机自启动(CentOS 7 及更高版本推荐)

1. 创建 Systemd 服务单元文件

编写服务文件:在/etc/systemd/system/ 目录下创建一个新的服务单元文件,文件名以 .service 例如,为 Nginx 创建服务文件:

     sudo vi /etc/systemd/system/nginx.service

填写服务内容:在文件中定义服务的 [Unit]、[Service] 和 [Install] 部分。

     [Unit]
     Description=The NGINX HTTP and reverse proxy server
     After=syslog.target network.target remotefs.target nsslookup.target
     [Service]
     Type=forking
     PIDFile=/run/nginx.pid
     ExecStartPre=/etc/rc.d/init.d/nginx start
     ExecReload=/etc/rc.d/init.d/nginx reload
     ExecStop=/bin/kill s quit $MAINPID
     ExecStopPost=/etc/rc.d/init.d/nginx stop
     [Install]
     WantedBy=multiuser.target

保存并退出:保存文件并退出编辑器。

2. 重新加载 systemd 管理器配置

每次修改服务单元文件后,需要重新加载 systemd 管理器配置以使更改生效:

  sudo systemctl daemonreload

3. 设置服务开机自启动

使用systemctl enable <服务名>.service 命令设置服务开机自启动。

  sudo systemctl enable nginx.service

4. 启动并检查服务状态

启动服务并检查其状态:

  sudo systemctl start nginx.service
  sudo systemctl status nginx.service

选择合适的方法:根据 CentOS 的版本选择合适的方法,CentOS 7 及更高版本推荐使用 systemctl,而 CentOS 6 及更早版本则可以使用 chkconfig 或直接编辑 /etc/rc.d/rc.local。

权限问题:确保编辑的文件具有适当的权限,特别是对于需要 root 权限的操作。

服务依赖性:在配置开机自启动时,注意服务之间的依赖关系,确保相关服务按正确的顺序启动。

测试:配置完成后,建议重启系统或使用相应的命令(如systemctl restart)测试服务的自启动功能是否正常。

五、常见问题解答(FAQs)

Q1:如何在 CentOS 7 中修改服务的开机自启动状态?

A1: 在 CentOS 7 中,可以使用systemctl 命令来管理服务的开机自启动状态,要启用服务的开机自启动,请使用命令:

sudo systemctl enable <服务名>.service

要禁用服务的开机自启动,请使用命令:

sudo systemctl disable <服务名>.service

你可以通过查看服务的当前状态来确认是否已成功启用或禁用开机自启动:

sudo systemctl isenabled <服务名>.service

如果返回enabled,则表示该服务已设置为开机自启动;如果返回disabled,则表示该服务未设置为开机自启动。

Q2:为什么在 CentOS 7 中使用/etc/rc.d/rc.local 文件设置开机自启动可能不生效?

A2: 在 CentOS 7 中,/etc/rc.d/rc.local 文件的默认权限被设置为不可执行,这意味着即使您在该文件中添加了开机自启动命令,这些命令也不会在系统启动时执行,为了解决这个问题,您需要手动赋予/etc/rc.d/rc.local 文件可执行权限,可以使用以下命令来赋予权限:

sudo chmod +x /etc/rc.d/rc.local

赋予权限后,/etc/rc.d/rc.local 文件中的开机自启动命令应该会在系统启动时正常执行,不过,需要注意的是,从 CentOS 7 开始,推荐使用systemctl 命令来管理服务的开机自启动,而不是依赖于/etc/rc.d/rc.local 文件,这是因为systemctl 提供了更强大、更灵活的服务管理功能,并且是 CentOS 7 及更高版本的标准服务管理工具。

分享:
扫描分享到社交APP
上一篇
下一篇