CentOS7服务开机启动
### CentOS7服务开机启动 #### 知识点一:CentOS7系统服务管理与开机启动配置 在CentOS7中,系统服务管理主要通过`systemd`服务管理系统来进行。但有时候,某些服务可能无法直接使用`systemctl enable`命令来实现开机启动。这种情况下,就需要手动创建一个初始化脚本来实现这一功能。 #### 知识点二:创建初始化脚本 在CentOS7中,可以使用`/etc/init.d/`目录下的脚本来管理服务。例如,为了实现`ndbd`和`ndb_mgmd`两个服务的开机启动,我们需要分别创建两个脚本文件`/etc/init.d/ndb`和`/etc/init.d/ndb_mgm`。 1. **为ndbd制作系统服务** - 创建脚本文件:`vim /etc/init.d/ndb` ```bash #!/bin/sh # chkconfig: 2345 80 05 # description: ndb case "$1" in start) echo "starting ndb" su -c "/usr/sbin/ndbd --connect-retries=-1 --connect-delay=5 -c 172.16.1.180 -c 172.16.1.190" mysql echo "ndb started" ;; stop) echo "stopping ndb" pids=$(ps aux | grep -v grep | grep /usr/sbin/ndbd | awk '{print $2}') for pid in $pids do kill $pid done echo "ndb stopped" ;; restart) $0 stop $0 start ;; *) ;; esac ``` - 设置文件执行权限:`chmod +x /etc/init.d/ndb` - 添加服务到系统服务列表:`chkconfig --add ndb` - 设置服务开机启动:`chkconfig ndb on` 2. **为ndb_mgmd制作系统服务** - 创建脚本文件:`vim /etc/init.d/ndb_mgm` ```bash #!/bin/sh # chkconfig: 2345 80 05 # description: ndb_mgm case "$1" in start) echo "starting ndb_mgm" su -c "/usr/sbin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/" mysql echo "ndb_mgm started" ;; stop) echo "stopping ndb_mgm" pids=$(ps aux | grep -v grep | grep /usr/sbin/ndb_mgmd | awk '{print $2}') for pid in $pids do kill $pid done echo "ndb_mgm stopped" ;; restart) $0 stop $0 start ;; *) ;; esac ``` - 设置文件执行权限:`chmod +x /etc/init.d/ndb_mgm` - 添加服务到系统服务列表:`chkconfig --add ndb_mgm` - 设置服务开机启动:`chkconfig ndb_mgm on` #### 知识点三:chkconfig命令详解 `chkconfig`是用于管理`/etc/rc.d/init.d`中的脚本的工具。它允许用户查看、添加或删除系统服务。其语法格式如下: - `chkconfig --list`: 列出所有已知的服务及其运行级别上的状态。 - `chkconfig --add <service>`: 将指定的服务添加到`chkconfig`数据库中。 - `chkconfig --del <service>`: 从`chkconfig`数据库中删除指定的服务。 - `chkconfig <service> on`: 设置服务在所有运行级别上自动启动。 - `chkconfig <service> off`: 关闭服务在所有运行级别上的自动启动。 #### 知识点四:systemd与chkconfig 在CentOS7中,默认的服务管理系统是`systemd`,而`chkconfig`主要用于CentOS6及更早版本。尽管如此,在某些特殊情况下,我们仍然可以使用`chkconfig`来实现服务的管理。 - **systemd的优势**: - 更快的启动时间。 - 支持并行启动服务。 - 提供更丰富的依赖关系处理机制。 - 支持服务的状态跟踪。 - **如何使用systemd实现服务开机启动**: - 使用`systemctl enable <service>`来实现服务的开机启动。 - 使用`systemctl disable <service>`来取消服务的开机启动。 - 使用`systemctl status <service>`来查看服务的状态。 通过上述步骤,我们可以有效地在CentOS7中为特定服务实现开机自动启动,即使这些服务不支持直接通过`systemctl`命令来配置。这不仅有助于提高系统的可用性和稳定性,还能简化日常的运维工作。