第二章:Linux基础——SSH登录、文件操作与作业提交系统

各位同学,咱们直接进入正题。做VASP计算,Linux是绕不开的坎。我见过不少新手,装好VASP后卡在第一步——连服务器都登不上去。今天我就把SSH登录、文件操作和作业提交系统这些基本功,掰开了揉碎了讲给你听。

2.1 SSH登录:你的远程大门

说白了,SSH就是一把钥匙。你要用这把钥匙,打开远程超算中心的大门。我个人习惯用终端直接连,图形界面反而容易出问题。

基础登录命令:

ssh username@cluster_address

比如:ssh zhang@192.168.1.100

嗯,这里要注意。第一次登录会提示你确认主机密钥,输入yes就行。我刚开始做计算时,看到那个提示吓了一跳,以为中毒了。其实这是正常的SSH安全机制。

我的小技巧:配置SSH免密登录,省得每次输密码。用ssh-keygen生成密钥对,然后把公钥扔到服务器的~/.ssh/authorized_keys里。我在项目里天天用,效率提升不是一点半点。

2.2 文件操作:别把数据搞丢了

做VASP计算,文件操作是家常便饭。你想想看,一个计算任务下来,POSCAR、INCAR、POTCAR、KPOINTS,四个输入文件一个都不能少。我曾经因为少传了一个POTCAR,白白浪费了三天机时。

2.2.1 本地与远程传文件

scp命令,简单粗暴:

# 从本地上传文件到服务器
scp POSCAR zhang@192.168.1.100:/home/zhang/vasp_calc/

# 从服务器下载文件到本地
scp zhang@192.168.1.100:/home/zhang/vasp_calc/OUTCAR ./

传整个目录加个-r参数:

scp -r vasp_calc/ zhang@192.168.1.100:/home/zhang/

避坑指南:我曾经用scp传大文件,结果网络断了,前功尽弃。后来改用rsync,支持断点续传。命令是rsync -avz POSCAR zhang@192.168.1.100:/home/zhang/。记住,-a保留文件属性,-v显示详情,-z压缩传输。

2.2.2 服务器上的文件管理

登录到服务器后,常用的命令就这几个:

命令 作用 我的用法
ls -lh 列出文件详情 看文件大小,确认OUTCAR有没有写满
mkdir -p 创建目录 建项目文件夹,比如mkdir -p TiO2/001_surface
cp -r 复制目录 备份整个计算目录,防止手滑
rm -rf 删除目录 清理垃圾文件,但千万小心!

重要提醒:rm -rf是核弹级命令。我有个同事,本来想删临时文件,结果路径写错了,把整个项目删了。嗯,从那以后,我每次用rm之前都先ls确认一遍。

2.3 作业提交系统:PBS与Slurm

超算中心不是你家电脑,不能直接跑程序。你得通过作业提交系统,告诉调度器:「我要用128个核,跑2小时,这是我的输入文件。」

目前主流的有两种:PBS和Slurm。说白了,PBS是老前辈,Slurm是后起之秀。我接触过的超算,八成都在用Slurm。

2.3.1 PBS作业脚本

PBS的脚本长这样:

#!/bin/bash
#PBS -N VASP_TiO2        # 作业名称
#PBS -l nodes=2:ppn=16   # 2个节点,每个节点16核
#PBS -l walltime=02:00:00 # 运行时间2小时
#PBS -q normal           # 队列名称
#PBS -o output.log       # 标准输出
#PBS -e error.log        # 错误输出

cd $PBS_O_WORKDIR        # 进入提交目录
mpirun -np 32 vasp_std   # 运行VASP

提交命令:qsub job.pbs

我的经验:PBS里$PBS_O_WORKDIR这个变量很关键。我见过有人没写这行,结果程序跑到了home目录下,输出文件散落一地。记住,一定要cd到工作目录。

2.3.2 Slurm作业脚本

Slurm的脚本更简洁:

#!/bin/bash
#SBATCH -J VASP_TiO2      # 作业名称
#SBATCH -N 2              # 2个节点
#SBATCH -n 32             # 总共32个任务
#SBATCH -t 02:00:00       # 运行时间
#SBATCH -p normal         # 分区
#SBATCH -o output.log     # 输出文件
#SBATCH -e error.log      # 错误文件

cd $SLURM_SUBMIT_DIR      # 进入提交目录
srun vasp_std             # 运行VASP

提交命令:sbatch job.slurm

核心区别:

  • PBS用qsub提交,Slurm用sbatch
  • PBS用qstat查看状态,Slurm用squeue
  • PBS用qdel删除作业,Slurm用scancel

2.3.3 作业监控命令

提交作业后,你得盯着点。我常用的命令:

# 查看所有作业
squeue

# 只看自己的作业
squeue -u zhang

# 查看作业详细信息
scontrol show job 12345

# 取消作业
scancel 12345

避坑指南:我曾经提交了一个作业,参数设错了,跑了半小时才发现。后来我养成习惯,提交前先检查#SBATCH参数,特别是-t时间限制。设太短会跑不完,设太长又浪费资源。一般先设个短时间测试一下,确认没问题再正式跑。

2.4 知识体系总览

我把这章的核心逻辑画了张图,你一看就明白:

Linux基础操作知识体系 SSH登录 文件操作 作业提交系统 ssh user@host ssh-keygen 免密登录 scp / rsync 传文件 ls / cp / rm / mkdir PBS: qsub / qstat / qdel Slurm: sbatch / squeue / scancel 核心:登录 → 传文件 → 写脚本 → 提交 → 监控

这张图把本章的知识点串起来了。你从SSH登录开始,然后传文件、管理文件,最后写作业脚本提交计算。每一步都环环相扣。

我的建议:刚开始别贪多。先练熟SSH登录和文件传输,再学作业提交。我当年就是一口气想全学会,结果哪个都没学透。慢慢来,每个命令敲十遍,肌肉记忆就有了。

好了,Linux基础就讲到这里。这些命令你每天都会用到,多练几次就熟了。记住,做计算最怕的就是基础不牢,到时候出了问题都不知道从哪查起。

专注资料整理