在 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>