服务开机启动配置
本文将配置myapp(开发的java应用服务)和文件服务fastdfs服务举例。
一、创建启动脚本
首先需要为自己的应用和服务创建一个批处理文件,手动执行改批处理文件可启动服务。
比如创建了一个startup.sh。
批处理文件中需要注意的是路径要采用绝对路径,如:
#!/bin/bash
AppPath=/home/myapp
JAR_NAME=myapp-0.0.1.jar
LOG_PATH=$AppPath/appLog/app.log
pid=`ps -ef|grep $JAR_NAME |grep -v grep|grep -v kill|awk '{print $2}'`
echo "....................................................................."
if [ ${pid} ]; then
echo "Try to kill progress pid:${pid}..."
kill -9 $pid
echo "pid:${pid} stoped!"
else
echo "${JAR_NAME} is NOT running..."
fi
echo "....................................................................."
sleep 2
echo "....................................................................."
echo "${JAR_NAME} begin start..."
nohup java -jar -Xms16g -Xmx16g -Dloader.path=$AppPath/lib -Dlog4j.configurationFile=$AppPath/config/log4j/log4j2.xml $AppPath/$JAR_NAME >> $LOG_PATH 2>&1 &
echo "${JAR_NAME} started!"
echo "....................................................................."
echo "....................................................................."
echo "........................Here is the app.log.........................."
echo "....................................................................."
tail -f $LOG_PATH
再如:
#!/bin/bash
nohup /home/fastdfs/fileserver server &>/home/fastdfs/log/app.log
都需要用绝对路径。
二、添加到自启动,2种方式
方式一,配置到/etc/rc.local上
这种方式倒是服务器远程直连一直打印输出,无法回到主界面。
1、脚本配置到/etc/rc.local上
vi /etc/rc.local
#export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64
#export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
#export PATH=$PATH:$JAVA_HOME/bin
#app应用
cd /home/app
sudo sh startup.sh & # 以root执行,不然可能会出现权限错误,&表示后台执行
#fastdfs服务
cd /home/fastdfs
sudo sh startup.sh & # 以root执行,不然可能会出现权限错误,&表示后台执行
注意
1、若无法启动,尝试将export的注释解开试下。
2、默认系统的/etc/rc.d/rc.local是没有执行权限的,需要给予开机权限,否则无法开机自启。
#授权
chmod +755 /etc/rc.d/rc.local
方式二,系统服务
1、创建一个服务文件,用于启动脚本。服务文件应该被保存到 /etc/systemd/system 目录中。以 root 用户身份运行以下命令:
touch /etc/systemd/system/myapp.service
vim /etc/systemd/system/myapp.service
touch /etc/systemd/system/fastdfs.service
vim /etc/systemd/system/fastdfs.service
#或者如下创建
nano /etc/systemd/system/myapp.service #ctrl+x 保存,也可用vim
2、在编辑器中添加以下内容到 myapp.service 文件中,fastdfs服务同理:
[Unit]
Description=myapp开机启动脚本
After=network.target
[Service]
ExecStart=/home/myapp/startup.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
确保修改 Description 字段为你自己的脚本描述,并将 ExecStart 字段指向你的脚本的实际路径。
3、保存并关闭文件。然后运行以下命令使 systemd 重新加载服务文件,并启动服务设置开机自启,fastdfs同理。
chmod +755 /home/myapp/startup.sh
systemctl daemon-reload
systemctl start myapp
systemctl enable myapp
现在,你的脚本将在系统启动时自动运行。
请注意,你需要以 root 用户身份运行以上命令。此外,确保你的脚本不会在系统启动时出现任何错误,否则会导致系统启动失败。