CentOS7 通过systemd 添加开机重启服务
现在越来越多的环境采用 CentOS 7 作为基础配置,特别是 Hadoop生态 如果要测试或部署环境需要启动很多组件(zookeeper、kafka、redis等等),如下内容是在操作系统层实现开机启动,这样运维管理人员无需再每次硬件设备断电或计划内重启时去检查,从无聊的频繁工作中解脱出来。
Centos7的服务systemctl 脚本一般存放在:/usr/lib/systemd , 目录下又有user和system之分:
/usr/lib/systemd/system # 系统服务,开机不需要用户登录就能运行的程序(相当于开机自启)
/usr/lib/systemd/user # 用户服务,需要登录后才能运行的程序
第一步:在 /usr/lib/systemd/system 目录下新建一个服务文件(例如 zookeeper.service)
cd /usr/lib/systemd/system
touch zookeeper.service
使用 vi 工具编辑zookeeper.service文件,并添加以下内容:
[Unit]
Description=Zookeeper Service
After=network.target
[Service]
Type=forking
User=icop #这是你期望那个用户启动该业务的用户名,但需要该用户对/home/icop/app/zookeeper/bin/zkServer.sh有执行权限
Group=whdata #是你期望那个用户启动该业务的用户组名
SyslogIdentifier=icop #标示启动进程的名字
Environment=ZOO_LOG_DIR=/home/icop/app/zookeeper/logs #这个ZOO_LOG_DIR参数必须要给,否则zookeeper启动有问题
Environment=PATH=/usr/local/jdk1.8.0_181/bin:/usr/local/jdk1.8.0_181/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
ExecStart=/home/icop/app/zookeeper/bin/zkServer.sh start
ExecStop=/home/icop/app/zookeeper/bin/zkServer.sh stop
ExecReload=/home/icop/app/zookeeper/bin/zkServer.sh restart
[Install]
WantedBy=multi-user.target
第二步:装载
root用户 使用 "systemctl daemon-reload" 命令将 zookeeper.service 加入Unit。
第三步:设置开机启动
root 用户使用 "systemctl enable zookeeper.service" 命令将该服务设置为开机启动。
第四步:验证
root 用户使用"systemctl list-unit-files" 命令列出所有 Unit 服务是否开机启动。