前言
如果你的程序想要在centos7能够开机自启,一个方法是按照常规方法,将自己的服务添加到/etc/rc.d/rc.local
中,但本人测试过这几个方法,似乎没有效果,想到一些程序如mysql
、httpd
等都可以通过systemctl enable ****.service
的方法达到自启动的目的,所以经过几番测试,写下本文以作日后资料查阅。
方法
- 我们有几个java程序需要启动,我们可以先编辑一个
sh
脚本:
>>> vim start.sh
# 添加如下内容
#!/bin/sh
nohup java -jar /root/Statistical_Analysis/Type1/Hotwords.jar &
nohup java -jar /root/Statistical_Analysis/Type1/Statistics.jar &
nohup java -jar /root/Statistical_Analysis/Type1/Trace_similarity.jar &
echo 'start SA success'
退出保存后给此文件运行权限chmod u+x start.sh
,然后我们开始自定义程序的系统服务了
- 进入目录
/usr/lib/systemd/system
,然后新建一个service
文件
>>> vim statistical_analysis.service
# 添加如下内容
[Unit]
Description=statistical_analysis
[Service]
Type=forking
ExecStart=/root/Statistical_Analysis/Type1/start.sh # 运行此脚本
WorkingDirectory=/root/Statistical_Analysis/Type1 # 指定工作目录
[Install]
WantedBy=multi-user.target
注意参数WorkingDirectory
,此参数非常有必要配置的,最好配置为你程序执行所在的路径,不然如果你的程序中有读写文件的操作时,可能会因为工作目录不对,给你报错了,这是我踩的坑,所以大家在配置过程中也需要注意这一点。这里可以看看此文件中各个参数的含义
- 接着,我们需要给此文件执行权限
>>> chmod 754 statistical_analysis.service
然后因为新增了此service,需要通知systemd重载此配置文件
>>> systemctl daemon-reload
- 允许服务开机自启、启动此服务和查看服务状态
>>> systemctl enable statistical_analysis.service
>>> systemctl start statistical_analysis.service
>>> systemctl status statistical_analysis.service