在 Linux 系统中管理 Java 服务进程可以通过以下几种方法:
Systemd 是一个系统和服务管理器,可以让你创建和管理服务单元文件来控制 Java 服务进程。首先,创建一个名为 java-service.service
的 Systemd 服务单元文件:
sudo nano /etc/systemd/system/java-service.service
将以下内容粘贴到文件中,然后替换 <your-java-binary>
为你的 Java 二进制文件的路径,例如 /usr/bin/java
,并将 <your-jar-file>
替换为你的 JAR 文件路径:
[Unit]
Description=Java Service
After=network.target
[Service]
User=<your-username>
WorkingDirectory=/path/to/your/app
ExecStart=<your-java-binary> -jar <your-jar-file>
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
保存并退出编辑器。然后,重新加载 Systemd 配置:
sudo systemctl daemon-reload
启动 Java 服务:
sudo systemctl start java-service.service
设置开机自启:
sudo systemctl enable java-service.service
查看服务状态:
sudo systemctl status java-service.service
停止服务:
sudo systemctl stop java-service.service
Supervisor 是一个进程管理工具,可以让你监控和管理进程。首先,安装 Supervisor:
sudo apt-get install supervisor
创建一个名为 java_service
的 Supervisor 配置文件:
sudo nano /etc/supervisor/conf.d/java_service.conf
将以下内容粘贴到文件中,然后替换 <your-java-binary>
为你的 Java 二进制文件的路径,例如 /usr/bin/java
,并将 <your-jar-file>
替换为你的 JAR 文件路径:
[program:java_service]
command=<your-java-binary> -jar <your-jar-file>
directory=/path/to/your/app
user=<your-username>
autostart=true
autorestart=true
stderr_logfile=/var/log/java_service.err.log
stdout_logfile=/var/log/java_service.out.log
保存并退出编辑器。然后,重新加载 Supervisor 配置:
sudo supervisorctl reread
sudo supervisorctl update
启动 Java 服务:
sudo supervisorctl start java_service
查看服务状态:
sudo supervisorctl status java_service
停止服务:
sudo supervisorctl stop java_service
nohup 命令可以让你在后台运行进程,即使你关闭终端窗口。要使用 nohup 运行 Java 服务进程,请在终端中输入以下命令:
nohup <your-java-binary> -jar <your-jar-file> > /dev/null 2>&1 &
这将把输出重定向到 /dev/null
,并将程序放入后台运行。你可以通过 ps
命令查看进程状态:
ps aux | grep java
要停止进程,你需要找到其进程 ID(PID),然后使用 kill
命令终止它:
kill <pid>