这是之前的一篇:超算中作业管理系统PBS/Slurm/LSF的常用命令。
本篇记录一些常用的自定义 Linux 命令,主要用于快速的作业管理,后续根据需要可能不定期添加更多命令。具体实现步骤是:将以下代码写入用户目录中的 .bashrc 文件,然后通过 source .bashrc 命令使得自定义 Linux 命令生效。
一、使用命令创建 PBS 文件(mkpbs)
创建 mkpbs 命令:
mkpbs() {
# 参数说明:mkpbs [文件名] [作业名] [节点数] [核心/节点] [Python文件]
# 默认值
FILENAME="${1:-task.sh}" # 第一个参数:文件名(默认 task.sh)
JOB_NAME="${2:-task}" # 第二个参数:作业名(默认 task)
NODES="${3:-1}" # 第三个参数:节点数(默认 1)
PPN="${4:-1}" # 第四个参数:每节点核心数(默认 1)
PYTHON_FILE="${5:-a.py}" # 第五个参数:Python 文件(默认 a.py)
# 生成 PBS 脚本
cat << EOF > "$FILENAME"
#!/bin/sh
#PBS -N $JOB_NAME
#PBS -l nodes=$NODES:ppn=$PPN
python $PYTHON_FILE
EOF
echo "已生成文件:$FILENAME"
echo "├─ 作业名:$JOB_NAME"
echo "├─ 节点数:$NODES"
echo "├─ 核心/节点:$PPN"
echo "└─ 执行文件:$PYTHON_FILE"
}
运行命令 mkpbs,在当前目录中可以得到 task.sh 文件:
#!/bin/sh
#PBS -N task
#PBS -l nodes=1:ppn=1
python a.py
运行命令 mkpbs task.pbs new_task 1 4 b.py,在当前目录中可以得到 task.pbs 文件:
#!/bin/sh
#PBS -N new_task
#PBS -l nodes=1:ppn=4
python b.py
说明:.sh 和 .pbs 后缀对 PBS 作业提交无影响。如果需要运行其他程序,可以在脚本文件中进行修改,将经常使用的 PBS 文件内容作为 mkpbs 默认的文件生成内容。
二、使用简化命令查看状态(q/qn/p/s)
创建 q 命令:
alias q="qstat"
生效后可以通过 q 命令来代替 qstat 命令。
创建 qn 命令:
alias qn="qstat -n"
生效后可以通过 qn 命令来代替 qstat -n 命令。
创建 p 命令:
alias p="pbsnodes -l free"
生效后可以通过 p 命令来代替 pbsnodes -l free 命令。
创建 s 命令(Slurm版本):
alias s="squeue"
生效后可以通过 s 命令来代替 squeue 命令。
如果有其他常用命令,也可以通过设置更多的单字母来代替。
三、使用命令进入到某个任务的工作目录(goto)
创建 goto 命令(PBS 版本,由 ydpang 提供):
goto() {
# 获取作业的工作目录
workdir=$(qstat -f "$1" | grep init_work_dir | awk '{print $3}')
# 检查路径是否存在
if [ -d "$workdir" ]; then
cd "$workdir" && echo "已跳转到作业 $1 的工作目录: $workdir"
else
echo "错误:无法定位作业 $1 的工作目录" >&2
return 1
fi
}
创建 goto 命令(Slurm 版本):
goto() {
# 获取作业的工作目录
workdir=$(scontrol show job "$1" | grep WorkDir | awk -F= '{print $2}')
# 检查路径是否存在
if [ -d "$workdir" ]; then
cd "$workdir" && echo "已跳转到作业 $1 的工作目录: $workdir"
else
echo "错误:无法定位作业 $1 的工作目录" >&2
return 1
fi
}
使用命令 goto 123,快速进入到任务号为 123 的工作目录。
由于不同的任务管理系统的任务详情可能有些不一样,所以脚本不一定作用,这时候可以使用 qstat -f 或 scontrol show job,将任务详情和以上脚本扔给 AI,稍微做个修改应该就能使用。
四、使用命令查看所有任务的工作目录(wdir)
创建 wdir 命令(PBS 版本,由 ydpang 提供):
alias wdir="qstat -f | grep init_work_dir | awk '{print $3}'"
使用命令 wdir 查看所有任务的工作目录。
创建 wdir_jhguan 命令(PBS 版本):
alias wdir_jhguan="qstat -u jhguan -f | grep init_work_dir | awk '{print $3}'"
使用命令 wdir_jhguan 查看 jhguan 用户的所有任务的工作目录。
创建 wdir 命令(Slurm 版本):
alias wdir="scontrol show job | grep WorkDir | awk -F= '{print $2}'"
同样,使用命令 wdir 查看所有任务的工作目录。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】