Deepin 设置开机执行某sh文件

背景

deepin系统上部署了Geoserver,但是每次开机后都得手动过去起,麻烦,故想着找个办法解决下

过程

  1. /etc/systemd/system目录下新建一个 geoserver.service,就是【自定义名称】.service的文件,后缀.service似乎不可变,名称随意,我这叫geoserver.service.
touch geoserver.service
  1. 编辑该文件
sudo vim geoserver.service
  1. 按照格式填充内容
[Unit]
Description=geoserver start up on boot # 该内容是对该service的一个描述
After=network.target # 在网络服务启动后启动该服务 主要用于控制服务的启动顺序,确保在指定服务或目标启动完成后再启动当前服务
[Service]
Type=simple # 默认类型,还有其他的参数,大家可以百度
Environment="JAVA_HOME=/home/service/jdk-11.0.22" # JDK给设置乱了,手动指定jdk,而且Geoserver官方文档里写了支持17,但是起来之后地图报错500
ExecStart="/home/service/project/geoserver-2.25/bin/startup.sh" # 写待执行的脚本
WorkingDirectory="/home/service/project/geoserver-2.25/bin" # 这里好像必须指定到bin,我也不知道为啥,牵扯到环境配置问题,就是GEOSERVER_HOME的配置,我没有配置它,如果在 Environment 里跟在 JAVA_HOME 后面写应该就不用指定该参数了
User=service # 运行程序的用户名
Group=service # 运行程序的用户组,一般来说,Linux 在创建用户的时候会创建一个和用户名相同的用户组,所以这里和用户名写一致就可以了
# Restart=on-failure # 失败后重启,默认重启5次,再失败就不重启了,我这里没有用到该参数
# RemainAfterExit=true # 退出程序后提醒? 这个参数我也没有用到
[Install]
WantedBy=multi-user.target # 主要用于定义服务的安装目标,指定服务在哪些目标下启用和启动。multi-user.target 似乎是在可以通过命令行进行登录时才运行

其他

  1. 手动启动geoserver的startup.sh时都是通过 windows10 的 powershell,通过ssh操作的:
cd xxx/xxx/geoserver/bin
sh startup.sh & # 后面加个 & 可以后台运行,就是关了Terminal程序不会停止
disown # 这个命令就是该terminal 不在拥有该进程,这个时候关了terminal就不影响程序运行了
  1. 按道理说,Debian系的linux都可以这么操作,Redhat就不知道了

__EOF__

本文作者echo_lovely
本文链接https://www.cnblogs.com/echo-lovely/p/18251961.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   echo_lovely  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示