Linux 服务化的几种方式

nohup

使用 nohub 命令,例如运行一个 java 项目

1
nohub java -jar xxx.jar

tmux

tmux 全程 terminal multiplexer 意思是终端多路复用器。它可以启动一个新的终端进程,可以通过一些命令在当前终端和新终端之间来回切换。

因此,可以在新的终端进程中运行程序,然后使用命令切回到现有的终端即可。

tmux 一些常用的命令:

创建一个新的进程

1
tmux

回到当前终端

1
使用 control + b,再使用 d 即可

回到新的进程中

1
tmux attach

systemd

nohubtmux 的方法,都无法应对程序崩溃的情况,程序崩溃后需要人为重启。将程序执行改为系统服务,即可解决该问题。

此处使用 Unbuntu 的创建服务的方式举例:

创建一个配置文件 my-program.service

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description= a service for java # 服务的描述
After=netwprk.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always # 自动重启
RestartSec=1
User=root
ExecStart=java -jar my-program.jar # 服务启动命令

[Install]
WantedBy=multi-user.target

创建完成后,启动服务即可。

1
systemctl start my-program

服务配置详细信息,可以参考这里

Docker

使用 docker 启动程序,在启动参数上加 -d 参数即可。

1
docker run -d my-program-image

Linux 服务化的几种方式
http://wszzf.top/2022/12/13/Linux 服务化的几种方式/
作者
Greek
发布于
2022年12月13日
许可协议