Linux基础与服务器配置:SSH连接、文件系统、权限管理、包管理

我个人习惯,把服务器配置比作「进实验室前先认门」。你空有一身分析本领,连不上机器、找不到数据、装不了软件,那啥也干不了。这一节,我把最常用的几个操作拆开讲。你跟着做一遍,后面三十章都会顺畅很多。

Linux 服务器基础配置知识体系 Linux 服务器基础 ① SSH 远程连接 ② 文件系统操作 ③ 权限管理 ④ Conda 包管理 核心逻辑:先连接 → 找数据 → 设权限 → 装工具 • SSH 连接是第一步,没有它什么都干不了。 • 文件系统让你知道东西在哪。权限管理保护你的数据不被误删。 • Conda 是工具安装的「瑞士军刀」。四步走完,服务器才算「能用」。 • 我建议你从左上角一步一步往下走,不要跳步。

SSH 远程连接:怎么登陆服务器

说白了,SSH 就是你坐在自己电脑前,远程操作实验室那台服务器的「钥匙」。我刚开始做宏基因组时,实验室服务器是台老旧的 Dell 工作站,我靠 SSH 连着它跑了整整两年。

基本命令很简单:

ssh username@server_ip -p 22

举个例子,连一台内网机器:

ssh metagenomics@192.168.1.100 -p 22

第一次连的时候,系统会问你接受指纹。输入 yes 就行。然后输密码。嗯,这里要注意:输密码时啥也不显示,很正常,别慌。

我个人习惯用密钥认证,省得每次输密码:

# 本地生成密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/meta_key

# 把公钥传到服务器
ssh-copy-id -i ~/.ssh/meta_key.pub metagenomics@192.168.1.100

# 后续连接就不用输密码了
ssh -i ~/.ssh/meta_key metagenomics@192.168.1.100

我曾经碰到过一个坑:公钥放上去了,但就是连不上。后来发现是服务器上 ~/.ssh/authorized_keys 的权限设成了 777。正确做法是:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

权限不对,SSH 会直接拒绝密钥认证。你想想看,安全机制就是这么设计的。

为什么会这样?因为 OpenSSH 很较真,它发现 .ssh 目录别人也能写,就认为不安全,直接罢工。所以以后配 SSH,先查权限。

文件系统:Linux 目录怎么逛

Linux 的文件系统和 Windows 不一样。没有 C 盘 D 盘,只有一个根目录 /。宏基因组项目里,我经常打交道的是这几个目录:

目录用途我常用的场景
/home每个用户的家目录放个人脚本、配置文件
/data挂载的大容量存储原始 fastq 文件、中间结果
/tmp临时文件,重启就清空运行中产生的临时中间文件
/usr/local系统级软件安装目录手动编译的工具放这里
/opt第三方软件包conda 环境有时也放这里

基本的文件操作命令,你得背下来:

pwd              # 看当前在哪
ls -lh           # 列出文件,带大小
cd /data/project # 切换目录
mkdir -p raw/fastq  # 递归创建文件夹
cp -r dir1 dir2  # 复制目录
mv file1 file2   # 移动或重命名
rm -rf temp/     # 删除目录(小心用)

我在实验室看到过好几次悲剧:有人用 rm -rf / data/(注意 slash 后面那个空格),直接把系统删了。我个人习惯,凡是 rm -rf 前都先 ls 一遍确认路径,养成肌肉记忆。

你看看,Linux 的哲学就是「一切皆文件」。硬盘是文件、网卡是文件、进程信息也是文件。实操时,切莫手滑。

权限管理:谁可以读写执行

当你执行 ls -l 时,会看到类似这样的输出:

-rwxr-xr-x  1 root  root  12345 Mar 15 10:00 run_metagenome.sh

这串字符 -rwxr-xr-x 分三组:

  • 第一组 rwx:文件所有者(owner)的权限——读、写、执行
  • 第二组 r-x:同组用户(group)的权限——读、执行
  • 第三组 r-x:其他用户(others)的权限——读、执行

数字表示更直观:r=4, w=2, x=1。所以 rwxr-xr-x 就是 755,rw------- 是 600。

常用的权限操作:

chmod 755 run_metagenome.sh   # 给所有人加执行权限
chmod 600 secret_data.txt     # 只有自己能读写
chown alice:bio data.txt      # 修改所有者和组
chgrp bio analysis/           # 修改目录的组

我曾经犯过一个新手错误:用 chmod -R 777 /data 给所有人开放权限。表面上方便了,结果隔壁组的人误删了我的 intermediate 目录,白白重新跑了三天分析。我的教训是:权限尽量收紧,多用组权限来共享。

你想想看,宏基因组数据动不动几百 G,如果权限乱了,恢复起来非常费劲。权限管理其实就是「谁可以改、谁可以用」的问题。

包管理:conda/miniconda 安装与配置

装工具是宏基因组分析最头疼的事之一。每个软件依赖的库版本不同,手动编译能把你逼疯。我早期还在用 apt-get 一个个装,后来遇到一个项目需要 Python 2.7 和 Python 3.8 共存,直接把我搞崩溃了。直到我用了 conda,才真正解放双手。

这里我建议大家装 Miniconda,它更轻量,没有那些你用不到的 Anaconda 全家桶。

安装步骤:

# 下载安装包
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 一路按回车和 yes,接受默认路径就好

装完后,一定要初始化 shell,否则 conda 命令没法直接用:

conda init bash
# 然后关掉终端重新打开,或者 source ~/.bashrc

验证安装:

conda --version
# 应该输出类似 conda 23.10.0

我个人习惯的配置清单:

# 添加常用频道(bioconda 做生信必备)
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge

# 设置不自动激活 base 环境(省得每次开终端都慢半拍)
conda config --set auto_activate_base false

# 环境创建示例
conda create -n metagenomics python=3.9
conda activate metagenomics

我建议一个项目一个环境。比如你的宏基因组项目建一个环境:

conda create -n metagenomics python=3.9
conda activate metagenomics
conda install -c bioconda kraken2 bracken fastp megahit

这样不同项目的依赖不会打架。

装包的时候,我建议用 mamba 替代 conda 来安装,速度快得多:

conda install -n base mamba -c conda-forge
mamba create -n metagenomics python=3.9
mamba install -n metagenomics -c bioconda kraken2 fastp

为什么用 mamba?因为它并行下载,而且解决依赖的速度是 conda 的几倍。我早期用 conda 装一个工具,等了 15 分钟还在「Solving environment」,换成 mamba 后一分钟搞定。

有个坑我必须提:conda init 之后,你的 .bashrc 里会被加入一段 conda 脚本。如果你不小心把它删了,conda 命令就会报「command not found」。解决方法是重新跑一次 conda init bash。

还有,不要用 sudo 装 conda 包。conda 环境默认装在你的用户目录下,加 sudo 反而会导致权限错乱。我见过有人 sudo conda install 后,普通用户再也激活不了环境了。

最后,记得定期清理缓存,特别是你频繁创建删除环境时:

conda clean --all
# 能释放几个 G 的空间

好了,这下你的服务器就算「能用」了。SSH 连得上、文件找得到、权限不会乱、工具装得上。后面所有的宏基因组分析,都建立在这个基础上。