type
status
date
slug
summary
tags
category
icon
password
写给ALKEMIE课题组新生入门
MobaXterm安装及使用
俗话说,“工欲善其事必先利其器”。类似网购电子产品,我觉得新生入门第一步就应该是“拆快递”,得先把“快递”拿到手里折腾折腾再说。这里的“快递”就是指咱们集群每个人的个人账号。至于后续第一性原理计算会用到的软件如 VASP、CP2K 等可以慢慢学。
本节首先讲讲如何在 Windows 系统中使用 SSH(Secure Shell)客户端登录集群账号。“网购”环节没啥好说的,首先你得自己找老师开通集群账号。
如果你觉得集群账号没有管理员权限不方便,可以自己在 Windows 里面安装一个 Linux 子系统 WSL2。安装过程非常简单。
SSH 客户端市面上有挺多,我此前使用的 XShell,后面也跟着师兄、师姐转投了 MobaXterm。
访问 MobaXterm官网 下载 MobaXterm 的安装包,解压后双击
.msi 文件根据提示安装。打开软件后,点击左上角的 Session (会话控制),在弹出的窗口中选择 SSH,输入 Remote host、Specify username 和 Port=2022,如图所示:
首次登录时,需要输入管理员给的初始密码(注意密码是屏幕不可见的,敲键盘没响应不用惊讶),然后 Enter 确认进入个人账号。
登录成功后,第一件事是键入
passwd 命令根据提示修改密码。首次登录一定要修改初始密码,否则下次用初始密码登录时可能会提示 access denied,然后一脸尴尬地去找管理员重新设置初始密码。MobaXterm 界面分为文件区(左)和终端区。勾选左下角的
Follow terminal folder 可以让两个区块的路径保持一致。文件传输和下载可以采用直接拖拽的方式。MobaXterm 一个常用的功能是,在文件区选中两个文件 A 和 B,右键
Compare text files 可以直观地比较它们的异同并修改(比命令 diff A B 好用很多),如图所示:
Linux的基本命令
Linux 命令行是一个强大的工具,它允许用户通过输入特定的命令来执行操作,管理文件和目录,配置网络和系统,以及执行许多其他任务。对于初学者来说,掌握一些基本的 Linux 命令是非常重要的,这些命令包括文件操作、目录导航、权限设置和文件编辑等。
不熟悉 Linux 的基本命令时可以求助度娘,敲多了自然而然地就知道每个命令的含义。可以使用
man command 查看 command 手册(例如,man ls 显示 ls 命令的详细介绍),并使用 q 退出手册。刚开始不用太着急,初学者先学会并掌握下面列出的一些常用命令即可:
pwd是查看当前目录的绝对路径;
cd dir/是访问dir/文件夹;
ls dir/是查看dir/文件夹列表;
mkdir dir/是新建文件夹dir/,注意路径中最好不要出现中文;
cp A B是把A复制为B;
cp -r dir1/ dir2/是把文件夹dir1/复制为dir2/;
mv A B是把A移动为B;
rm A是删除文件A;
rm -rf dir/是递归删除文件夹dir/;
vi A是使用 VIM 文本编辑器编辑文件A;
cat A是查看文件A的内容;
qsub runvasp.pbs是提交运行 VASP 程序的 PBS 脚本;
Linux 最常用的文本编辑器是 VIM。如前所述,键入命令
vi XXX 即可编辑 XXX 文件(可以省去 touch XXX 创建空文件这一步骤)。VIM 文本编辑器常用模式有四个:- Normal-mode:初始模式,在该模式下可以使用 VIM 快捷键,如
dd剪切光标所在行,yy复制光标所在行,p粘贴行,u撤销上一步操作等等,熟练掌握快捷键能极大地提高你的工作效率;
- Insert-mode:在初始模式下键入
i、a或者o进入文本编辑模式,编辑完成后需要键入Esc返回初始模式;
- Command-mode:在初始模式下键入
:进入命令行模式,键入wq即可保存退出,q!是不保存退出,set nu显示行号,/str查找文本str,%s/旧文本/新文本/gc是替换旧文本为新文本,同样是Esc退出;
- Visual-mode:在初始模式下键入
v进入,Esc退出;
在
~/.vimrc 中写入 set number 即可在 VIM 文本编辑器中显示行号。ps: 除了使用 VIM 文本编辑器,也可以使用命令 sed 或 awk 实现文本替换。 例如命令 sed -i "s/A/B/g" XXX 是替换 XXX 中的 A 为 B; 又如命令 awk '{ gsub(/dft_forces/, "forces"); print $0 }' train.xyz > out.xyz 是替换文本中的 dft_forces 为 forces 并输出到 out.xyz 文件中。 熟练掌握 VIM 编辑器后可以试一试,效率翻倍!
ps: 使用别名 alias 可以极大提升工作效率。 例如,设置一个别名 alias ll='ls -al' 即可键入 ll 列出所有文件包括隐藏文件的详细信息。 如果要永久使用该别名,可以将该命令写入 ~/.bashrc 配置文件(文件名前面加一个点表示隐藏文件)里面,然后 source ~/.bashrc 加载配置文件即可。 单独键入 alias 可以列出系统中已设置的所有别名。 下面给出我个人的 ~/.bashrc 中的别名设置,仅供参考:
PBS 作业基本命令
常用的 PBS 作业基本命令有:
qsub *.pbs提交作业;
qstat查看自己的作业运行情况;
showq查看所有人的作业运行情况;
qdel jobid取消作业,jobid通过qstat查看。
不常用的 PBS 作业命令例如:
qmove将作业移动到另一个队列;
pbsnodes列出集群中所有节点的状态和属性等。
PBS 脚本中 PBS 作业属性以
#PBS 的方式指定,其中N:作业名称;
l:设定作业所需资源,nodes设定作业所需节点资源,ppn为节点的核数,walltime设定作业所需的最大 wallclock 时间;
q:设定作业队列名称;
S:设定shell类型;
PBS 内置变量包括
PBS_NODEFILE(包含作业所用计算节点的文件名)、PBS_O_WORKDIR(执行 qsub 命令所在的绝对路径)、PBS_QUEUE(作业所执行的队列名称)、PBS_JOBNAME(用户指定的作业名称)等。课题组集群3的 VASP 作业提交脚本
runvasp.pbs 如下。修改变量 $EXEC 可以执行不同的计算。使用集群上已经安装好的软件
在 Linux 中,当同一款编辑器、运行库、软件存在多个版本且多个版本都需要在不同的场景或人员使用时,配置这些内容的环境变量是一个非常繁琐的过程,而 module 工具则提供了一个简单快速的方法。换言之,通过 module 你可以使用集群上已经安装好的软件。
使用 module 管理软件之前注意要在
~/.bashrc 文件中添加环境变量 export MODULEPATH=/opt/modulefiles。新账号如果需要自己检查下 ~/.bashrc 文件中有没有这一行。常用的 module 命令如下:
module avail:显示可以使用的模块
module load:加载模块
module unload:卸载模块
module list:显示已经加载的模块
ps: 一个小技巧是在 ~/.bashrc 中添加命令 module load XXX,即可自动加载 XXX 软件。但是一定要慎重设置,避免调用其它软件时出现环境冲突。
下面列出集群 3 中已经安装的软件列表:
集群上有的软件一般就不要自己再重复安装了(除非管理员没有更新)。
例如,想要使用 Anaconda 可以直接
module load anaconda/3-python3.7.3,然后 conda create -n XXX python=* 创建指定版本号为 * 的 Python 环境 XXX,对应的环境路径就会自动添加到 ~/.conda/envs 中。但是集群现在限制联网,所以创建环境时进度条会卡住。如果你要求不高 Python 3.7 也能将就,那么 conda create -n XXX --clone base 克隆 base 环境就好。否则,还是自己安装一个 Anaconda 吧。- 作者:wangchr1617
- 链接:https://www.wangchr1617.top/essay/alkemie-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

