老爹
老爹
发布于 2026-02-26 / 14 阅读
0
0

自建service

创建文件 vi /etc/systemd/system/timer.service

[Unit]
# 描述
Description=定时任务

# 表示该服务在网络和数据库启动完成后再启动
After=network.target mysqld.service

[Service]
#simple	主进程直接运行(不 fork)	systemd 认为 ExecStart 启动的进程就是服务本身。
#forking	传统守护进程(启动时 fork 子进程,父进程退出)	systemd 会等待父进程退出,然后认为服务已启动,并跟踪子进程。需配合 PIDFile= 使用更可靠。
#oneshot	一次性任务(执行完就结束)	常用于初始化脚本。必须设置 RemainAfterExit=yes 才能保持“active”状态。
#notify	支持 sd_notify 的服务(如新版本的 Redis、Nginx 等)	服务启动后会通过 sd_notify("READY=1") 通知 systemd “我准备好了”。最精准的启动完成信号。
#dbus	通过 D-Bus 提供服务	当服务在 D-Bus 上注册指定名称后,systemd 才认为启动成功。
#idle	延迟启动(很少用)	等待所有任务完成后再执行 ExecStart,主要用于避免控制台输出混乱。
Type=simple

# 以哪个用户身份运行 最好别用root
User=root

# 启动前切换到的工作目录
WorkingDirectory=/home/pro/timer/

# 实际启动命令:执行你的 shell 脚本
ExecStart=/usr/local/jdk1.8.0_361/bin/java -jar timer.jar

# 如果进程异常退出(非 0 退出码),自动重启
Restart=on-failure

# 重启前等待 10 秒,避免频繁崩溃导致系统负载过高
RestartSec=10

# 标准输出和错误输出都交给journal记录,null不启用
StandardOutput=null
StandardError=null

[Install]
# 表示当系统进入多用户模式(即正常开机)时,自动启动此服务
WantedBy=multi-user.target

如果文件写错了,修改后记得重载配置

systemctl daemon-reload


评论