Condor 安装
Linux(Ubuntu 22.04/20.04 为例,CentOS 同理)
① 添加官方 stable 仓库(版本 10.x,支持 x86_64 与 arm64)
# 1. 导入签名密钥
wget -qO - https://research.cs.wisc.edu/htcondor/repo/keys/HTCondor-10.x-Key \
| sudo apt-key add -# 2. 写源(Ubuntu 22.04 代号 jammy;20.04 把 jammy 换成 focal)
echo "deb [arch=amd64] https://research.cs.wisc.edu/htcondor/repo/ubuntu/10.x jammy main" \
| sudo tee /etc/apt/sources.list.d/htcondor.listsudo apt-get update
② 安装(三选一)
只想本机体验 →
minihtcondor
包(自动配成单节点,1 分钟跑起来)sudo apt-get install minihtcondor
要加入已有 Pool →
htcondor
主包(装完手动指定 Central Manager)sudo apt-get install htcondor
全部组件一次装齐(含调度、执行、提交)
sudo apt-get install htcondor-all
③ 首次启动(任意方式装完都会注册 systemd 服务)
sudo systemctl start condor
sudo systemctl enable condor
④ 验证
condor_master –v # 看守护进程是否拉起
condor_status # 应至少看到本机 slot@xxx
condor_q # 作业队列,空集群显示 0 jobs
若 condor_status
报 “Can’t locate CM”,说明还没指定中央管理器,把 /etc/condor/config.d/99-local.conf
里加一行
CONDOR_HOST = <中央管理节点IP或hostname>
然后 systemctl restart condor
即可 。
二、报错解决
日志 + 报错逐条拆解
09/14/25 07:30:40
Can't open "/var/log/condor/MasterLog"
→ 目录或权限不存在,condor 主守护进程(master)连日志都写不了,于是直接退出,后面的"can't find collector" / "condor_schedd is not running"
都是“连带”症状:master 没起来 → 任何子守护进程(schedd、collector、startd)都不会被拉起来 → 客户端自然找不到 collector 和调度器。
一句话:先把日志目录和权限修好,再重新启动 condor,90 % 的报错会自己消失。
一步一步解决(root 身份执行)
① 建目录 + 给权限
mkdir -p /var/log/condor /var/lock/condor /var/run/condor
chown -R condor:condor /var/log/condor /var/lock/condor /var/run/condor
chmod 755 /var/log/condor
② 确认 condor 用户存在(minihtcondor 包会建,手动 rpm 安装可能漏)
id condor
若返回 “no such user”,则
useradd -r -s /sbin/nologin -d /var/lib/condor -c "HTCondor Daemon" condor
再重新执行第 ① 步赋权。
③ 启动服务
systemctl restart condor
systemctl status condor # 应显示 active (running)
如果仍然 failed,马上看刚生成的日志
tail -n 50 /var/log/condor/MasterLog
常见后续错:
“Can't bind to 9618” → 端口被占用或 SELinux/AppArmor 拦了;
“ERROR: Unable to send command to collector” → 主机名解析失败,把 /etc/hosts 写全或定义
CONDOR_HOST = <IP>
。
④ 验证
condor_status # 应该至少列出本机 slot@hostname
condor_q # 空队列,不再报 “can't find collector”
能正常输出即代表集群已可接受作业。
三、报错解决
客户端(condor_q / condor_status)找不到 collector → 也就找不到 schedd;
根因只有两个:
守护进程根本没跑;
跑起来了但网络 / 配置让客户端不知道它在哪。
按下面 4 步逐项排查,99 % 的 “can’t find collector” 都能定位。
确认本机守护进程已启动
systemctl status condor # 应是 active (running)
ps -ef | grep -E 'condor_(master|collector|schedd)' | grep -v grep
若没进程 → 先解决启动问题(见前一回复:日志目录权限、端口、SELinux)。
若进程都在 → 继续第 2 步。
看 collector 究竟监听在哪
condor_master -v | grep "Using config"
grep -E '^COLLECTOR_HOST|^CONDOR_HOST' /etc/condor/config.d/*.conf /etc/condor/condor_config
典型输出
COLLECTOR_HOST = $(CONDOR_HOST):9618
CONDOR_HOST = pc01.example.com
四、报错解决
✅
condor_master
已启动(systemctl 显示 active)❌
condor_status
/condor_q
仍然报 "can't find collector"
这说明:守护进程虽然起来了,但 collector 没有监听 / 客户端找不到它。
按下面 4 步一次性排查,10 分钟内就能定位。
① 先看 collector 到底起没起
ps -ef | grep -E 'condor_(collector|schedd)' | grep -v grep
应该看到 两条进程:
condor_collector
和condor_schedd
如果只看到
master
和shared_port
→ collector 根本没被拉起来,继续第 ② 步。
② 检查“个人版”配置是否漏配
HTCondor 安装后默认是 “Central Manager + Submit + Execute” 三合一
但配置文件里必须告诉它 “你自己就是 CM”,否则 collector 不启动。
快速修复(单节点个人版)
sudo tee /etc/condor/config.d/99-local.conf <<'EOF'
# 我就是中央管理器
CONDOR_HOST = $(FULL_HOSTNAME)
# 本机同时承担提交、执行、收集角色
DAEMON_LIST = MASTER COLLECTOR NEGOTIATOR SCHEDD STARTD
EOF
然后重启:
sudo systemctl restart condor
③ 确认端口已监听
ss -lntp | grep 9618
应显示
0.0.0.0:9618
由condor_collector
监听如果空白 → 说明 collector 仍没起来,再看
/var/log/condor/CollectorLog
报什么错(权限、端口冲突、IPv6 问题等)。
④ 客户端显式指定地址再试
condor_status -pool localhost:9618
condor_q -name localhost
如果能返回结果 → 只是 默认池地址没配好,在
~/.bashrc
加一行export CONDOR_CONFIG_REQUIREMENTS='CollectorHost=="localhost"'
或者永久写进配置:
COLLECTOR_HOST = localhost
一键诊断脚本(可复制直接跑)
#!/bin/bash
echo "=== 1. 进程 ==="
pgrep -fa condor_
echo
echo "=== 2. 端口 ==="
ss -lntp | grep 9618
echo
echo "=== 3. 主机名解析 ==="
ping -c1 "$(hostname -f)" &>/dev/null && echo "OK" || echo "FAIL"
echo
echo "=== 4. 直接指定池 ==="
condor_status -pool localhost:9618
四项都 OK 就不会再出现 “can’t find collector”。
五、写入配置
把 COLLECTOR_HOST = localhost
写进永久配置只需要两步:
✅ 1. 新建/编辑本地配置文件
sudo nano /etc/condor/config.d/99-local.conf
(用 vim
或 gedit
也行)
在文件里加一行:
COLLECTOR_HOST = localhost
保存退出:
nano:
Ctrl+O
→ 回车 →Ctrl+X
✅ 2. 让配置生效
sudo systemctl restart condor
✅ 3. 验证(以后不用再 -pool
)
condor_status
condor_q
只要能看到 slot 或空队列,就说明永久生效了。