Linux常用指令速查记录

1 minute read

Published:

平时在ssh服务器上经常需要使用命令行工具,但是每次都问ai,反而会越问越懒,所以就在这里做一个记录。

1. 文件与目录管理

管理服务器上的文件和目录是最高频的操作。

创建目录 (Create Directory)

使用 mkdir 来创建一个新的文件夹,用于存放项目文件或数据。

mkdir <directory_name>

移动或重命名 (Move / Rename)

使用 mv 可以将文件或目录移动到新的位置,或者在当前位置对其进行重命名。

# 将文件移动到指定目录
mv source_file.txt /path/to/destination_directory/

# 重命名文件
mv old_name.txt new_name.txt

复制 (Copy)

使用 cp 来复制文件或目录。复制目录需要加上 -r 参数。

# 复制文件
cp /path/to/source_file.h5ad /path/to/destination_directory/

# 复制整个目录
cp -r /path/to/source_directory /path/to/destination_directory/

删除 (Remove)

使用 rm 来删除文件或目录。删除操作是不可逆的,请务必谨慎!

# 删除文件
rm file_to_delete.txt

# 递归删除目录及其所有内容
rm -r directory_to_delete/

2. 文件压缩与解压

在服务器间传输数据或进行备份时,通常需要先将文件打包压缩。.tar.gz 是一种常见的格式。

压缩文件/目录 (Compress)

将一个或多个文件/目录打包并用gzip压缩。

参数说明:

  • c: create,创建一个新的归档文件
  • z: gzip,通过gzip进行压缩
  • v: verbose,显示详细的压缩过程
  • f: file,指定归档文件的名称
tar -czvf archive_name.tar.gz /path/to/your_folder_or_file

示例:将 Result_data/ 目录压缩成 results.tar.gz

tar -czvf results.tar.gz Result_data/

解压文件 (Decompress)

解压 .tar.gz 文件。

参数说明:

  • x: extract,从归档文件中提取文件
tar -xzvf archive_name.tar.gz

3. 远程文件传输 (scp)

scp (secure copy) 是一个基于SSH协议在本地和远程服务器之间安全传输文件的指令。

上传文件到服务器 (Upload)

scp /path/to/local/file <username>@<server_address>:/path/to/remote/directory

示例:将本地Downloads中的 data.h5ad 上传到服务器的 ~/project/data 目录下

scp /Users/yourname/Downloads/data.h5ad <username>@<server_address>:/home/<username>/project/data

从服务器下载文件 (Download)

scp <username>@<server_address>:/path/to/remote/file /path/to/local/directory

示例:将服务器上 ~/project/output/ 目录中的 plots.tar.gz 下载到本地桌面

scp <username>@<server_address>:/home/<username>/project/output/plots.tar.gz /Users/yourname/Desktop

4. 终端会话管理 (tmux)

当需要运行耗时很长的任务(如模型训练)时,直接在SSH终端中运行可能会因为网络断开而中断。tmux (Terminal Multiplexer) 可以创建持久化的会话,即使断开连接,任务也会在后台继续运行。

创建新会话

tmux new -s <session_name>

示例:创建一个名为 jupyter_session 的会话

tmux new -s jupyter_session

查看所有会话

tmux ls

连接到已有会话

可以根据会话名称或编号进行连接。

tmux attach -t <session_name_or_id>

临时退出(分离)会话

在tmux会话中,按下组合键 Ctrl + b,然后松开,再按下 d

关闭所有会话

这个命令会杀死所有tmux会话,请谨慎使用。

tmux kill-server

5. 运行脚本与后台任务

给予脚本执行权限

在运行 .sh 脚本前,需要先用 chmod 赋予它执行权限。

chmod +x your_script.sh

运行脚本

./your_script.sh

后台运行任务 (nohup)

使用 nohup& 可以使命令在后台运行,并且即使用户退出登录,进程也不会被挂断。通常会将标准输出和错误输出重定向到日志文件中。

nohup <command> > output.log 2>&1 &

示例:在后台运行一个Python脚本,并将所有输出保存到 training.log

nohup python train_model.py --gpu 0 --epochs 100 > training.log 2>&1 &

查看后台进程

使用 psgrep 来查找正在运行的特定进程。

ps aux | grep <process_name_or_script_name>

示例:查看是否有名为 train_model.py 的进程在运行

ps aux | grep train_model.py

实时查看日志输出

使用 tail -f 可以动态监控日志文件的最新内容。

tail -f output.log

终止进程

通过 ps 命令找到进程ID(PID)后,使用 kill 命令终止它。

kill <process_id>

6. Conda 环境管理

Conda是管理Python及其他软件包和环境的利器,对于需要不同依赖库的多个项目尤其重要。

克隆现有环境

当需要一个与现有环境配置类似的新环境时,克隆是最快的方式。

conda create --name <new_env_name> --clone <existing_env_name>

示例:基于 base_py38 环境创建一个名为 new_project_env 的新环境

conda create --name new_project_env --clone base_py38

激活环境

conda activate <env_name>

查看所有环境

conda env list

删除环境

conda env remove --name <env_name>

7. 其他实用工具

从Google Drive下载文件

对于存储在Google Drive上的大型数据集,可以使用 gdown 工具通过文件ID直接在服务器上下载。

首先需要安装 gdown:

pip install gdown

然后下载文件:

gdown --id <file_id> -O <output_filename>

注:文件ID通常是分享链接中 d//view 之间的那串字符。

克隆Git仓库

从GitHub等平台下载代码。

git clone <repository_url>

示例:

git clone git@github.com:SatijaLab/seurat.git

查看文件内容

# 查看文件前几行
head -n 10 filename.txt

# 查看文件后几行
tail -n 10 filename.txt

# 查看整个文件内容
cat filename.txt

# 分页查看大文件
less filename.txt

查找文件

# 按名称查找文件
find /path/to/search -name "*.h5ad"

# 查找包含特定内容的文件
grep -r "pattern" /path/to/search

磁盘使用情况

# 查看磁盘使用情况
df -h

# 查看目录大小
du -sh /path/to/directory