第4章 Linux基础与命令行操作:文件系统、常用命令、权限管理、远程服务器连接

做RNA-seq分析的,几乎绕不开Linux服务器。不管你是用本地集群,还是租云服务器,都得跟命令行打交道。说实话,我第一次接触Linux时也觉得“这界面也太丑了”,但用顺手之后,你会发现命令行比图形界面高效得多。这一章,我就带你走一遍最核心的部分,保证不堆砌无关命令。

4.1 文件系统:记住这三个关键目录就够了

Linux的目录结构是一个倒挂的树,根是 /。你不需要背所有目录,但下面这几个天天见面:

  • /home/你的用户名 — 家目录,简称 ~。你下载的测序数据、脚本、分析结果,基本都放这里。
  • /tmp — 临时存储,重启就清空。我习惯把大的中间文件扔这里,跑完就删,省得占磁盘。
  • /data 或 /project — 有些服务器会有专门的共享存储区,放参考基因组、公共数据库。

路径分绝对路径(从 / 开始)和相对路径(相对当前目录)。举个例子:

# 绝对路径
cd /home/lihua/rnaseq_project

# 相对路径(假设当前已经在 /home/lihua)
cd rnaseq_project

个人习惯:我在家目录下总放一个 projects 文件夹,每个项目一个子目录。时间久了,用 ls -lh 一眼就能看出哪个项目最占空间。

4.2 常用命令:我每天敲得最多的就是这些

RNA-seq分析中,你不会用到所有Linux命令,但下面这张表里的命令,几乎每步都要用。我把它们按场景分好了:

场景命令典型用途
浏览文件ls -lh tree -L 2看目录结构,确认文件大小
移动/复制cp -r mv rsync -av备份原始fastq,重命名输出文件
查看内容head -n 20 less -S快速预览fastq、counts表格
搜索过滤grep -c ">" awk '{print $1}'统计序列条数,提取某列
系统信息df -h free -h nproc检查磁盘、内存、CPU核心数
任务管理nohup command & htop后台跑pipeline,监控资源

我特别想强调一个命令:less -S。RNA-seq输出的counts矩阵经常很宽,普通 less 会把行折叠,加上 -S 就不会,左右箭头可以横向滚动。这个参数我几乎天天用。

避坑指南:我曾经用 rm -rf 手滑删了跑了一天的结果。从那以后,我习惯先 ls 确认,再用 mv 到临时目录“软删除”,过两天确认没问题再真删。

4.3 权限管理:别让权限卡住分析流程

RNA-seq分析经常需要多人协作,权限设置不对,你会发现 Permission denied 满天飞。理解下面三个东西就够了:

  • 读(r=4):可以 cat 文件,ls 目录。
  • 写(w=2):可以编辑文件,在目录里创建/删除文件。
  • 执行(x=1):可以运行脚本,cd 进入目录。

数字模式最常用,比如 chmod 755 script.sh 表示自己可读写执行,组和他人只能读和执行。我一般这样设置:

# 自己写的Python/R脚本
chmod 750 run_analysis.py
# 共享给组员的配置文件
chmod 640 config.yaml
# 别人也需要运行的二进制工具
chmod 755 tools/salmon

注意:如果你需要组员往你的项目目录里传数据,记得给目录加执行权限:chmod g+w your_project。否则对方 scp 时会报错,但错误信息里不会直接说缺写权限,排查起来很头疼。

另外,用 umask 0022 可以设默认新建文件的权限。我习惯在自己服务器里设成 0002,这样组员也能写。

4.4 远程服务器连接:SSH才是命根子

你的笔记本电脑不可能扛着几T的fastq运行STAR,真正干活的是远程服务器。SSH是你跟服务器之间的唯一通道。

基本连接命令:

ssh lihua@192.168.1.100

但每次都输密码太麻烦。我强烈建议你配置密钥认证,三步搞定:

  1. 本地生成密钥对(如果还没有的话)。
  2. 把公钥拷贝到服务器。
  3. 以后登录就不用密码了。
# 本地执行
ssh-keygen -t ed25519 -C "your_email@example.com"
# 一路回车,不要设密钥密码(除非你特别在意安全)

# 复制公钥到服务器
ssh-copy-id lihua@192.168.1.100

你还应该配置 ~/.ssh/config,省得每次都打一长串IP。举个例子:

Host cluster
    HostName 192.168.1.100
    User lihua
    Port 22
    IdentityFile ~/.ssh/id_ed25519

然后你只需 ssh cluster 就能连上去。我自己的配置文件里写了好几个主机别名,不同服务器对应不同密钥和端口,用起来很方便。

我踩过的坑:有一次改变了服务器IP,但 ~/.ssh/known_hosts 里还记录着旧IP的公钥,SSH会报 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED。遇到这种情况,直接 ssh-keygen -R "新IP" 清除一下对应记录就行,不用删整个文件。

4.5 本章知识体系速览

下面这张SVG图把Linux基础操作的核心关系串了起来,左边是文件系统结构,右边是命令+权限+远程连接,也就是我们这章的三个实战模块。

第4章 知识体系:Linux基础与命令行操作 终端 / Shell 文件系统结构 /home/用户名 (家目录 ~) /tmp (临时文件) /data (项目共享) 常用命令 浏览: ls, tree 移动: cp, mv, rsync 查看: head, less, cat 搜索: grep, awk, sort 系统: df, free, nohup 权限管理 r=4, w=2, x=1 chmod 数字模式 文件 vs 目录权限 远程连接 ssh user@ip ssh-keygen 密钥 ssh-copy-id 部署 ~/.ssh/config 本章核心:掌握三件事——文件系统导航 + 必备命令 + 权限和远程配置 这是搭建RNA-seq Pipeline的“地道战”基础,后面所有工具调用都靠这些

说到底,Linux命令不用一次性记住所有参数。你只要知道大概有什么命令,用到时查一下手册或历史记录就够了。我刚开始时经常在终端敲 man 查看帮助,后来逐渐形成了自己的命令快捷键清单,贴在显示器旁边。这一章的核心就是建立起“在命令行里解决问题”的感觉,给后面的pipeline搭建铺好路。