服务器上运行Groovy脚本:从安装到定时任务的完整步骤

在服务器上运行 Groovy 脚本,核心就三步:装好 JDK 和 Groovy、用 groovy 命令执行脚本、需要定时执行就配 crontab。
下面按这个顺序展开,命令可以直接复制到终端验证。

先确认 JDK 和系统环境

Groovy 运行在 JVM 上,所以服务器必须先有 JDK。
执行以下命令检查:

java -version

如果提示 command not found,先装 JDK。
以 CentOS 7/8 为例:

yum install -y java-11-openjdk-devel

Ubuntu/Debian 则用:

apt update && apt install -y openjdk-11-jdk

安装完再次执行 java -version,能看到版本号即表示 JDK 就绪。
Groovy 3.x 和 4.x 都兼容 JDK 8 到 17,生产环境建议用 JDK 11 或 17,避免过旧版本缺少安全补丁。

安装 Groovy 的两种方式

方式一:SDKMAN 安装(推荐)

SDKMAN 是 JVM 生态常用的版本管理工具,安装和切换 Groovy 版本都方便:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install groovy

安装完成后验证:

groovy -version

输出类似 Groovy Version: 4.0.x JVM: 11 就说明成功了。
SDKMAN 装的 Groovy 默认在当前用户目录下,如果用 root 装的,其他用户可能无法直接调用,这点后面避坑部分会讲。

方式二:手动解压安装

如果服务器不能访问外网或不想用 SDKMAN,可以去 Groovy 官网下载二进制包(注意确认最新版本号),上传到服务器后解压:

mkdir -p /opt/groovy
cd /opt/groovy
tar -xzf apache-groovy-binary-*.zip

然后配置环境变量,编辑 /etc/profile.d/groovy.sh:

export GROOVY_HOME=/opt/groovy/groovy-4.0.0
export PATH=$PATH:$GROOVY_HOME/bin

执行 source /etc/profile.d/groovy.sh 后同样用 groovy -version 验证。
手动安装的好处是路径固定,适合多用户共用和写进系统级定时任务。

运行脚本与依赖管理

写一个最简单的脚本 test.groovy:

println "Hello from Groovy on server"

执行:

groovy test.groovy

如果脚本需要第三方库,用 @Grab 注解可以在首次运行时自动下载依赖:

@Grab('org.apache.commons:commons-lang3:3.12.0')
import org.apache.commons.lang3.StringUtils
println StringUtils.reverse("server")

注意:@Grab 依赖 Maven 中央仓库网络,服务器无法访问外网时会报下载失败。
这种情况建议提前用 groovy -cp 指定本地 jar:

groovy -cp /opt/libs/commons-lang3-3.12.0.jar test.groovy

配进 crontab 定时执行

先确认脚本能正常跑,再写定时任务。
执行 crontab -e,添加一行:

0 3 * * * /usr/bin/groovy /opt/scripts/backup.groovy >> /var/log/groovy-backup.log 2>&1

含义是每天凌晨 3 点执行脚本,输出追加到日志文件。
几个关键点:

  • 命令路径必须用绝对路径,cron 的 PATH 和登录 shell 不一样,直接写 groovy 大概率找不到。用 which groovy 查到真实路径再填。
  • 日志重定向 >> ... 2>&1 要加上,否则脚本报错时你什么都看不到。
  • 如果脚本依赖环境变量(比如 JAVA_HOME),在 crontab 文件顶部补一行 JAVA_HOME=/usr/lib/jvm/java-11-openjdk。

验证方式:把时间改成下一分钟,观察日志文件是否有输出,确认后再改回目标时间。

容易踩的坑

权限问题:用 root 通过 SDKMAN 装的 Groovy,普通用户执行时会提示找不到命令。
解决办法是手动安装到 /opt 并配置系统级环境变量,或者给每个用户单独安装。

脚本第一行 shebang 写法:如果想让脚本直接 ./test.groovy 执行,文件头写 #!
/usr/bin/env groovy
,并 chmod +x test.groovy。
但 cron 里仍然建议写完整命令,不依赖 shebang。

中文乱码:脚本里有中文输出时,确保文件编码是 UTF-8,并在启动参数加 -Dfile.encoding=UTF-8:

groovy -Dfile.encoding=UTF-8 test.groovy

Groovy 版本与 Java 版本不匹配:Groovy 2.x 不支持 JDK 17,如果服务器装的是新版 JDK,务必用 Groovy 3.0 以上版本。

怎么确认一切正常

按以下清单逐项检查:

  1. java -version 和 groovy -version 都能正常输出版本号。
  2. 手动执行 groovy /opt/scripts/xxx.groovy 能跑通,输出符合预期。
  3. crontab 里的命令用绝对路径,日志重定向已配置。
  4. 定时任务触发后,日志文件有对应时间戳的输出记录。
  5. 涉及数据库或 API 调用的脚本,在服务器上先用 curl 或 telnet 确认网络可达。

如果某一步卡住,优先看日志文件的报错信息,再对照上面的避坑部分排查。
Groovy 在服务器上的使用门槛不高,关键是环境变量和定时任务的路径要写对。

分享到:
上一篇
服务器Perl教程:Linux环境安装配置与首个脚本运行
下一篇
在服务器上安装 Kotlin 并运行第一个程序:零基础命令实操
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意