Linux常用指令速查记录
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 &
查看后台进程
使用 ps 和 grep 来查找正在运行的特定进程。
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
