【Linux】Linux使用systemd设置服务开机自动
创始人
2024-09-25 12:50:07
0

在日常的服务器管理中,确保系统重启后关键应用程序能自动启动是非常重要的。不管是计划中的系统维护,还是意外的系统重启,自动启动机制可以让我们的服务尽快恢复,减少停机时间。在这篇文章中,我会分享在 Linux 系统上设置应用程序自动启动的方法,使用 systemd工具。通过这些方法,你可以保证每次系统重启后,应用程序都能自动运行,让你的服务器更加稳定可靠。

实现步骤

1)进入到/etc/systemd/system目录下,

cd /etc/systemd/system

可以看到文件的后缀都是.service的文件,都是系统命令可以直接启动systemctl

2)编写service文件

vi命令 如果没有***.service会创建一个新的

vi /etc/systemd/system/***.service

在文件中写入 

  • nginx
[Unit] Description=A high performance web server and a reverse proxy server #提供了服务的简要描述,说明这是一个高性能的 Web 服务器和反向代理服务器。 Documentation=https://nginx.org/en/docs/ #提供了服务的文档链接,指向 Nginx 官方文档。 After=network.target #指定服务启动的顺序。在网络服务启动后再启动 Nginx。  [Service] Type=forking # 表示服务的启动类型。forking表示该服务将通过派生一个子进程来运行,该子进程将成为主要的服务进程。 PIDFile=/run/nginx.pid # 指定 Nginx 进程的 PID 文件位置。PID 文件用于存储服务的进程 ID。 ExecStartPre=/usr/sbin/nginx -t # 在启动主进程前执行的命令。这里是 nginx -t,用于测试 Nginx 配置文件是否正确。 ExecStart=/usr/sbin/nginx # 启动主进程的命令。这里是 /usr/sbin/nginx,用于启动 Nginx。 ExecReload=/usr/sbin/nginx -s reload # 重新加载配置的命令。这里是 /usr/sbin/nginx -s reload,用于重新加载 Nginx 配置文件而不中断服务。 ExecStop=/bin/kill -s QUIT $MAINPID # 停止主进程的命令。这里是 /bin/kill -s QUIT $MAINPID,用于优雅地停止 Nginx。 PrivateTmp=true # 为服务分配一个独立的临时文件空间,提高安全性。  [Install] WantedBy=multi-user.target # 定义服务的目标。multi-user.target 表示服务将在系统进入多用户模式(通常是常规操作模式)时启动。 
  • tomcat
[Unit] Description=Apache tomcat-web Application Container After=network.target mysql.service redis.service  [Service] Type=forking Environment=JAVA_HOME=/opt/java/jdk1.8.0_221 # 指定 Java 安装的根目录 Environment=JRE_HOME=$JAVA_HOME/jre # 指定 Java 运行时环境(JRE)的根目录 Environment=CATALINA_PID=/opt/server/tomcat-web/temp/tomcatWeb.pid # 指定 Tomcat 的 PID 文件的位置 Environment=CATALINA_HOME=/opt/server/tomcat-web # 指定 Tomcat 安装的根目录 Environment=CATALINA_BASE=/opt/server/tomcat-web # 指定 Tomcat 实例的根目录 ExecStart=/opt/server/tomcat-web/bin/startup.sh # 启动 Tomcat 的命令 ExecStop=/opt/server/tomcat-web/bin/shutdown.sh # 停止 Tomcat 的命令  [Install] WantedBy=multi-user.target # 定义服务的目标。multi-user.target 表示服务将在系统进入多用户模式(通常是常规操作模式)时启动 
  • jar服务
[Unit] Description=Baothink jar Service # 描述该服务的用途,即 jar 消息服务 After=network.target # 指定该服务在网络服务启动后再启动  [Service] Type=simple # 服务类型为简单类型,即服务启动后,主进程不会再派生新的进程 WorkingDirectory=/opt/server/message # 指定服务的工作目录为 /opt/server/message ExecStart=/opt/java/jdk1.8.0_221/bin/java -jar /opt/server/message/***.jar # 服务启动时执行的命令,使用指定的 Java 运行 JAR 文件 Restart=on-failure # 如果服务进程退出状态非 0,则自动重启该服务 StandardOutput=append:/opt/server/message/nohup.out # 将服务的标准输出追加到 /opt/server/message/nohup.out 文件 StandardError=append:/opt/server/message/nohup.out # 将服务的标准错误输出追加到 /opt/server/message/nohup.out 文件  [Install] WantedBy=multi-user.target # 定义该服务的目标运行级别为多用户模式,即该服务将在系统进入多用户模式(通常是常规操作模式)时启动 

等等。。。不同的服务可以参照这个来写

3)设置自启动

重载systemd

systemctl daemon-reload

设置开机自启

sudo systemctl enable <创建的服务名称>

取消开机自启

sudo systemctl disable <创建的服务名称>

启动服务

sudo systemctl start <创建的服务名称>

停止服务

sudo systemctl stop <创建的服务名称> 

重载服务

sudo systemctl reload <创建的服务名称>

查看服务状态

sudo systemctl status <创建的服务名称>

4)重启系统验证

这里 -n 表示跳过重启时的init步骤

reboot -n   

以上就是简单以 systemd 设置开机自启动的流程

相关内容

热门资讯

此事备受玩家关注!新超圣辅助透... 此事备受玩家关注!新超圣辅助透视挂,建德麻将存在有挂,一贯有挂细节运新超圣辅助工具,进入游戏界面。进...
今天上午!熊猫麻将辅助透视挂,... 今天上午!熊猫麻将辅助透视挂,大唐撸麻雀确实有挂,确实有挂透视1、下载好大唐撸麻雀正确养号方法之后点...
突发!小吆三打哈辅助透视挂,悠... 突发!小吆三打哈辅助透视挂,悠闲麻将真的是有挂,原来有挂解密一、小吆三打哈游戏安装教程牌型概率发牌机...
今年以来!樱花梦雨辅助透视挂,... 今年以来!樱花梦雨辅助透视挂,新滕州麻将真的是有挂,好像有挂方法今年以来!樱花梦雨辅助透视挂,新滕州...
备受关注的!边锋老友棋牌辅助透... 备受关注的!边锋老友棋牌辅助透视挂,微友麻将是真的有挂,一直有挂攻略运边锋老友棋牌辅助工具,进入游戏...
明白辅助挂!萍乡滚筒辅助透视挂... 明白辅助挂!萍乡滚筒辅助透视挂,大唐麻将游戏是有挂,一直有挂教程1、操作简单,无需大唐麻将游戏手机版...
据报道!丫丫古诗辅助透视挂,琼... 据报道!丫丫古诗辅助透视挂,琼崖海南麻将真的有挂,其实有挂方法丫丫古诗脚本下载中分为三种模型:丫丫古...
随着!多多休闲辅助透视挂,东游... 随着!多多休闲辅助透视挂,东游麻将是真的有挂,竟然有挂存在随着!多多休闲辅助透视挂,东游麻将是真的有...
方法辅助挂!星禾游戏辅助透视挂... 方法辅助挂!星禾游戏辅助透视挂,太浪乾安麻将是真的有挂,果然发现有挂1、下载好星禾游戏脚本下载之后点...
近日!巅峰互娱辅助透视挂,趣咪... 近日!巅峰互娱辅助透视挂,趣咪麻将确实有挂,真是揭秘有挂;1、这是跨平台的巅峰互娱轻量版有透视,在线...