Sun Grid Engine集群:如何定时暂停运行作业并重启?
集群作业暂停与重启的替代方法
1. 用 qalter 结合定时任务批量设置自动暂停/恢复
可以通过qalter给作业指定自动暂停的时间窗口,配合系统定时任务提前配置,让作业在维护时段自动暂停,时间到后自动恢复运行,无需手动逐个操作:
# 示例:维护时间为2024-05-20 18:00至2024-05-21 02:00,批量设置所有运行/待执行作业 qstat -u $USER | grep -E 'R|Q' | awk '{print $1}' | xargs qalter -acct_hard -suspend_start "2024-05-20T18:00:00" -suspend_end "2024-05-21T02:00:00"
2. 利用集群调度器的维护模式
多数集群调度器(如PBS Pro、Torque)支持内置维护模式,调度器会自动处理作业的暂停与恢复:
- 开启维护模式(需管理员权限或自身有操作权限):
qmgr -c "set server scheduling = off" qmgr -c "set server suspend_jobs = true" - 维护完成后恢复调度:
qmgr -c "set server scheduling = on" qmgr -c "set server suspend_jobs = false"
这种方法适合批量处理所有作业,无需针对单个作业操作,可联系集群管理员协助配置。
3. 编写批量脚本结合 qsig 发送信号
用qsig给运行中作业发送STOP信号暂停,维护后发送CONT信号恢复,再通过crontab定时执行脚本:
- 暂停脚本(
suspend_jobs.sh):#!/bin/bash qstat -u $USER | grep 'R' | awk '{print $1}' | xargs qsig -s STOP - 恢复脚本(
resume_jobs.sh):#!/bin/bash qstat -u $USER | grep 'S' | awk '{print $1}' | xargs qsig -s CONT - 配置crontab定时执行:
# 维护开始前1分钟执行暂停 59 17 20 5 * /path/to/suspend_jobs.sh # 维护结束后立即执行恢复 0 2 21 5 * /path/to/resume_jobs.sh
注意给脚本添加执行权限,且确保qsig命令对目标作业有操作权限。
补充提示
qhold/qrls更适合单个或少量作业,批量处理时上述方法效率更高;- 操作前建议先用1-2个测试作业验证命令效果,避免影响所有任务;
- 不同调度器版本参数可能有差异,可通过
man qalter、man qsig查看本地文档确认。
内容的提问来源于stack exchange,提问作者florence-y
相关产品推荐
相关产品推荐

