跳转至

15.1 Linux 常用命令

本章整理计算集群日常使用中常见的 Linux 命令。命令示例均为可直接复制执行的纯命令,不含提示符。

注意

登录节点主要用于登录、编辑文件、编译小程序、提交作业和查看结果。请不要在登录节点上运行长时间、高 CPU、高内存或大量 I/O 的计算任务,这类任务应提交到 HTCondor 或 Slurm 作业系统。

15.1.1 获取当前环境信息

功能 命令示例
查看当前用户 whoami
查看用户 ID 和所属用户组 id
查看所属用户组 groups
查看当前主机名 hostname
查看当前目录 pwd
查看当前时间 date
查看系统运行时间和负载 uptime
查看系统内核和架构 uname -a
查看操作系统版本 cat /etc/os-release

常用示例:

whoami
id
hostname
pwd
uptime
uname -a
cat /etc/os-release

15.1.2 目录与路径操作

功能 命令示例
切换到指定目录 cd /path/to/dir
返回用户家目录 cd 或 cd ~
返回上一级目录 cd ..
返回上一次所在目录 cd -
显示当前目录绝对路径 pwd
创建单个目录 mkdir dirname
创建多级目录 mkdir -p project/logs
查看目录树 tree

如果系统未安装 tree,可以用 find 查看目录层级:

find . -maxdepth 2 -type d

15.1.3 文件与目录查看

功能 命令示例
查看当前目录文件 ls
查看详细信息 ls -l
查看隐藏文件 ls -a
按时间倒序查看 ls -lt
按文件大小排序 ls -lhS
以易读方式显示大小 ls -lh
查看文件类型 file filename
查看文件前几行 head filename
查看文件后几行 tail filename
实时查看日志更新 tail -f job.out
分页查看文件 less filename
直接输出文件内容 cat filename

常用组合:

ls -lah
ls -lt | head
tail -n 100 job.out
tail -f slurm-12345.out
less large.log

15.1.4 文件与目录创建、复制、移动、删除

功能 命令示例
创建空文件 touch file.txt
复制文件 cp source.txt target.txt
复制目录 cp -r source_dir target_dir
保留属性复制 cp -a source_dir target_dir
移动文件或目录 mv old_path new_path
重命名文件 mv old.txt new.txt
删除文件 rm file.txt
交互式删除文件 rm -i file.txt
删除空目录 rmdir empty_dir
删除非空目录 rm -r dir

注意

rm 删除后通常无法从命令行直接恢复。执行 rm -r、rm -rf 前请务必确认路径,尤其不要在变量为空或路径不确定时使用递归删除。

安全一点的删除示例:

rm -i result.txt
rm -r old_output/

15.1.5 文件搜索与内容检索

功能 命令示例
按文件名查找 find . -name "*.txt"
查找目录 find . -type d -name "logs"
查找普通文件 find . -type f
查找大文件 find . -type f -size +1G
查找最近修改文件 find . -type f -mtime -1
在文件中搜索文本 grep "keyword" file.txt
递归搜索文本 grep -R "keyword" .
显示匹配行号 grep -n "keyword" file.txt
忽略大小写搜索 grep -i "keyword" file.txt
统计匹配次数 grep -c "keyword" file.txt

如果系统安装了 rg,优先使用 rg,速度通常比 grep -R 更快:

rg "keyword"
rg -n "error|failed" logs/
rg --files

常见搜索场景:

# 查找当前目录下所有 .out 文件
find . -type f -name "*.out"

# 查找 1GB 以上的大文件
find . -type f -size +1G -ls

# 在日志中查找错误
grep -Rni "error" logs/

15.1.6 文件大小、磁盘空间与配额

功能 命令示例
查看文件系统空间 df -h
查看当前目录总大小 du -sh .
查看各子目录大小 du -h --max-depth=1
按大小排序目录 du -h --max-depth=1 | sort -h
查看文件大小排序 ls -lhS
查看 AFS 配额 fs listquota /afs/ihep.ac.cn/users/...
查看 Lustre 用户配额 lfs quota -u username /scratchfs
查看 Lustre 文件系统空间 lfs df -h /scratchfs

常用示例:

df -h
du -sh *
du -h --max-depth=1 | sort -h
fs listquota /afs/ihep.ac.cn/users/a/username
lfs quota -u username /scratchfs
lfs quota -u username /workfs

清理空间时,建议先定位大目录和大文件:

du -h --max-depth=1 ~ | sort -h
find . -type f -size +500M -ls

15.1.7 文件权限与属主

功能 命令示例
查看权限 ls -l file.sh
添加执行权限 chmod +x file.sh
设置文件权限为仅本人读写 chmod 600 file.txt
设置目录权限为仅本人访问 chmod 700 private_dir
设置文件所有人读写、其他人只读 chmod 644 file.txt
设置目录常用权限 chmod 755 dir
查看 ACL 权限 getfacl file_or_dir
设置 ACL 权限 setfacl -m u:username:rwx dir

权限数字常见含义:

权限 含义
7 读、写、执行
6 读、写
5 读、执行
4 只读
0 无权限

示例:

chmod +x run.sh
chmod 600 id_rsa
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
getfacl /workfs/group/project

15.1.8 文本编辑与文本处理

功能 命令示例
使用 vim 编辑 vim file.txt
使用 nano 编辑 nano file.txt
统计行数、词数、字节数 wc file.txt
只统计行数 wc -l file.txt
排序 sort file.txt
去重 uniq file.txt
排序后去重 sort file.txt | uniq
提取列 awk '{print $1}' file.txt
替换文本 sed 's/old/new/g' file.txt
比较两个文件 diff old.txt new.txt
查看二进制或特殊字符 od -c file.txt

常用示例:

# 查看文件前 20 行
head -n 20 data.txt

# 查看文件第 10 到 20 行
sed -n '10,20p' data.txt

# 提取第一列并去重
awk '{print $1}' data.txt | sort | uniq

# 统计日志中 error 出现次数
grep -i "error" job.log | wc -l

15.1.9 压缩、解压与打包

文件类型 解压命令
.tar tar -xvf file.tar
.tar.gz 或 .tgz tar -zxvf file.tar.gz
.tar.bz2 tar -jxvf file.tar.bz2
.tar.xz tar -Jxvf file.tar.xz
.gz gunzip file.gz
.zip unzip file.zip

打包压缩:

# 打包目录,不压缩
tar -cvf project.tar project/

# 打包并 gzip 压缩
tar -zcvf project.tar.gz project/

# 打包并排除某些目录
tar --exclude="*.tmp" --exclude="output/" -zcvf project.tar.gz project/

  zip 压缩目录
zip -r project.zip project/

查看压缩包内容:

tar -tf project.tar
tar -ztf project.tar.gz
unzip -l project.zip

注意

大量小文件会显著影响并行文件系统性能。长期保存或传输前,建议先用 tar 打包。

15.1.10 文件传输

功能 命令示例
从本地复制到集群 scp local.txt username@lxlogin.ihep.ac.cn:/path/
从集群复制到本地 scp username@lxlogin.ihep.ac.cn:/path/file.txt ./
复制目录 scp -r local_dir username@lxlogin.ihep.ac.cn:/path/
断点续传/同步目录 rsync -avP source/ target/
使用 sftp sftp username@lxlogin.ihep.ac.cn
下载网页文件 wget URL
下载网页文件 curl -O URL

常用示例:

# 上传文件
scp input.dat username@lxlogin.ihep.ac.cn:/workfs/group/username/

# 下载结果
scp username@lxlogin.ihep.ac.cn:/workfs/group/username/result.out ./

# 同步目录,适合大目录或网络不稳定场景
rsync -avP ./project/ username@lxlogin.ihep.ac.cn:/workfs/group/username/project/

# 只预览 rsync 会同步哪些内容
rsync -avP --dry-run ./project/ username@lxlogin.ihep.ac.cn:/workfs/group/username/project/

15.1.11 进程查看与管理

功能 命令示例
查看当前终端进程 ps
查看所有进程 ps -ef
查看自己的进程 ps -u username
按关键字查找进程 pgrep -af python
动态查看进程 top
动态查看进程 htop
结束进程 kill PID
强制结束进程 kill -9 PID
后台运行命令 command &
查看后台任务 jobs
将后台任务调回前台 fg %1
后台任务继续运行 bg %1

示例:

ps -u $USER
pgrep -af python
kill 12345
top -u $USER

注意

不要用 kill -9 作为默认选择。普通 kill PID 会给程序清理和退出的机会,只有进程无法正常结束时再使用 kill -9 PID。

15.1.12 系统资源查看

功能 命令示例
查看 CPU 和内存占用 top
查看内存使用 free -h
查看虚拟内存和系统负载 vmstat 1
查看磁盘 I/O iostat -x 1
查看 GPU 状态 nvidia-smi
持续刷新 GPU 状态 watch -n 1 nvidia-smi
查看登录用户 who
查看当前终端信息 w

示例:

free -h
top
nvidia-smi
watch -n 1 nvidia-smi

如果 iostat 或 htop 不存在,说明当前系统未安装对应工具,可使用 top、free 等基础命令替代。

15.1.13 网络与连接检查

功能 命令示例
测试主机连通性 ping hostname
查看路由路径 traceroute hostname
检查端口连通性 nc -vz hostname port
查看本机网络地址 ip addr
查看路由 ip route
查看监听端口 ss -lntp
查看所有 TCP 连接 ss -ant

示例:

ping lxlogin.ihep.ac.cn
nc -vz lxlogin.ihep.ac.cn 22
ss -lntp

15.1.14 SSH 与远程会话

功能 命令示例
SSH 登录 ssh username@lxlogin.ihep.ac.cn
指定端口登录 ssh -p 2222 username@hostname
指定私钥登录 ssh -i ~/.ssh/id_rsa username@hostname
开启 X11 转发 ssh -XYC username@hostname
生成 SSH 密钥 ssh-keygen -t ed25519
复制公钥到远端 ssh-copy-id username@hostname

示例:

ssh username@lxlogin.ihep.ac.cn
ssh -XYC username@lxlogin.ihep.ac.cn
ssh-keygen -t ed25519

长时间交互操作建议使用 tmux 或 screen,避免网络断开导致会话丢失:

# 新建 tmux 会话
tmux new -s work

# 重新连接 tmux 会话
tmux attach -t work

# 查看已有会话
tmux ls

注意

tmux 和 screen 适合保留编辑、编译、小规模调试等交互会话,不应替代作业系统运行正式计算任务。

15.1.15 软件环境与命令定位

功能 命令示例
查看环境变量 env
查看某个环境变量 echo $PATH
临时设置环境变量 export VAR=value
查看命令位置 which python
查看命令类型 type module
查看可执行文件依赖库 ldd program
查看当前 shell echo $SHELL
查看命令帮助 command --help
查看手册 man command

集群常用 module 管理软件环境:

# 查看可用软件
module avail

# 加载软件
module load python/3.7

# 查看已加载软件
module list

# 卸载软件
module unload python/3.7

# 清空已加载软件环境
module purge

# 查看模块说明
module help python/3.7

定位程序和动态库问题:

which python
python --version
ldd ./my_program
echo $LD_LIBRARY_PATH

15.1.16 AFS/Kerberos 认证相关

在 AFS 目录下读写文件时,可能需要有效 token。

功能 命令示例
获取 Kerberos 票据 kinit username
获取 AFS token aklog
查看 Kerberos 票据 klist
查看 AFS token tokens
删除 AFS token unlog
修改 Kerberos 密码 kpasswd

常用示例:

kinit username
aklog
klist
tokens

如果在 /afs 下无法写文件,可先检查:

tokens
fs listquota /afs/ihep.ac.cn/users/a/username
ls -ld /afs/ihep.ac.cn/users/a/username

15.1.17 Shell 历史、别名与脚本

功能 命令示例
查看历史命令 history
搜索历史命令 history | grep keyword
查看当前别名 alias
设置临时别名 alias ll='ls -lh'
取消别名 unalias ll
查看脚本执行过程 bash -x script.sh
检查脚本语法 bash -n script.sh

常用脚本开头:

 !/bin/bash
set -e
set -u

说明:

  • set -e:命令失败时退出脚本。
  • set -u:使用未定义变量时报错退出。

15.1.18 输入输出重定向与管道

功能 命令示例
输出写入文件,覆盖原文件 command > output.txt
输出追加到文件 command >> output.txt
错误输出写入文件 command 2> error.txt
标准输出和错误输出都写入文件 command > all.log 2>&1
管道连接命令 command1 | command2
同时显示并保存输出 command | tee output.txt
追加保存输出 command | tee -a output.txt

示例:

./run.sh > run.log 2>&1
grep -i error run.log | tail
./run.sh | tee run.log

15.1.19 常见日志排查命令

场景 命令示例
查看日志末尾 tail -n 100 job.out
实时跟踪日志 tail -f job.out
搜索错误 grep -i "error" job.out
搜索失败信息 grep -Ei "error|failed|fatal|killed" job.out
查看空输出文件 ls -lh job.out
查看最近生成的文件 ls -lt
查看程序退出码 echo $?

示例:

tail -n 100 slurm-12345.out
grep -Ei "error|failed|fatal|killed|oom" slurm-12345.out
ls -lt | head

常见关键词:

关键词 可能含义
No such file or directory 路径错误或输入文件不存在
Permission denied 权限不足或脚本不可执行
command not found 软件未加载或命令路径不在 PATH 中
Killed 可能超内存或被系统终止
out of memory / OOM 内存不足
Disk quota exceeded 磁盘配额已满

15.1.20 作业前后常用检查

提交作业前建议检查:

# 当前在哪个目录
pwd

# 输入文件是否存在
ls -lh input.dat

# 脚本是否有执行权限
ls -l run.sh
chmod +x run.sh

# 软件环境是否正确
module list
which python
python --version

# 存储空间是否足够
du -sh .
df -h .

作业结束后建议检查:

# 查看输出文件
ls -lh
tail -n 100 job.out

# 搜索错误
grep -Ei "error|failed|fatal|killed|oom" job.out

# 查看结果文件大小
du -sh output/

15.1.21 获取帮助

功能 命令示例
查看简短帮助 command --help
查看手册 man command
查看命令路径 which command
查看 shell 内建命令说明 help cd
查看 module 帮助 module help module_name

示例:

ls --help
man find
help cd
module help python/3.7

常见问题(FAQ)

见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流