前言
- 因为不想每次启动虚拟机都要手动启动一遍这些东西,所以想要设置成开机自启的状态
设置Tomcat开机自启
vi /etc/systemd/system/tomcat.service
[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 -e
@reboot /home/evsoft/everyDayStart.sh
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
修改编码格式
参考
- 设置Docker及容器开机自启
- Linux设置开机自启动脚本
- 设置Docker开机自启
- 配置Tomcat开机自启
- 通过服务启动脚本报错