Java 程序配置系统开机自启的完整步骤
·
Java 程序配置系统开机自启的完整步骤
1.使用系统YUM源安装JAVA服务
sudo dnf install java -y
2.编写一个简单的 Java 程序
首先,创建一个名为 TimestampPrinter.java的 Java 文件。这个程序会每隔 5 秒输出当前时间戳,方便观察服务是否在运行。
public class TimestampPrinter {
public static void main(String[] args) {
try {
System.out.println("【时间戳服务】启动成功!");
System.out.println("开始输出时间戳,按 Ctrl+C 停止...");
int count = 0;
while (true) {
String timestamp = new java.util.Date().toString();
System.out.println("[" + (++count) + "] 当前时间: " + timestamp);
Thread.sleep(5000);
}
} catch (InterruptedException e) {
System.out.println("服务被中断");
} catch (Exception e) {
System.err.println("发生错误: " + e.getMessage());
} finally {
System.out.println("服务已停止");
}
}
}
保存文件(例如保存到 /root/testjava/TimestampPrinter.java)。
3. 编译 Java 程序并打包
1.编译:使用 javac编译 Java 文件
javac TimestampPrinter.java
这会生成 TimestampPrinter.class文件。
2.打包为可执行 JAR(推荐,便于管理)
jar cfe TimestampPrinter.jar TimestampPrinter TimestampPrinter.class
此命令会生成 TimestampPrinter.jar,其中 e参数指定了主类。
3.测试运行
[root@localhost testjava]# ls
TimestampPrinter.class TimestampPrinter.jar TimestampPrinter.java
[root@localhost testjava]# java -jar TimestampPrinter.jar
【时间戳服务】启动成功!
开始输出时间戳,按 Ctrl+C 停止...
[1] 当前时间: Mon Oct 20 11:35:40 CST 2025
[2] 当前时间: Mon Oct 20 11:35:45 CST 2025
[3] 当前时间: Mon Oct 20 11:35:50 CST 2025
如果控制台开始每隔 5 秒打印时间戳,说明程序正常。按 Ctrl + C停止测试。
4. 创建 Systemd 服务文件(实现开机自启)
这是实现开机自启的核心步骤。我们将创建一个 Systemd 服务单元文件来管理 Java 程序。
1.创建服务文件
sudo vi /etc/systemd/system/timerstamp-printer.service
[Unit]
Description=时间戳打印服务
After=network.target
[Service]
Type=simple
# 使用您实际的Java路径
ExecStart=/usr/bin/java -jar /root/testjava/TimestampPrinter.jar
# 指定工作目录
WorkingDirectory=/root/testjava
User=root
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
关键参数说明: Type=simple: 适用于直接在前台运行的程序(如我们的 Java 程序)。
Restart=on-failure: 服务异常退出时自动重启。 WantedBy=multi-user.target:
指定服务在系统多用户模式下启动。
2.重新加载并启动服务
sudo systemctl daemon-reload
sudo systemctl start timerstamp-printer.service
3.检查服务状态:
[root@localhost bin]# systemctl status timerstamp-printer.service
● timerstamp-printer.service - 时间戳打印服务
Loaded: loaded (/etc/systemd/system/timerstamp-printer.service; disabled; preset: disabled)
Active: active (running) since Mon 2025-10-20 11:24:20 CST; 12s ago
Invocation: d8fb852700e44764aa3f3d88781e3b72
Main PID: 526348 (java)
Tasks: 18 (limit: 100232)
Memory: 32.7M (peak: 36.1M)
CPU: 349ms
CGroup: /system.slice/timerstamp-printer.service
└─526348 /usr/bin/java -jar /root/testjava/TimestampPrinter.jar
10月 20 11:24:20 localhost.localdomain systemd[1]: Started timerstamp-printer.service - 时间戳打印服务.
10月 20 11:24:20 localhost.localdomain java[526348]: 【时间戳服务】启动成功!
10月 20 11:24:20 localhost.localdomain java[526348]: 开始输出时间戳,按 Ctrl+C 停止...
10月 20 11:24:20 localhost.localdomain java[526348]: [1] 当前时间: Mon Oct 20 11:24:20 CST 2025
10月 20 11:24:25 localhost.localdomain java[526348]: [2] 当前时间: Mon Oct 20 11:24:25 CST 2025
10月 20 11:24:30 localhost.localdomain java[526348]: [3] 当前时间: Mon Oct 20 11:24:30 CST 2025
4.设置开机自启
[root@localhost ~]# sudo systemctl enable timerstamp-printer.service
Created symlink '/etc/systemd/system/multi-user.target.wants/timerstamp-printer.service' → '/etc/systemd/system/timerstamp-printer.service'.
更多推荐



所有评论(0)