终端
终端提供了交互式计算环境,您可以在这里进行计算任务的提交、监控和管理。
点击 终端,进入终端页面与登录节点交互。
常用 Linux 命令
基础命令
cd
:切换目录ls
:查看目录内容pwd
:查看当前目录mkdir
:创建目录rm
:删除文件或目录cp
:复制文件或目录mv
:移动文件或目录rmdir
:删除空目录cat
:查看文件内容head
:查看文件前几行more
:分页查看文件内容echo
:输出字符串wc
:统计行数、字数、字节数tail
:查看文件后几行top
:查看系统资源使用情况touch
:创建空文件clear
:清屏history
:查看历史命令exit
:退出终端vi
:文本编辑器- vi 基础命令
i
:进入编辑模式esc
:退出编辑模式:wq
:保存并退出:q!
:不保存并退出
- vi 进阶命令
a
:在当前光标后插入o
:在当前光标下插入O
:在当前光标上一行插入A
:在当前行末尾插入I
:在当前行首部插入dd
:删除当前行yy
:复制当前行p
:粘贴u
:撤销ctrl + r
:恢复撤销gg
:跳到文件首行G
:跳到文件末尾/
:搜索?
:反向搜索n
:搜索下一个N
:搜索上一个:%s/old/new/g
:替换字符串:set number
:显示行号:set nonumber
:隐藏行号:set hlsearch
:高亮搜索结果:set nohlsearch
:取消高亮搜索结果
- vi 基础命令
进阶命令
chmod
:修改文件权限chown
:修改文件所有者chgrp
:修改文件所属组sed
:流编辑器awk
:文本处理工具grep
:搜索字符串find
:查找文件sort
:排序uniq
:去重cut
:按列切分
Slurm 命令
sbatch
:提交批处理作业squeue
:排队作业状态scancel
:取消作业sinfo
:查看集群状态srun
:提交作业scontrol
:查看和修改作业参数sreport
:查看作业报告sacct
:已完成作业记录
sinfo 查看集群状态
sinfo -N
:查看节点级信息
sinfo -N --states=idle
:查看空闲节点
sinfo --partition=AMD_9654
:查看队列信息
sinfo --help
:查看所有选项
节点状态包括:
- alloc(节点在用)
- drain(节点故障维护中)
- down(节点下线)
- idle(节点可用)
- mix(节点部分占用,但仍有剩余资源)
squeue 查看作业信息
squeue -j jobid
:查看作业信息
squeue -l
:查看作业详细信息
squeue -n HOST
:查看特定节点作业信息
squeue --state=RUNNING
:查看运行中作业
squeue --help
:查看所有选项
scontrol 修改作业参数
scontrol show job JOB_ID
:查看排队或正在运行的作业的信息
scontrol hold JOB_ID
:暂停 JOB_ID
scontrol release JOB_ID
:恢复 JOB_ID
scontrol update dependency=JOB_ID
:添加作业依赖性 ,以便仅在 JOB_ID 完成后才开始作业
sacct 查看作业记录
sacct -l
:查看详细的帐户作业信息
sacct --states=R
:查看具有特定状态的作业的帐号作业信息
sacct -S YYYY-MM-DD
:在指定时间后选择处于任意状态的作业
sacct --format=“LAYOUT”
:使用给定的 LAYOUT 自定义 sacct 输出
sacct -X -j <job_id> --format=JobID,JobName,Node,Start,End,Elapsed
:查看指定作业的详细信息
sacct -X -j <job_id> -o "jobid,partition,alloccpus,cputimeraw,state,workdir"
:查看指定作业的详细信息
sacct --help
:查看所有选项
srun 提交作业
srun -N 1 -n 4 -p AMD_9654 hostname
:在计算主机上运行 hostname
srun -N 1 -n 1 -p AMD_9654 --pty /bin/bash
:启动远程主机 bash 终端
Slurm 脚本示例
部分参数在提交任务时可以省略,默认使用集群配置。以下脚本仅供参考,具体参数请以实际情况为准。
#!/bin/bash
#SBATCH --job-name=test # 任务名称,必填,默认是提交脚本名
#SBATCH --partition=TJZS_test # 分区名称,必填
#SBATCH --nodes=1 # 节点数,必填,否则默认 1 节点
#SBATCH --ntasks-per-node=1 # 每节点任务数,必填,否则默认 1 任务
#SBATCH --cpus-per-task=1 # 每任务 CPU 核数
#SBATCH --output=test_%j.out # 标准输出和错误输出文件,%j 是任务 ID
#SBATCH --error=test_%j.err # 错误输出文件,%j 是任务 ID
#SBATCH --time=00:00:10 # 任务时间限制,格式为 HH:MM:SS
#SBATCH --account=test # 账户
#SBATCH --mail-user=test@example.com # 邮件通知用户
#SBATCH --mail-type=END,FAIL # 邮件通知类型
#SBATCH --hint=nomultithread # 禁用超线程
#SBATCH --qos=normal # QOS
#SBATCH --constraint=gpu # 约束条件
#SBATCH --gres=gpu:1 # GPU 卡数
#SBATCH --mem=1G # 内存限制
#SBATCH --exclusive # 独占节点
#SBATCH --nodelist=node101 # 指定节点
#SBATCH --exclude=node102 # 排除节点
#SBATCH --dependency=afterany:123456 # 依赖任务
# module 加载环境
module purge
module use /home/software/modulefiles
module load openmpi/4.1.6
module load gcc/12.2.0
# spack 加载环境
spack load openmpi@4.1.6
spack load gcc@12.2.0
# source 环境
source /opt/AMD/aocc-compiler-4.2.0/setenv_AOCC.sh
source /opt/AMD/aocl/aocl-linux-aocc-4.2.0/aocc/amd-libs.cfg
# export 环境变量
export PATH=/home/software/openmpi/4.1.6-aocc/bin:$PATH
export LD_LIBRARY_PATH=/home/software/openmpi/4.1.6-aocc/lib:$LD_LIBRARY
# 运行计算任务示例
echo "Job start at $(date)"
mpirun xxx
echo "Job end at $(date)"
sbatch 常用参数
-n [count]
:总进程数
--ntasks-per-node=[count]
:每台节点上的进程数
-p [partition]
:作业队列
--job-name=[name]
:作业名
--output=[file_name]
:标准输出文件
--error=[file_name]
:标准错误文件
--time=[dd-hh:mm:ss]
:作业最大运行时长
--exclusive
:独占节点
--mail-type=[type]
:通知类型,可选 all, fail, end,分别对应全通知、故障通知、结束通知
--mail-user=[mail_address]
:通知邮箱
--nodelist=[nodes]
:偏好的作业节点
--exclude=[nodes]
:避免的作业节点
--depend=[state:job_id]
:作业依赖
--array=[array_spec]
:序列作业
Slurm 环境变量
$SLURM_JOB_ID
:作业 ID
$SLURM_JOB_NAME
:作业名
$SLURM_JOB_PARTITION
:队列的名称
$SLURM_NTASKS
:进程总数
$SLURM_NTASKS_PER_NODE
:每个节点请求的任务数
$SLURM_JOB_NUM_NODES
:节点数
$SLURM_JOB_NODELIST
:节点列表
$SLURM_LOCALID
:作业中流程的节点本地任务 ID
$SLURM_ARRAY_TASK_ID
:作业序列中的任务 ID
$SLURM_SUBMIT_DIR
:工作目录
$SLURM_SUBMIT_HOST
:提交作业的主机名