tutor

Linux 与 VASP 作业提交基础教程

欢迎各位新同学!本教程旨在帮助你快速掌握在服务器上进行科研工作所需的基本 Linux 操作,并学会如何提交 VASP 计算任务。


目录

  1. 简介
  2. 终端和 Shell
  3. 远程连接与文件传输
  4. 基本命令
  5. 文件权限
  6. 管道和重定向
  7. 文本搜索
  8. 作业调度系统与 VASP 提交
  9. 结语

1. 简介

为什么使用 Linux 命令行?

在计算化学和计算物理领域,我们通常在远程的高性能计算(HPC)集群上进行模拟。这些集群几乎都使用 Linux 操作系统,并且主要通过命令行进行交互。熟练使用命令行是高效开展计算工作的必备技能。


2. 终端和 Shell

  • 终端 (Terminal):是一个程序,它为您提供了一个与 Shell 交互的窗口。
  • Shell:是一个命令解释器。它接收您输入的命令,然后让操作系统执行它们。最常见的 Shell 是 Bash (Bourne Again SHell)。

当你打开终端时,你会看到一个提示符,通常看起来像这样:

username@hostname:~$

这表示 Shell 已经准备好接收您的命令了。


3. 远程连接与文件传输

在自己的电脑上,你需要使用 sshscp 命令来连接远程服务器和传输文件。

  • ssh (Secure Shell): 远程登录到服务器。

    # 将 username 替换为你的用户名,server_address 替换为服务器的IP地址或域名
    ssh username@server_address
    
  • scp (Secure Copy): 在本地电脑和服务器之间传输文件。

    # 从本地上传文件到服务器
    # scp [本地文件路径] username@server_address:[服务器上的目标路径]
    scp my_vasp_job.zip username@server_address:/home/username/vasp_jobs/
    
    # 从服务器下载文件到本地
    # scp username@server_address:[服务器上的文件路径] [本地目标路径]
    scp username@server_address:/home/username/vasp_jobs/OUTCAR ./
    

4. 基本命令

文件和目录操作

  • pwd (Print Working Directory): 显示当前所在的目录。

    pwd
    # 输出: /home/username
    
  • ls (List): 列出当前目录下的文件和目录。

    ls
    # ls -l  # 显示详细信息
    # ls -a  # 显示所有文件(包括隐藏文件)
    
  • cd (Change Directory): 切换目录。

    cd /home/username/Documents  # 切换到 Documents 目录
    cd ..                        # 切换到上一级目录
    cd ~                         # 切换到主目录
    cd -                         # 切换到上一个工作目录
    
  • mkdir (Make Directory): 创建一个新目录。

    mkdir my_project
    
  • touch: 创建一个空文件或更新文件的时间戳。

    touch new_file.txt
    
  • cp (Copy): 复制文件或目录。

    cp source.txt destination.txt  # 复制文件
    cp -r source_dir/ new_dir/     # 复制目录(需要 -r 选项)
    
  • mv (Move): 移动或重命名文件/目录。

    mv old_name.txt new_name.txt  # 重命名
    mv my_file.txt /tmp/          # 移动文件到 /tmp 目录
    
  • rm (Remove): 删除文件或目录。

    rm file.txt                  # 删除文件
    rm -r old_project/           # 删除目录(需要 -r 选项)
    # 请谨慎使用 rm -rf,它会强制删除所有内容且无法恢复!
    
  • tar: 用于打包和解包文件(.tar.gz.tgz 格式很常用)。

    # 解压 a.tar.gz 文件
    tar -zxvf a.tar.gz
    # 将 my_folder 文件夹打包为 my_folder.tar.gz
    tar -zcvf my_folder.tar.gz my_folder
    

查看文件内容

  • cat (Concatenate): 显示整个文件的内容。

    cat file.txt
    
  • less: 分页查看文件内容。按 q 退出。

    less long_file.txt
    
  • head: 查看文件的开头部分(默认前10行)。

    head file.txt
    # head -n 20 file.txt # 查看前20行
    
  • tail: 查看文件的结尾部分(默认后10行)。

    tail file.txt
    # tail -f log.txt # 实时查看文件更新,常用于日志监控
    

获取帮助

  • man (Manual): 显示命令的手册页。

    man ls
    
  • --help: 大多数命令支持 --help 选项来显示简短的帮助信息。

    ls --help
    

5. 文件权限

使用 ls -l 可以看到类似 -rwxr-xr-- 的字符串。这表示文件的权限。

  • 第一个字符:d 表示目录,- 表示文件。
  • 后面九个字符分为三组:
    1. 所有者 (User) 的权限
    2. 所属组 (Group) 的权限
    3. 其他用户 (Others) 的权限
  • 每组权限包含:
    • r: 读 (Read)
    • w: 写 (Write)
    • x: 执行 (Execute)

chmod 命令用于修改权限。

# 给所有用户添加可执行权限
chmod +x script.sh

# 设置权限为 rwxr-xr-x (所有者可读写执行,组和其他用户可读可执行)
chmod 755 script.sh

6. 管道和重定向

  • 重定向输出 >>>:

    • >: 将命令的输出写入文件(会覆盖文件原有内容)。
    • >>: 将命令的输出追加到文件末尾。
    ls -l > file_list.txt
    echo "Hello again" >> hello.txt
    
  • 管道 |: 将一个命令的输出作为另一个命令的输入。

    # 列出所有文件,然后用 grep 筛选出包含 "py" 的行
    ls -l | grep "py"
    

7. 文本搜索

  • grep (Global Regular Expression Print): 在文件中搜索指定的文本模式。这对于检查 VASP 的输出文件 OUTCAR 至关重要。
    # 在 OUTCAR 中搜索 "error",检查是否有错误
    grep "error" OUTCAR
    
    # 检查电子步是否收敛,"F=" 是 VASP 输出中总自由能的标志
    grep "F=" OUTCAR
    
    # 递归地在目录中搜索 (-r) 并忽略大小写 (-i)
    grep -ri "database" /var/log/
    

下一步可以学习:

  • 学习 sedawk 进行高级文本处理和数据提取。
  • 编写更复杂的 Shell 脚本来自动化你的工作流。
  • 了解如何分析 vasprun.xml 文件。

祝您科研顺利!

posted @ 2025-07-09 18:07  Simcrq  阅读(22)  评论(0)    收藏  举报