第二章: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 知识体系总览
我把这章的核心逻辑画了张图,你一看就明白:
这张图把本章的知识点串起来了。你从SSH登录开始,然后传文件、管理文件,最后写作业脚本提交计算。每一步都环环相扣。
我的建议:刚开始别贪多。先练熟SSH登录和文件传输,再学作业提交。我当年就是一口气想全学会,结果哪个都没学透。慢慢来,每个命令敲十遍,肌肉记忆就有了。
好了,Linux基础就讲到这里。这些命令你每天都会用到,多练几次就熟了。记住,做计算最怕的就是基础不牢,到时候出了问题都不知道从哪查起。