1. 常用命令无法使用
用户编辑~/.bashrc时,PATH环境变量相关的部分编写错误,会导致出现下面这种常用命令无法使用的情况。
1 $ cat test.txt
2 bash: cat: command not found...
解决方法:使用vim的绝对路径来编辑~/.bashrc,将写错的部分改正,重新开个登录窗口即可。
$ /bin/vim ~/.bashrc
2. module av显示的软件很少
使用系统module之前,需要先设置相关环境变量,否则会出现module av显示的软件很少,或module load无法载入某个软件的情况。module环境配置见 Module使用
3. 节点/tmp空间不够
部分节点可能会因为作业在/tmp目录下写入的文件过多,导致系统盘耗尽,进而导致作业无法往/tmp目录内写入临时文件,出现类似如下的报错。
cannot create temp file for here-document: No space left on device
使用lsload命令查看该节点的资源信息,可看到tmp剩余空间为0,请联系管理员,清理/tmp目录。
1 $ lsload c01n01
2 HOST_NAME status r15s r1m r15m ut pg ls it tmp swp mem
3 c01n01 ok 8.0 7.8 7.9 22% 0.0 0 4226 0 3.7G 241G
可以有以下两种方式重新投递作业:
处理方式1:
作业本身不往/tmp目录下写入很多数据,是其它作业把/tmp目录写满了。可以使用lsf相关选项,重新投递出错的作业到其它/tmp目录有空闲的节点。
-R "select[tmp>10G]"
处理方式2:
作业本身需要往/tmp内写入大量的数据,建议使用TMP 环境变量重新设置临时目录到本地。有多个类似作业时,建议每个作业一个目录,避免文件重名程序出错。bs_seeker repex_tarean paragraph等都会往/tmp目录下写入大量的数据,使用时注意设置TMP环境变量。
1 #BSUB -J program
2 #BSUB -n 10
3 #BSUB -R span[hosts=1]
4 #BSUB -o %J.out
5 #BSUB -e %J.err
6 #BSUB -q normal
7 tmpn=`mktemp -u programname_XXXXX`
8 tmpd="${HOME}/tmp/${tmpn}"
9 mkdir -p ${tmpd}
10 echo ${tmpd}
11 export TMP=${tmpd}
12 # 运行程序
13 program...
14 # 清理临时文件
15 rm -r ${tmpd}
4. 存储超过配额
写入数据或程序运行时出现 Disk quota exceeded的报错,说明存储空间或文件数超过配额。diskquota 查看存储使用情况,清理账号下的数据至配额之下方可正常写入数据。建议对所有数据扫描一遍,压缩删除不必要的数据,参考 文件扫描。如果需要增加存储配额,可按这个步骤处理申请增加配额。
1 $ diskquota
2 Filesystem type blocks quota limit in_doubt grace | files quota limit in_doubt grace Remarks
3 public USR 43.74T 20T 20T 0 7 days | 9890452 17500000 17500000 0 none
4 $ cp data/NT/taxdb.btd.gz .
5 cp: error writing ‘./taxdb.btd.gz’: Disk quota exceeded
6 cp: failed to extend ‘./taxdb.btd.gz’: Disk quota exceeded
5. github 下载缓慢
校园网下载github上的软件不稳定,经常会出现下载缓慢或无法链接的情况,可以使用github镜像,参考 github
6. 登录节点使用conda安装软件等待时间过长
conda安装软件过程中,会运行python程序,如果此时间过长,会被监控程序判定为在登录节点跑作业进而将相关python程序杀掉,导致conda安装过程一直处于等待状态,建议进入交互节点后再使用conda安装程序。R包安装过程也有类似问题,建议在交互节点安装R包。
此外conda安装软件时,刚开始的resolving时间可能会很长,建议使用mamba替代conda,见 mamba使用。
7. 新版conda命令行提示符异常
conda升级到22.9.0之后,激活conda环境出现如下的命令行提示符显示异常
1 (base)
2 (base)
解决办法
conda init bash
重新登录账号,即可恢复正常
(base) [username@login01 ~]$
8. 'GLIBC_x.xx' not found
软件运行时出现类似version 'GLIBC_2.29' not found 的报错,一般是系统上glibc版本比较低导致的,解决方法见集群文档 glibc。
9. 'GLIBCXX_x.x.x' not found
部分应用程序使用高版本GCC编译,直接在集群上运行时,由于集群默认GCC版本较低(gcc 4.8.5),会出现类似如下的'GLIBCXX_x.x.x' not found报错。
1 $ ./program
2 program: /lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found(required by program)
此时可以加载对应高版本的GCC,然后再运行程序,如module load GCC/5.4.0-2.26。
常用GCC版本与GLIBCXX的对应版本如下所示,完整列表见:ABI Policy and Guidelines
1 GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7
2 GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7
3 GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8
4 GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9
5 GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10
6 GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11
7 GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11
8 GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11
9 GCC 9.1.0: GLIBCXX_3.4.26, CXXABI_1.3.12
10 GCC 9.2.0: GLIBCXX_3.4.27, CXXABI_1.3.12
11 GCC 9.3.0: GLIBCXX_3.4.28, CXXABI_1.3.12
12 GCC 10.1.0: GLIBCXX_3.4.28, CXXABI_1.3.12
13 GCC 11.1.0: GLIBCXX_3.4.29, CXXABI_1.3.13
14 GCC 12.1.0: GLIBCXX_3.4.30, CXXABI_1.3.13
15 GCC 13.1.0: GLIBCXX_3.4.31, CXXABI_1.3.14
10. 常用库缺失解决
在安装或运行软件过程中经常出现类似 xxxx.so.1.0: cannot open shared object file: No such file or directory的库缺失报错,一般加载或安装对应的库文件即可。
缺失库 | 需要加载的库 |
libbz2.so.1.0 | module load bzip2/1.0.6 |
libgsl.so.23 | module load GSL/2.4 |
liblzma.so.0 | module load XZ/5.2.4 |
libgeos_c.so.1 | module load GEOS/3.7.1 |
libicuuc.so.42 | module load icu/42 |
libzstd.so.1 | module load zstd/1.5.0 |
libjemalloc.so.2 | module load jemalloc/5.2.1 |
libpng16.so.16 | module load libpng/1.6.24 |
ltld.so | module load libtool/2.4.6 |
libpcre2-8.so.0 | module load PCRE/10.00 |
libglpk.so.40 | module load glpk/5.0 |
11. core dumped
造成"core dumped"错误的原因可能有多种,包括:
程序Bug:程序中存在错误、内存泄漏或未处理的异常,导致程序崩溃。在这种情况下,需要检查程序代码并修复错误,或向开发人员求助;
输入数据有问题。检查输入数据是否符合要求,或更换其他数据尝试;(如bsmap,参考基因组序列需要多行的格式,单行就出现core dump报错)
节点内存不够:程序使用的内存超过了系统可用的内存导致出错。可以更换内存更大的节点尝试;
12. too many open files
too many open files 报错的原因一般是某个进程打开了超过系统限制的文件数量,默认值为1024,非root用户可以使用命令设置到4096。
在本集群运行此作业如出现此报错,可在lsf脚本中添加 ulimit -n 4096 命令就可以临时将本账号的限制最大提升至4096,大于此值会出现权限不够的报错;如果还出现此报错,建议使用smp队列,smp队列中此值为32768;如果32768也不够,请联系管理员处理。
13. 软件离线运行
基于安全考虑,计算节点未联网,导致部分在运行过程中需要联网的软件无法正常运行,暂无统一解决办法,各软件离线运行方案如下。遇到类似问题可联系管理员协助处理。
busco离线运行
interproscan离线运行
FunGAP离线运行
IGV离线运行
部分WDL流程会在运行过程中下载singularity镜像,计算节点未联网会导致流程运行失败。解决办法为,在登录节点下载好镜像,然后替换WDL脚本中的镜像URL。如 atac-seq-pipeline 的WDL脚本中有2个地方用到了 https://encode-pipeline-singularity-image.s3.us-west-2.amazonaws.com/atac-seq-pipeline_v2.2.2.sif,首先下载这个镜像,然后将这个URL替换成 DIR/atac-seq-pipeline_v2.2.2.sif 即可
nf-core 流程离线运行,见 nf-core
nextflow 脚本离线运行需配置 export NXF_OFFLINE='true'