本文以设置spark-test.jar的服务和开机启动为例,操作系统为Centos7。centos7之前不能使用该方式。
第一步,编写jar的启动脚本spark-test-start.sh
#!/bin/sh
source /etc/profile
nohup java -jar /data/sparkdemo/target/spark-test.jar &
echo $! > /var/run/spark-test-service.pid
注意加载环境变量,否则可能出现找不到java命令。并给脚本授予可以执行的权限,chmod +x spark-test-start.sh
第二步,编写jar的停止脚本spark-test-stop.sh,并给脚本授予可执行权限,chmod +x spark-test-stop.sh,脚本内容如下。
#!/bin/sh
PID=$(cat /var/run/spark-test-service.pid)
kill -9 $PID
第三步,编写systemd service服务脚本spark-test-service.service
#!/bin/sh
[Unit]
Description=spark-test-service #自定义服务的描述
After=syslog.target network.target remote-fs.target nss-lookup.target #依赖这些服务先启动后,自定义服务才启动
[Service]
Type=forking #ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
ExecStart=/data/sparkdemo/target/spark-test-start.sh #服务启动运行的脚本
ExecStop=/data/sparkdemo/target/spark-test-stop.sh #服务停止运行的脚本
PrivateTmp=true
[Install]
WantedBy=multi-user.target #定义如何安装这个配置文件,即怎样做到开机启动。
第四步,将spark-test-service.service 复制到/usr/lib/systemd/system/spark-test-service.service 目录中,并赋予可执行权限,chmod +x spark-test-service.service 。至此,服务配置完毕。
第五步,运行服务的常用命令。
启动服务:systemctl start spark-test-service.service
停止服务:systemctl stop spark-test-service.service
重启服务:systemctl restart spark-test-service.service
查看服务:systemctl status spark-test-service.service
加入开机启动:systemctl enable spark-test-service.service
禁止开机启动:systemctl disable spark-test-service.servie
重载服务:systemctl reload spark-test-service.service
对systemd service的配置项说明:可以参考博客https://www.cnblogs.com/yanwanglol/p/10029619.html
网友评论