前言
- 因为不想每次启动虚拟机都要手动启动一遍这些东西,所以想要设置成开机自启的状态
设置Tomcat开机自启
- 创建service文件
shell
vi /etc/systemd/system/tomcat.service
- 添加如下内容,注意修改启动脚本和关闭脚本的地址
shell
[Unit]
Description=Tomcat9068
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=oneshot
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- 进入目录:
cd /etc/systemd/system/
- 设置开机自启:
systemctl enable tomcat
- 重新载入配置文件,使设置生效:
systemctl daemon-reload
- 重新启动看看效果:
reboot
(如果不能随便重启先别急哈哈)
设置Docker开机自启
- 查看已启动的服务:
systemctl list-units --type=service
- 若没有发现docker.service服务,则看这篇:https://blog.csdn.net/qq_44648936/article/details/131737156
- 查看服务是否开机自启:
systemctl list-unit-files | grep enable
- 设置开机自启:
systemctl enable docker.service
设置Docker容器开机自启
- Docker容器启动时添加:
--restart=always
- 添加位置取决于你是通过命令启动还是Dockerfile或其他脚本
- 若是已经启动的容器,通过updata进行更新:
docker update --restart=always 容器id或name
使用脚本开机自启
- 方法一:使用crontab启动脚本
shell
#编辑定时任务
crontab -e
#添加如下内容,@reboot表示开机时执行
@reboot /home/evsoft/everyDayStart.sh
- 方法二:使用systemd服务
shell
#添加service文件
vi /etc/systemd/system/everyDayStart.service
#添加如下内容
[Unit]
Description=everyDayStart
After=default.target
[Service]
ExecStart=/home/evsoft/everyDayStart.sh
[Install]
WantedBy=default.target
#重新载入配置文件,使设置生效:
systemctl daemon-reload
#设置开机自启:
systemctl enable everyDayStart
- 此时
systemctl start everyDayStart.service
可能会报错
- 解决方案:
- 在自定义脚本everyStartDay.sh的开头加上
#!/bin/sh
- 或缺少执行权限
chmod +x everyStartDay.sh
- 或编码格式错误,通过
:set ff
查看编码格式,并通过:set ff=unix
修改编码格式