在 CentOS 上定时运行 Java 程序,常见做法有两种:cron(最常用) 和 systemd timer。下面以 cron 为主讲,最实用。
先确认 Java 已安装:
java -version
如果没有:
yum install java-1.8.0-openjdk -y
假设你的 Java 程序是:
/opt/app/myapp.jar
创建脚本:
vi /opt/app/run.sh
内容示例:
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
cd /opt/app
java -jar myapp.jar >> /opt/app/log.out 2>&1
赋权:
chmod +x /opt/app/run.sh
crontab -e
示例(每天凌晨 2 点执行):
0 2 * * * /opt/app/run.sh
常见示例:
# 每 5 分钟
*/5 * * * * /opt/app/run.sh
# 每天 23:30
30 23 * * * /opt/app/run.sh
# 每周一 1 点
0 1 * * 1 /opt/app/run.sh
cron 不会加载你的环境变量,所以:
JAVA_HOME否则你看不到报错:
>> /opt/app/log.out 2>&1
tail -f /var/log/cron
如果你是 CentOS 7+,也可以用 systemd:
myapp.servicemyapp.timer适合长期运行 / 精确控制,比 cron 更现代。
❌ java: command not found → 没设 JAVA_HOME
❌ 手动能跑,cron 不行 → 环境变量问题
❌ 没日志 → 没重定向输出
如果你愿意,可以告诉我:
我可以直接帮你写完整配置。