Contents

Linux常用命令

参考资料

入门基础

常用操作

  • 关机和重启(推荐方式)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 先把内存中的数据写到磁盘中,防止数据丢失
sync

# 关机
shutdown -h now
# 或者
poweroff

# 重启
shutdown -r now
# 或者
reboot
  • 帮助命令
1
2
3
4
5
6
7
# 查看命令帮助
某指令 --help

# 查看完整手册(按 q 退出)
man 某指令
# 例如
man ls

目录操作

切换目录

1
2
3
4
5
cd /              # 回到根目录
cd /usr           # 切换到 /usr 文件夹
cd ../            # 切换到上一级目录
cd ~              # 切换到用户主目录 /home/username
cd -              # 切换到上次访问的目录

查看目录

1
2
3
4
ls                          # 查看当前目录下的所有文件和目录
ls /usr                     # 查看 /usr 目录
ls -a                       # 查看当前目录(包括隐藏文件)
ls -l 或者 ll               # 查看详细信息(权限、owner、group、时间等)

目录增删改

1
2
3
4
5
6
7
mkdir aaa               # 在当前目录下创建文件夹
mkdir /usr/aaa          # 在 /usr 目录下创建文件夹
mv 旧名称 新名称         # 重命名,也可用于移动文件
cp -r 源文件 目标位置    # 复制文件或目录
rm -rf 文件或目录        # 删除文件或目录(谨慎使用)
find /usr/tmp -name 'a*' # 查找 /usr/tmp 目录下以 a 开头的文件
tree                     # 以树形结构展示目录

文件操作

新建和删除

1
2
touch 文件名           # 新建文件
rm -rf 文件名          # 强制删除文件(谨慎使用)

编辑文件

推荐先安装 vim 编辑器:

1
2
3
sudo apt update
sudo apt upgrade
sudo apt install vim

vim 有三种模式:

1. 命令模式(Command Mode)

  • Esc 进入
  • dd:删除整行
  • x:删除单个字符
  • / + 字符:查找

2. 编辑模式(Insert Mode)

  • iao 进入
  • i:在当前光标前插入
  • a:在当前光标后插入
  • o:在当前行下方另起一行

3. 末行模式(Last Line Mode)

  • 输入 : 进入
  • wq!:保存并退出
  • q!:不保存直接退出

查看文件

1
2
3
4
cat 文件名         # 查看文件(内容过长只显示最后一屏)
more 文件名        # 分页查看,显示百分比;回车下一行,空格下一页,q 退出
less 文件名        # 翻页查看
tail -10 文件名    # 查看文件最后 10 行(Ctrl+C 退出)

修改权限

权限格式形如 -rwxr-xr--

1
2
3
4
5
6
- rwx r-x r--
↑  ↑   ↑   ↑
│  │   │   └── 其他用户权限 (r--)
│  │   └─────── 所属组权限 (r-x)
│  └─────────── 拥有者权限 (rwx)
└─────────────── 文件类型 (-)
  • 第 1 位:文件类型(-、d、l、b、c、s、p)
  • 第 2-4 位:拥有者权限(user)
  • 第 5-7 位:所属组权限(group)
  • 第 8-10 位:其他用户权限(other)
  • rwx:r 可读,w 可写,x 可执行
1
2
3
4
5
6
chmod 700 文件名    # 将权限改为 700(二进制 111,仅拥有者有所有权限)
chmod -R 700 目录   # 递归修改目录权限

# chmod 与 chown 的区别
chmod 文件名        # 修改访问权限
chown 用户:组 文件名 # 修改所有者和所属组

压缩与解压

概念

  • Windows:.zip 或 .rar
  • Linux 打包文件:.tar
  • Linux 压缩文件:.gz
  • Linux 打包并压缩:.tar.gz(或 .tgz)

打包压缩

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# tar.gz 格式
tar -zcvf 打包压缩后的文件名 要打包的文件夹
tar -zcvf mydir.tar.gz mydir/

# 参数说明
# -z:调用 gzip 压缩
# -c:创建压缩包
# -v:显示过程
# -f:指定文件名

# zip 格式(需先安装)
sudo apt update && sudo apt install -y zip
zip -r mydir.zip mydir/

解压

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# tar.gz 格式
tar -zxvf 压缩包 -C 目标目录
tar -zxvf mydir.tar.gz -C /document/mydir

# 参数说明
# -x:解压
# -v:显示过程
# -f:指定文件名

# zip 格式
unzip 压缩包.zip

查找命令

grep

1
2
ps -ef | grep 服务名        # 查找指定服务的进程
grep -rn "内容" 文件名       # 查找内容在文件中的行号

find

1
2
3
4
5
find . -name "*.log" -ls            # 查询 .log 文件并显示详情
find . -type f -name "*.log"        # 查询普通 .log 文件
find . -type d | sort               # 查询所有目录并排序
find . -size +100M                  # 查询大于 100M 的文件
find . -perm 600                     # 查询权限为 600 的文件

其他定位命令

1
2
3
whereis ls          # 定位可执行文件、源代码、帮助文件
which java          # 在 PATH 中搜索命令位置
who /var/log/wtmp   # 查看当前登录用户

用户管理

用户切换(su)

1
2
3
4
5
6
7
8
9
su - test           # 切换到 test 用户
su                  # 切换到 root 用户
exit                # 返回上一个用户
sudo passwd root    # 设置 root 密码

# 注意:
# - root 切换到普通用户无需密码
# - 普通用户切换到任何用户都需要密码
# - 切换前用户仍保持登录状态

临时提权(sudo)

普通用户可临时拥有 root 权限:

1
2
hadoop ALL=(ALL) ALL              # 允许使用所有 root 权限(需输入用户密码)
hadoop ALL=(NOPASSWD): /bin/ls, /bin/cat   # 仅允许执行 ls 和 cat(无需密码)

用户增删

1
2
sudo adduser 新用户名      # 新建用户(需重启生效)
sudo deluser 旧用户名      # 删除用户

系统服务

systemd(现代系统)

1
2
3
4
5
6
systemctl status 服务名     # 查看服务状态
systemctl start 服务名       # 启动服务
systemctl stop 服务名        # 停止服务
systemctl restart 服务名     # 重启服务
systemctl enable 服务名      # 设置开机启动
systemctl list-unit-files    # 查看所有服务

SysVinit(传统系统)

1
2
3
4
service iptables status
service iptables start
service iptables stop
service iptables restart

网络管理

主机名配置

1
vi /etc/hostname

域名映射

用于通过主机名访问时解析 IP 地址:

1
2
3
4
vi /etc/hosts
# 添加如下内容:
# IP地址1 主机名1
# IP地址2 主机名2

定时任务(crontab)

用于在固定间隔时间执行指定命令或脚本。

安装与启动

1
2
3
4
apt install cron
service cron start
service cron restart
service cron stop

常用命令

1
2
3
crontab file [-u user]    # 用指定文件替代当前 crontab
crontab -l [-u user]      # 列出当前 crontab
crontab -e [-u user]      # 编辑 crontab

格式说明

命令:* * * * * command
解释:分 时 日 月 周 命令

第 1 列表示分钟 1 ~ 59, 每分钟用 * 或者 */1 表示
第 2 列表示小时 0 ~ 23(0 表示 0 点)
第 3 列表示日期 1 ~ 31
第 4 列表示月份 1 ~ 12
第 5 列表示星期 0 ~ 6(0 表示星期天)
第 6 列为要运行的命令

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 每分钟执行一次 date 命令
*/1 * * * * date >> /root/date.txt

# 每晚 21:30 重启 apache
30 21 * * * service httpd restart

# 每月 1、10、22 日的 4:45 重启
45 4 1,10,22 * * service httpd restart

# 每周六、周日的 1:10 重启
10 1 * * 6,0 service httpd restart

# 每天 18:00-23:00 每隔 30 分钟重启
0,30 18-23 * * * service httpd restart

# 晚上 23 点到早上 7 点每小时重启
* 23-7/1 * * * service httpd restart

其他常用命令

基本操作

1
2
pwd                    # 查看当前目录
Ctrl + l               # 清屏

进程管理

1
2
3
ps -ef                 # 查看当前进程
kill -9 pid            # 杀死进程
top                    # 查看 CPU 和内存占用率(高负载进程排在顶部)

网络命令

1
2
3
4
5
ifconfig               # 查看网卡信息
ifconfig | more        # 分页查看
ping IP地址            # 检查与某台机器的连接
netstat -an            # 查看当前系统端口
netstat -nltp          # 查看端口(可配合 grep 筛选)

防火墙

1
2
3
4
5
6
7
8
# Ubuntu (ufw)
sudo ufw status
sudo ufw enable
sudo ufw disable

# CentOS/RHEL (firewalld)
firewall-cmd --permanent --add-port=8080/tcp  # 永久开放端口
firewall-cmd --reload                         # 重载配置

Vi 快捷键(在命令模式下)

1
2
3
4
5
6
Shift + G       # 跳到最后一行
Shift + Z Z     # 保存并退出
yy              # 复制一行
dd              # 删除一行
p               # 粘贴
u               # 撤销

后台运行

1
nohup 命令 &     # 后台运行

软件卸载

1
2
3
4
apt list | grep ???      # 查看已安装软件
dpkg -l                   # 列出所有已安装包
sudo apt --purge remove 软件名   # 卸载软件
sudo apt clean            # 清理缓存

环境变量

添加环境变量

方便调用命令,无需输入完整路径:

1
export PATH=/x/x/x/miniconda3/bin:$PATH
  • $PATH 表示取 PATH 变量的值,保留原有设置
  • 多个路径用 : 分隔
  • 路径顺序很重要,先找到的先使用
  • 以上设置仅在当前终端有效

设置全局有效

1
2
3
4
5
# 新建脚本文件
vi myenv.sh
# 写入:export OS_SOMETHING=default
# 保存后执行
source myenv.sh

查看环境变量

1
2
env | grep PATH
env | grep OS

重定向

输入重定向

1
2
3
命令 < 文件                    # 文件内容作为输入
命令 << 分界符                 # 从键盘输入直到分界符
命令 < 文件1 > 文件2           # 文件1 作为输入,结果输出到文件2

输出重定向

1
2
3
4
5
6
7
命令 > 文件         # 标准输出写入文件(覆盖)
命令 >> 文件        # 标准输出写入文件(追加)
命令 2> 文件        # 错误信息写入文件(覆盖)
命令 2>> 文件       # 错误信息写入文件(追加)
命令 >> 文件 2>&1   # 标准输出和错误信息都写入(追加)
# 或者
命令 &>> 文件

记忆口诀:双箭头追加、2 表示错误、2>&1 是固定写法

系统更新

1
2
3
4
5
# Debian 系(Ubuntu)
sudo apt update && sudo apt upgrade -y

# RHEL 系(CentOS)
sudo yum update --security

拓展与后续学习建议

  • 进程管理进阶:学习 pstophtop 等命令的更多用法,了解进程优先级和调度
  • 磁盘管理深入:学习 dfdulsblkfdiskparted 等命令,理解磁盘分区和文件系统
  • 网络诊断工具:学习 pingtraceroutenslookupdignetstatss 等网络工具
  • 日志管理:学习 journalctllogrotate 的配置,了解日志轮转策略
  • Shell 脚本进阶:学习正则表达式、sed、awk 等文本处理工具
  • 系统安全:学习 iptablesfirewalldSELinux 等安全配置