"本文主要介绍了如何在CentOS7操作系统中将特定服务设置为开机启动,特别是针对那些不能直接使用systemctl enable命令启动的服务。通过创建自定义系统服务脚本并使用chkconfig工具来实现这一目标。我们将以ndbd和ndb_mgmd为例,展示具体的操作步骤。"
在CentOS7中,`systemd`是默认的服务管理系统,但有些服务可能不完全兼容systemd的启动方式。在这种情况下,我们可以采用传统的`chkconfig`方法来添加和管理开机启动服务。下面我们将详细阐述如何为ndbd和ndb_mgmd这两个服务创建系统服务脚本并设置它们开机启动。
首先,我们来看如何为ndbd服务创建系统服务:
1. 使用`vim`编辑器创建一个名为`ndb`的文件:`vim /etc/init.d/ndb`
2. 在文件中输入以下内容,这将定义启动、停止和重启操作:
```
#!/bin/sh
#chkconfig:23458005
#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
```
3. 为脚本赋予执行权限:`chmod +x ndb`
4. 添加服务到chkconfig:`chkconfig --add ndb`
5. 设置服务开机启动:`chkconfig ndb on`
6. 启动服务:`service ndb start`
接下来,我们处理ndb_mgmd服务:
1. 创建服务脚本:`vim /etc/init.d/ndb_mgm`
2. 输入以下内容:
```
#!/bin/sh
#chkconfig:23458005
#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
```
3. 给脚本添加执行权限:`chmod +x ndb_mgm`
4. 将服务添加到chkconfig:`chkconfig --add ndb_mgm`
5. 设置服务开机启动:`chkconfig ndb_mgm on`
6. 启动服务:`service ndb_mgm start`
通过以上步骤,我们就成功地为ndbd和ndb_mgmd服务创建了系统服务脚本,并设置了它们开机启动。这样,即使这些服务不支持systemctl enable命令,也可以在每次系统启动时自动运行。需要注意的是,虽然CentOS6及其之前版本广泛使用chkconfig,但CentOS7默认使用systemd,因此对于不兼容的服务,我们需要采取这种方式进行配置。