nohup
使用 nohub 命令,例如运行一个 java 项目
nohub java -jar xxx.jartmux
tmux 全程 terminal multiplexer 意思是终端多路复用器。它可以启动一个新的终端进程,可以通过一些命令在当前终端和新终端之间来回切换。
因此,可以在新的终端进程中运行程序,然后使用命令切回到现有的终端即可。
tmux 一些常用的命令:
创建一个新的进程
tmux回到当前终端
使用 control + b,再使用 d 即可回到新的进程中
tmux attachsystemd
nohub 和 tmux 的方法,都无法应对程序崩溃的情况,程序崩溃后需要人为重启。将程序执行改为系统服务,即可解决该问题。
此处使用 Unbuntu 的创建服务的方式举例:
创建一个配置文件 my-program.service
[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创建完成后,启动服务即可。
systemctl start my-program服务配置详细信息,可以参考这里
Docker
使用 docker 启动程序,在启动参数上加 -d 参数即可。
docker run -d my-program-image