Linux基础命令学习记录

Linux 命令详解

1. 线上查询及帮助命令

man

  • 用法man 命令名
  • 功能:显示指定命令的手册页,提供详细的命令说明和选项。
  • 举例man ls 查看 ls 命令的手册。

help

  • 用法help 命令名
  • 功能:显示指定命令的简要帮助信息(通常为内置 shell 命令)。
  • 举例help cd 查看 cd 命令的帮助信息。

info

  • 用法info 命令名
  • 功能:显示指定命令的详细信息页面。
  • 举例info grep 查看 grep 命令的详细信息。

2. 文件和目录操作命令

ls

  • 用法ls [选项] [目录或文件]
  • 功能:列出目录内容。
  • 举例ls -l 以详细格式列出目录内容。

cd

  • 用法cd 目录
  • 功能:切换当前目录。
  • 举例cd /home 切换到 /home 目录。

cp

  • 用法cp [选项] 源文件 目标文件
  • 功能:复制文件或目录。
  • 举例cp file.txt /backupfile.txt 复制到 /backup 目录。

find

find linux 命令

  • 用法find [路径] [选项] [表达式]
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算:
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-depth:从指定目录下最深层的子目录开始查找;
-empty:寻找文件大小为0Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec<执行指令>:假设find指令的回传值为True,就执行该指令;
-maxdepth<目录层级>:设置最大目录层级;
-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-perm<权限数值>:查找符合指定的权限数值的文件或目录;
-size<文件大小>:查找符合指定的文件大小的文件;
-type<文件类型>:只寻找符合指定的文件类型的文件;

-exec <执行指令>
作用:假设 find 命令的返回值为 True,则执行指定的命令。
示例:查找当前目录下的所有 .txt 文件,并打印每个文件的内容。
find ./ -name "*.txt" -exec cat {} \;
  • 功能:在指定目录中搜索文件。

  • 举例find /home -name "*.txt" 查找 /home 下所有 .txt 文件。

    find /home -type f -name '*'
    
    find ./ -type f -mtime +7 -name "*.log"
    /app/logs/app_name/logs/:
    find ./ -type f -mmin -1 | xargs ls -l
    #在当前目录及其子目录中查找最后修改时间在 1 分钟以内的普通文件,并以详细格式列出这些文件的信息。
    - **`xargs ls -l`**:
      - `xargs` 是一个用于构建和执行命令行的工具,它会将输入的数据作为参数传递给指定的命令。
      - `ls -l` 是一个用于以详细格式列出文件信息的命令。
    
    find ./ -type f -perm 644
    
    ll -i
    find ./ -inum 234324 | xargs -i rm -rf {}
    - **`xargs -i rm -rf {}`**:
      - `-i` 选项表示将输入数据替换到命令中的 `{}` 占位符。
      - `rm -rf {}` 是要执行的命令,用于递归删除目标文件或目录。
    
    #统计代码行数,排除空行
    seq 100 > lnf.java #增量打印
    find ./ -name "*.java" | xargs cat | grep -v ^$ | wc -l
    

mkdir

  • 用法mkdir [选项] 目录
  • 功能:创建目录。
  • 举例mkdir -p /data/newdir 创建多级目录(递归)。

mv

  • 用法mv 源文件 目标文件
  • 功能:移动或重命名文件。
  • 举例mv old.txt new.txtold.txt 重命名为 new.txt

rm

  • 用法rm [选项] 文件
  • 功能:删除文件或目录。
  • 举例rm -rf /tmp/* 删除 /tmp 目录下的所有内容。

touch

  • 用法touch 文件
  • 功能:创建空文件或更新文件时间戳。
  • 举例touch newfile.txt 创建一个新文件。
touch test{1..100}
#模拟场景:拿到用户文件名,批量创建测试
ls > filename
cat filename | xargs touch

file

  • 用法file 文件
  • 功能:显示文件类型。
  • 举例file image.jpg 查看 image.jpg 的文件类型(不受文件名影响)。

tree

  • 用法tree [目录]

  • 功能:以树形结构列出目录内容。

  • 举例tree /etc 显示 /etc 目录的树形结构。

    tree -L 1 		#-L 层级显示
    

rename

  • 用法rename 旧模式 新模式 文件
  • 功能:批量重命名文件。
  • 举例rename .txt .md *.txt 将所有 .txt 文件重命名为 .md

basename

  • 用法basename 路径
  • 功能:提取文件名(写脚本)。
  • 举例basename /path/to/file.txt 输出 file.txt

dirname

  • 用法dirname 路径
  • 功能:提取目录名(写脚本)。
  • 举例dirname /path/to/file.txt 输出 /path/to

chattr

chattr命令详解:用来改变文件属性

  • 用法chattr [选项] 文件

  • 功能:更改文件属性。

  • 举例chattr +i /etc/fstab 设置文件系统挂载为不可修改。

    i:不得任意更动文件或目录;
    

lsattr

  • 用法lsattr [选项] 文件
  • 功能:显示文件属性。
  • 举例lsattr file.txt 查看 file.txt 的属性。

md5sum

  • 用法md5sum 文件
  • 功能:计算文件的 MD5 哈希值。
  • 举例:md5sum testfile > testfile.md5。
  • 校验:md5sum testfile -c testfile.md5

3. 查看文件及内容处理命令

vi/vim

  • 用法vi/vim 文件
  • 功能:使用 vi/vim 编辑器编辑文件。
  • 举例vim file.txt 用 vim 编辑 file.txt
vim在粘贴时会改变格式,vi不会
shift+zz强制保存

cat

  • 用法cat [选项] 文件
  • 功能:显示文件内容。
  • 举例cat file.txt 显示 file.txt 的内容。

more

  • 用法more 文件
  • 功能:分页显示文件内容。
  • 举例more file.txt 分页显示 file.txt 的内容。
  • 用法head [选项] 文件
  • 功能:显示文件的开头部分。
  • 举例head -n 10 file.txt 显示 file.txt 的前 10 行。

tail

  • 用法tail [选项] 文件
  • 功能:显示文件的末尾部分。
  • 举例tail -n 10 file.txt 显示 file.txt 的最后 10 行。

cut

  • 用法cut [选项] 文件
  • 功能:截取文件的指定列。
  • 举例cut -d: -f1,3 /etc/passwd 提取 /etc/passwd 的第 1 和第 3 列。

sort

  • 用法sort [选项] 文件

  • 功能:对文件内容进行排序。

  • 举例sort -n numbers.txtnumbers.txt 进行数值排序。

  • 场景:过滤网络TCP连接状态进行排序

    netstat -ant | awk 'NR>1{print $NF}' | sort | uniq -c | sort -nrk 1
    
    
    ### 命令解释:`netstat -ant | awk 'NR>1{print $NF}' | sort | uniq -c | sort -nrk 1`
    
    #### 组成部分
    - **`netstat -ant`**:
      - `netstat` 是一个用于显示网络连接、路由表、接口统计等网络信息的命令。
      - `-a` 选项显示所有连接和监听的端口。
      - `-n` 选项以数字形式显示地址和端口号,而不是尝试解析主机名或服务名称。
      - `-t` 选项显示 TCP 协议的连接。
    
    - **`awk 'NR>1{print $NF}'`**:
      - `awk` 是一个强大的文本处理工具,用于处理和分析文本数据。
      - `NR>1` 表示从第二行开始处理(跳过标题行)。
      - `$NF` 表示每行的最后一个字段(通常是连接状态)。
    
    - **`sort`**:
      - `sort` 命令用于对文本内容进行排序。
    
    - **`uniq -c`**:
      - `uniq` 命令用于去除重复行,`-c` 选项表示统计每个行的出现次数。
    
    - **`sort -nrk 1`**:
      - `sort` 命令用于对文本内容进行排序。
      - `-n` 表示按数值排序。
      - `-r` 表示降序排序。
      - `-k 1` 表示根据第一列进行排序。
    
    #### 命令作用
    该命令的作用是统计当前系统中每个 TCP 连接状态的出现次数,并按出现次数从高到低排序。
    
    #### 输出结果
    执行该命令时,输出结果是每个连接状态及其出现次数。例如:
    
    ```bash
          40 ESTABLISHED
          10 TIME_WAIT
           5 LISTEN
           3 CLOSE_WAIT
           2 SYN_SENT
    
    • 40 ESTABLISHED:表示有 40 个连接处于 ESTABLISHED 状态。
    • 10 TIME_WAIT:表示有 10 个连接处于 TIME_WAIT 状态。
    • 5 LISTEN:表示有 5 个连接处于 LISTEN 状态。
    • 3 CLOSE_WAIT:表示有 3 个连接处于 CLOSE_WAIT 状态。
    • 2 SYN_SENT:表示有 2 个连接处于 SYN_SENT 状态。

注意事项

- **权限**:`netstat -ant` 命令通常需要 root 权限才能显示所有网络连接信息。
- **输出解释**:
  - `ESTABLISHED`:连接已建立。
  - `TIME_WAIT`:连接处于等待关闭状态。
  - `LISTEN`:服务器正在监听某个端口。
  - `CLOSE_WAIT`:连接正在等待关闭。
- `SYN_SENT`:客户端已发送连接请求,等待服务器响应。





通过这个命令,可以快速了解系统中不同 TCP 连接状态的分布情况。

```bash
egrep -ir -A 2 'error' /var/log/mysqld.log

场景描述:排查报错原因,通过egrep过滤报错日志的关键字error或warning,并且显示后几行内容进行排查定位

```

命令解释:`egrep -ir -A 2 'error' /var/log/mysqld.log`
  
组成部分

- **`egrep`**:
  - `egrep` 是一个用于搜索文本的命令,支持扩展正则表达式。
- **`-i`**:
  - `-i` 选项表示忽略大小写,使搜索不区分大小写。
- **`-r`**:
  - `-r` 选项表示递归搜索,即在指定目录及其子目录中搜索。
- **`-A 2`**:
  - `-A` 选项表示在匹配行之后显示指定数量的行(这里是 2 行)。
- **`'error'`**:
  - 指定要搜索的模式,这里是字符串 `error`。
  • /var/log/mysqld.log
    • 指定搜索的文件路径,这里是 MySQL 的日志文件。

命令作用

该命令的作用是在 `/var/log/mysqld.log` 文件及其子目录(如果存在)中递归搜索包含 `error`(不区分大小写)的行,并显示每行匹配内容及其后的 2 行。

输出结果

执行该命令时,输出结果是文件中所有包含 error 的行及其后的 2 行,忽略大小写。例如:

uniq

  • 用法uniq [选项]
  • 功能:去除重复行。
  • 举例uniq file.txt 去除 file.txt 中的重复行。

wc

  • 用法wc [选项] 文件
  • 功能:统计文件的行数、词数和字节数。
  • 举例wc -l file.txt 统计 file.txt 的行数。

dos2unix

  • 用法dos2unix 文件
  • 功能:将文件从 DOS 格式转换为 Unix 格式。
  • 举例dos2unix file.txt 转换 file.txt 的格式。

grep

  • 用法grep [选项] 模式 文件
  • 功能:在文件中搜索指定模式。
  • 举例grep "error" log.txt 搜索服务中包含 "error" 的行。

egrep

grep命令详解:强大的文本搜索工具

  • 用法egrep [选项] 模式 文件
  • 功能:扩展正则表达式搜索。
  • 举例egrep "[0-9]" file.txt 搜索个性化包含数字的行。
cat /etc/passwd | egrep "^s.*n$"
egrep "^s.*n$" /etc/passwd
egrep -ri "\berror\b" /var/log/

tr

  • 用法tr [选项] 原字符集 新字符集
  • 功能:转换文件中的字符。
  • 举例tr 'A-Z' 'a-z' < file.txt 将文件中的大写字母转换为小写。

diff

  • 用法diff [选项] 文件1 文件2

  • 功能:比较两个文件的差异。

  • 举例diff file1.txt file2.txt 比较两个文件的差异。

vimdiff

  • 用法vimdiff 文件1 文件2

  • 功能:使用 vim 编辑器比较两个文件的差异。

  • 举例vimdiff file1.txt file2.txt 使用 vim 比较两个文件。

    #场景:备份文件快速同步
    dp
    

paste

  • 用法paste [选项] 文件1 文件2
  • 功能:合并文件的行。
  • 举例paste file1.txt file2.txt 合并两个文件的行。

iconv

  • 用法iconv [选项] -f 源编码 -t 目标编码 文件
  • 功能:转换文件的字符编码。
  • 举例iconv -f GBK -t UTF-8 file.txt 转换文件编码。

rev

  • 用法rev 文件
  • 功能:反转文件的行。
  • 举例rev file.txt 反转 file.txt 的每一行。

join

  • 用法join [选项] 文件1 文件2
  • 功能:合并两个文件的行。
  • 举例join file1.txt file2.txt 合并两个文件的行。

4. 文件压缩及解压缩命令

tar

  • 用法tar [选项] 文件
  • 功能:归档和解归档文件。
  • 举例tar -czvf archive.tar.gz dir/ 压缩目录为 tar.gz 文件。

unzip

  • 用法unzip 文件.zip
  • 功能:解压 ZIP 文件。
  • 举例unzip archive.zip 解压 archive.zip 文件。

gzip

  • 用法gzip [选项] 文件
  • 功能:压缩文件为 gzip 格式。
  • 举例gzip file.txt 压缩 file.txtfile.txt.gz

zip

  • 用法zip [选项] 压缩文件.zip 文件
  • 功能:压缩文件为 ZIP 格式。
  • 举例zip archive.zip file.txtfile.txt 压缩到 archive.zip

5. 信息显示命令

uname

  • 用法uname [选项]
  • 功能:显示系统信息。
  • 举例uname -a 显示所有系统信息。

hostname

  • 用法hostname [选项]
  • 功能:显示或设置主机名。
  • 举例hostname 显示当前主机名。
#扩展
提取网卡IP地址
ifconfig ens33 | awk 'NR==2'
ifconfig ens33 | awk 'NR==2{print $2}'
hostname -I | awk '{print $1}'

uptime

  • 用法uptime
  • 功能:显示系统运行时间。
  • 举例uptime 显示系统运行时间和负载。
#场景:如何查看负载,若负载为1(满了,如何解决),负载一般与cpu核数关联
#负载是代表整个系统的繁忙程度
使用top、uptime查看系统负载信息,若负载满了就用top查看具体是哪一个进程导致的。
找到问题后进行评估处理(联合开发)
系统处于可运行状态和不可中断状态的平均活跃进程数。就代表系统负载系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程

系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程,

还有一个叫计算型进程,还有一个叫ao型进程。只有这三点会导致这个负载比较高,但这属于性能分析,包括也比较比较深入的一个linux里面的一个问题

stat

  • 用法stat 文件
  • 功能:显示文件或文件系统的状态。
  • 举例stat file.txt 显示 file.txt 的详细信息。

du

  • 用法du [选项] 文件或目录
  • 功能:显示磁盘使用情况。
  • 举例du -sh /home 显示 /home 目录的磁盘使用情况。
-s, --summarize
    对每个参数只显示总和。
-h, --human-readable
    为每个数附加一个表示大小单位的字母
    
```bash
#场景(当磁盘空间不足时定位具体是哪个目录)
du -sh ./* | sort -hr
[root@Kanyun /]# du -sh | ./* 
-bash: ./bin: 是一个目录
du: 无法访问"./proc/52355/task/52355/fd/3": 没有那个文件或目录
4.5G    ./usr
1.6G    ./var
153M    ./boot
60M     ./etc
43M     ./root
13M     ./run
416K    ./tmp
28K     ./home
0       ./sys
0       ./srv

#解释
/var #日志
/usr #app
```

df

  • 用法df [选项]
  • 功能:显示文件系统的磁盘空间使用情况。
  • 举例df -h 显示所有文件系统的磁盘使用情况。
#场景:如果磁盘没满,但是无法创建文件了
用df -i 查看是否是inode满了
如果满了首先考虑在对应磁盘目录下删除一些空文件
find ./ -type f -empty
find ./ -type f -empty | xargs rm -rf
其次删除一些小文件
find ./ -type f -size +100k

top

  • 用法top
  • 功能:实时显示系统进程和资源使用情况。
  • 举例top 启动系统监控工具。
#场景
排查问题前,首先查看是否是系统资源瓶颈问题,使用top(系统负载、cup、进程信息)、df -h查看磁盘资源

date

  • 用法date [选项]
  • 功能:显示或设置系统日期和时间。
  • 举例date 显示当前日期和时间。

free

  • 用法free [选项]
  • 功能:显示系统的内存使用情况。
  • 举例free -h 显示系统的内存使用情况。
free
              total        used        free      shared  buff/cache   available
Mem:        3861288      711228     1486724       14752     1663336     2904900
Swap:       2097148           0     2097148
#读cache ->  
#写buffer  ->  I/O ->disk

dmesg

  • 用法dmesg [选项]
  • 功能:显示内核日志。
  • 举例dmesg 显示内核日志信息。

cal

  • 用法cal [选项]
  • 功能:显示日历。
  • 举例cal 显示当前月的日历。

6. 搜索图像文件命令

which

  • 用法which 命令名
  • 功能:显示命令的路径。
  • 举例which ls 显示 ls 命令的路径。

whereis

  • 用法whereis 命令名
  • 功能:显示命令的路径、源码和手册位置。
  • 举例whereis grep 显示 grep 命令的相关路径。

find

  • 用法find [路径] [选项] [表达式]
  • 功能:在指定目录中搜索文件。
  • 举例find /home -name "*.txt" 查找 /home 下所有 .txt 文件。
#场景:查找一个服务的所有日志文件
如果不知道日志文件名称,先搜xx日志,如:Nginx日志
find ./ -type f -name "*access.log" #不知道路径从根开始性能较差
find /var/log/nginx/  -type f -name "*access.log"

locate

  • 用法locate 文件名
  • 功能:快速查找文件(基于数据库)。
  • 举例locate file.txt 查找系统中所有名为 file.txt 的文件。

7. 用户管理命令

useradd

  • 用法useradd [选项] 用户名
  • 功能:添加新用户。
  • 举例useradd user1 添加用户 user1

userdel

  • 用法userdel [选项] 用户名
  • 功能:删除用户。
  • 举例userdel user1 删除用户 user1

passwd

  • 用法passwd [选项] 用户名
  • 功能:更改用户密码。
  • 举例passwd user1 更改用户 user1 的密码。

id

  • 用法id [选项] 用户名
  • 功能:显示用户的 ID 信息。
  • 举例id user1 显示用户 user1 的 UID 和 GID。

su

  • 用法su [选项] 用户名
  • 功能:切换用户身份。
  • 举例su - root 切换到 root 用户。

visudo

  • 用法visudo
  • 功能:编辑 sudo 权限配置文件。
  • 举例visudo 编辑 /etc/sudoers 文件。

sudo

  • 用法sudo [选项] 命令
  • 功能:以超级用户权限执行命令。
  • 举例sudo apt-get update 以 root 权限更新包列表。

usermod

  • 用法usermod [选项] 用户名
  • 功能:修改用户属性。
  • 举例usermod -g 1000 user1 更改用户 user1 的主组。

groupadd

  • 用法groupadd [选项] 组名
  • 功能:添加新组。
  • 举例groupadd group1 添加组 group1

chage

  • 用法chage [选项] 用户名
  • 功能:更改用户密码到期信息。
  • 举例chage -l user1 显示用户 user1 的密码到期信息。

8. 基础网络操作命令

telnet

  • 用法telnet [选项] 主机 [端口]
  • 功能:使用 Telnet 协议连接到远程主机。
  • 举例telnet example.com 23 连接到远程主机的 Telnet 服务。

nc

  • 用法nc [选项] 主机 端口
  • 功能:网络工具,用于读写网络连接。
  • 举例nc -l 1234 监听本地端口 1234。

ssh

  • 用法ssh [选项] 用户名@主机
  • 功能:安全地连接到远程主机。
  • 举例ssh user@example.com 连接到远程主机。

scp

  • 用法scp [选项] 源文件 用户名@主机:路径
  • 功能:安全地复制文件到远程主机。
  • 举例scp file.txt user@example.com:/home/user 复制文件到远程主机。

wget

  • 用法wget [选项] URL
  • 功能:从网络下载文件。
  • 举例wget http://example.com/file.txt 下载文件。

ping

  • 用法ping [选项] 主机
  • 功能:测试网络连接。
  • 举例ping example.com 测试与远程主机的连接。

ifconfig

  • 用法ifconfig [选项]
  • 功能:配置和显示网络接口。
  • 举例ifconfig 显示所有网络接口信息。

netstat

  • 用法netstat [选项]

  • 功能:显示网络连接和监听端口。

  • 常用-antu 、 -lnutp:查看监听端口

  • 举例:`netstat -lntu 显示所有监听的 TCP 和 UDP 端口。

    #过滤网络TCP连接状态
    netstat -antup | egrep ssh
    
    -a或--all:显示所有连线中的Socket;
    -l或--listening:显示监控中的服务器的Socket;
    -n或--numeric:直接使用ip地址,而不通过域名服务器;
    -p或--programs:显示正在使用Socket的程序识别码和程序名称;
    -t或--tcp:显示TCP传输协议的连线状况;
    -u或--udp:显示UDP传输协议的连线状况;
    
    

route

  • 用法route [选项]
  • 功能:显示和操作路由表。
  • 举例route -n 显示路由表。

ifup

  • 用法ifup 接口
  • 功能:启动指定网络接口。
  • 举例ifup eth0 启动 eth0 接口。

ifdown

  • 用法ifdown 接口
  • 功能:停止指定网络接口。
  • 举例ifdown eth0 停止 eth0 接口。

9. 深入网络操作命令

nmap

  • 用法nmap [选项] 主机
  • 功能:网络扫描工具。
  • 举例nmap example.com 扫描远程主机的开放端口。
#默认1~65535

lsof (List Open Files)

  • 用法lsof [选项]
  • 功能:显示打开的文件和网络连接(Linux一切皆文件)。
  • 举例lsof -i :80 显示监听 80 端口的进程。
lsof -i tcp
ps aux | egrep nginx
lsof | egrep nginx 
#解释
 /usr/sbin/nginx	#启动目录,下面的.so是一些依赖的系统共享库
 /dev/null   	#Linux黑洞
 - 用法:rm $badname 2>/dev/null,
 - 解释:https://blog.csdn.net/weixin_44388689/article/details/120705959
 

常见用法

查看所有打开的文件:lsof
查看特定进程打开的文件:lsof -p [PID]([PID] 为进程 ID)
查看特定用户打开的文件:lsof -u [用户名]
查看特定端口相关的进程:lsof -i :[端口号]
查看特定文件系统上的打开文件:lsof [文件系统路径]

nslookup

  • 用法nslookup [选项] 域名
  • 功能:查询 DNS 信息。
  • 举例nslookup example.com 查看域名的 DNS 记录。
nslookup www.baidu.com

Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
Name:   www.baidu.com
Address: 39.156.70.239
Name:   www.baidu.com
Address: 39.156.70.46
Name:   www.baidu.com
Address: 2409:8c00:6c21:118b:0:ff:b0e8:f003
Name:   www.baidu.com
Address: 2409:8c00:6c21:11eb:0:ff:b0bf:59ca
说明通过域名服务器的53端口进行解析
抓包
 tcpdump -i any port 53 -nn
#场景:DNS解析超时
第一,你检查你自己的DNS有没有配置`vim /etc/resolv.conf`
#法二,strace
strace -e open,connect,socket nslookup www.baidu.com
#so都是系统文件不用关注,查看打开了其他哪些文件,然后进行下一步

dig

  • 用法dig [选项] 域名
  • 功能:查询 DNS 信息。
  • 举例dig example.com 查看域名的 DNS 记录。

traceroute

  • 用法traceroute [选项] 主机
  • 功能:跟踪数据包的路由路径(排除故障时用)。
  • 举例traceroute example.com 显示到远程主机的路由路径。
#场景:做压力测试,机房把请求清洗了,用traceroute查看是在哪一个路由器处理故障,进行处理

mtr

tcpdump

  • 用法tcpdump [选项]
  • 功能:网络流量捕获和分析的命令行工具(网络抓包工具)。
  • 举例tcpdump -i eth0 抓取 eth0 接口的网络数据包。
#tty1
tcpdump -i any not arp and not port 22 -w dns.pcap
-i  interface,指定tcpdump 需要监听的接口.  
-w  把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.
    
sz dns.capa
拖入wireshark,选择DNS或TCP协议包,分析追踪流。
如DNS查看应答的域名解析ip,进行访问查看进一步分析
tcpdump -r dns.pcap  #将封装包数据进行读入并分析、打印

#tty2
#  ping www.baidu.com
#  traceroute www.baidu.com

nslookup www.baidu.com #查看DNS域名解析是否成功(域名解析正常,但并不保证网站实际上线)
nc -v www.baidu.com 80  #测试网络是否在线(80:http,443:https)
# Wireshark过滤策略
tcp.port==80
ip.addr==192.168.109.3 and udp.port==53

mail

  • 用法mail [选项]
  • 功能:发送和接收电子邮件。
  • 举例mail user@example.com 发送邮件。

mutt

  • 用法mutt [选项]
  • 功能:文本模式的邮件客户端。
  • 举例mutt -s "Subject" user@example.com 发送邮件。

host

  • 用法host [选项] 域名
  • 功能:查询域名的 DNS 记录。
  • 举例host example.com 查看域名的 DNS 记录。

10. 有关磁盘与文件系统的命令

mount

  • 用法mount [选项] 设备 挂载点

  • 功能:挂载文件系统。

  • 举例mount /dev/sdb1 /mnt 挂载 /dev/sdb1/mnt

    #场景
    如果公司让你去买一台服务器,你买了这个服务器以后,你得问一下需求,要不要再去买一张新的磁盘?如果是默认的磁盘,它是不会存在这个分区的过程,如果是新的磁盘,你就要去分区格式化挂载这个过程
    

umount

  • 用法umount [选项] 挂载点或设备
  • 功能:卸载已挂载的文件系统。
  • 举例umount /mnt 卸载 /mnt 挂载点。

df

#场景,系统资源监控报警脚本
df -h | awk '/boot/{print $5}' | sed -r 's#%##g'
used=$(df -h | awk '/boot/{print $5}' | sed -r 's#%##g')
[ $used -gt 18 ] && echo "Warning" || echo "normol"

#扩展(监控/)
df -h | awk '$NF == "/"{print $5}' | sed -r 's#%##g'

#解释
$NF:awk 中的 $NF 表示当前行的最后一个字段(NF 是字段总数,$NF 是最后一个字段的内容)。在 df -h 的输出中,最后一个字段是挂载点。
== "/":精确匹配最后一个字段是否等于 /。
s#%##g 详解
s:表示替换操作。
#:分隔符。sed 默认使用 / 作为分隔符,但也可以用其他字符代替,以避免和模式中的 / 冲突。这里使用 # 作为分隔符。
%:模式,表示要匹配的内容是 % 符号。
#:第二个分隔符,分隔模式和替换内容。
#:替换内容为空,表示将匹配到的 % 替换为空字符串。
g:全局替换标志,表示替换每一行中所有匹配的 %。

fdisk

  • 用法fdisk [选项] 设备
  • 功能:磁盘分区工具。
  • 举例fdisk /dev/sda 管理 /dev/sda 的分区。

resize2fs

  • 用法resize2fs [选项] 设备
  • 功能:调整文件系统大小。
  • 举例resize2fs /dev/sda1 调整 /dev/sda1 的文件系统大小。
- **`fsck`**:
  - **用法**:`fsck [选项] 设备`
  - **功能**:检查和修复文件系统。
  - **举例**:`fsck /dev/sdb1` 检查和修复 `/dev/sdb1` 文件系统。
  
- **`dd`**:
  - **用法**:`dd [选项] if=输入文件 of=输出文件`
  - **功能**:转换和复制文件。
  - **举例**:`dd if=/dev/sda of=/dev/sdb` 复制磁盘内容。
  
- **`dumpe2fs`**:
  - **用法**:`dumpe2fs [选项] 设备`
  - **功能**:显示 ext2/ext3/ext4 文件系统的信息。
  - **举例**:`dumpe2fs /dev/sda1` 显示 `/dev/sda1` 的文件系统信息。
  
- **`dump`**:
  - **用法**:`dump [选项] 文件系统`
  - **功能**:备份文件系统。
  - **举例**:`dump -0u /dev/sda1` 备份 `/dev/sda1` 文件系统。
    
- **`parted`**:
  - **用法**:`parted [选项] 设备`
  - **功能**:磁盘分区工具。
  - **举例**:`parted /dev/sda` 管理 `/dev/sda` 的分区。
  
- **`mkfs`**:
  - **用法**:`mkfs [选项] 设备`
  - **功能**:创建文件系统。
  - **举例**:`mkfs.ext4 /dev/sdb1` 在 `/dev/sdb1` 上创建 ext4 文件系统。
  
- **`partprobe`**:
  - **用法**:`partprobe [选项] 设备`
  - **功能**:通知内核分区表已更改。
  - **举例**:`partprobe /dev/sda` 通知内核 `/dev/sda` 的分区表已更改。
  
- **`e2fsck`**:
  - **用法**:`e2fsck [选项] 设备`
  - **功能**:检查和修复 ext2/ext3/ext4 文件系统。
  - **举例**:`e2fsck /dev/sda1` 检查和修复 `/dev/sda1` 文件系统。
  
- **`mkswap`**:
  - **用法**:`mkswap [选项] 设备`
  - **功能**:创建 swap 分区。
  - **举例**:`mkswap /dev/sdb1` 在 `/dev/sdb1` 上创建 swap 分区。
  
- **`swapon`**:
  - **用法**:`swapon [选项] 设备`
  - **功能**:启用 swap 分区。
  - **举例**:`swapon /dev/sdb1` 启用 `/dev/sdb1` 作为 swap 分区。
  
- **`sync`**:
  - **用法**:`sync`
  - **功能**:同步文件系统。
  - **举例**:`sync` 同步所有挂起的 I/O 操作。

11. 关机和查看系统信息的命令

shutdown

  • 用法shutdown [选项] 时间
  • 功能:关机或重启系统。
  • 举例shutdown -h now 立即关机。

halt

  • 用法halt
  • 功能:立即关机。
  • 举例halt 关闭系统。

init

  • 用法init [选项]
  • 功能:更改系统的运行级别。
  • 举例init 0 关机。

12. 系统管理相关命令

uptime

  • 用法uptime
  • 功能:显示系统运行时间。
  • 举例uptime 显示系统运行时间和负载
[root@Kanyun /]# uptime
 01:20:20 up 51 min,  2 users,  load average: 0.00, 0.02, 0.05
#使用场景
检查系统运行时长,判断系统是否需要重启。
查看系统负载,评估系统性能和压力。
监控服务器状态,用于系统管理和故障排查。
在自动化脚本中获取系统运行时间和负载信息。

#解释
系统负载表示任务队列中等待 CPU 的任务数。负载值低于 CPU 核心数表示系统运行良好,高于核心数则可能表示系统压力较大。

top

  • 用法top
  • 功能:显示系统进程和资源使用情况。
  • 举例top 启动系统监控工具。

free

  • 用法free [选项]
  • 功能:显示系统的内存使用情况。
  • 举例free -h 显示系统的内存使用情况。

vmstat

  • 用法vmstat [选项]
  • 功能:报告虚拟内存统计信息。
  • 举例vmstat 1 每秒更新一次虚拟内存统计信息。
#场景:通过vmstat查看系统进程是否处于竞争调度
[root@Kanyun /]vmstat 2 5   #每二秒显示一次系统内存的统计信息,总共5次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 2275432   1080 751680    0    0    16    11   91  100  0  0 99  0  0
 0  0      0 2276216   1080 751764    0    0     0    32  479  505  0  0 100  0  0
 0  0      0 2275400   1080 751848    0    0     0    58  794  874  0  1 99  0  0
 0  0      0 2276556   1080 751888    0    0     0    65  799  847  0  1 99  0  0
 0  0      0 2276968   1080 751972    0    0     0    32  456  500  0  0 100  0  0

[root@Kanyun /]# lscpu | egrep CPU
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                8
On-line CPU(s) list:   0-7
CPU 系列:          6
CPU MHz:             2304.008
NUMA 节点0 CPU:    0-7
#解释:只有8颗CPU,当我的这个进程数达到8的时候,系统负载满,系统已经处于资源竞争的一个状态,进程队列已经满了,满了就会竞争、调度、会阻塞,比较慢。

mpstat

  • 用法mpstat [选项]
  • 功能:报告每个处理器的使用情况。
  • 举例mpstat -P ALL 显示所有处理器的使用情况。
[root@Kanyun /]# mpstat -P ALL
Linux 3.10.0-1160.el7.x86_64 (Kanyun)   2025年05月17日  _x86_64_        (8 CPU)

01时34分54秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时34分54秒  all    0.03    0.00    0.47    0.01    0.00    0.03    0.00    0.00    0.00   99.46
01时34分54秒    0    0.05    0.00    0.34    0.01    0.00    0.06    0.00    0.00    0.00   99.54
01时34分54秒    1    0.03    0.00    0.60    0.00    0.00    0.02    0.00    0.00    0.00   99.34
.....

#使用场景
CPU 性能监控 :查看每个 CPU 核心的使用情况,包括用户空间、系统空间、空闲等状态。
性能瓶颈分析 :确定是否存在特定 CPU 核心过载或空闲的情况。
负载均衡检查 :在多核系统中,检查负载是否均匀分布在各个 CPU 核心上。
系统调优 :根据 CPU 使用情况调整系统配置或任务分配。

iostat

  • 用法iostat [选项]
  • 功能:报告 CPU 使用情况和 I/O 设备统计使用情况。
  • 举例iostat 2 每两秒更新一次 I/O 统计信息。
#注意事项
输出结果会随系统负载变化而变化,需结合多次采样综合分析。
%iowait 值较高可能表明磁盘 I/O 存在瓶颈。
%idle 值较低且 %user 或 %system 值较高可能表示 CPU 资源紧张。
可通过指定设备名(如 iostat -x sda)获取更详细的统计信息。
在分析数据时,需结合系统实际应用场景和其他性能监控工具的结果

sar

  • 用法sar [选项]
  • 功能:报告系统活动统计信息。
  • 举例sar -u 显示 CPU 使用情况。

chkconfig

  • 用法chkconfig [选项] 服务名
  • 功能:管理服务的启动配置。
  • 举例chkconfig sshd on 设置 sshd 服务开机启动。

13. 系统安全相关命令

chmod

  • 用法chmod [选项] 模式 文件
  • 功能:更改文件的权限。
  • 举例chmod 755 file.txt 设置 file.txt 的权限为 rwxr-xr-x
#场景(更改文件/目录权限)
默认:文件644,目录755
[root@Kanyun lnf_test]# stat ./lnf
  文件:"./lnf"
  大小:325             块:8          IO 块:4096   普通文件
设备:fd00h/64768d      Inode:17619675    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)

[root@Kanyun lnf_test]# stat test/
  文件:"test/"
  大小:142             块:0          IO 块:4096   目录
设备:fd00h/64768d      Inode:34523728    硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
#每个权限位由3个二进制数组成,最大表示111:7(rwx)

#注
一般会给脚本一个执行权限
- chmod + x file
- chmod 755 file

chown

  • 用法chown [选项] 用户:组 文件
  • 功能:更改文件的所有者和组。
  • 举例chown user1:group1 file.txt 更改 file.txt 的所有者和组。
#场景
useradd test
chown test.test file

sudo

  • 用法sudo [选项] 命令
  • 功能:以超级用户权限执行命令。
  • 举例sudo apt-get update 以 root 权限更新包列表。
#拥有所有权限
需要先用root用户在visudo中添加指定用户的sudo权限
visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test    ALL=(ALL)       ALL

[test@Kanyun root]$ sudo -l

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] test 的密码:
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR
    LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
    LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 test 可以在 Kanyun 上运行以下命令:
    (ALL) ALL

chgrp

  • 用法chgrp [选项] 组 文件
  • 功能:更改文件的组。
  • 举例chgrp group1 file.txt 更改 file.txt 的组。

chage

  • 用法chage [选项] 用户名
  • 功能:更改用户密码到期信息。
  • 举例chage -l user1 显示用户 user1 的密码到期信息。

passwd

  • 用法passwd [选项] 用户名
  • 功能:更改用户密码。
  • 举例passwd user1 更改用户 user1 的密码。

su

  • 用法su [选项] 用户名
  • 功能:切换用户身份。
  • 举例su - root 切换到 root 用户。
特性 su root su - root
环境变量 不改变,保留当前用户的环境变量 改变,加载 root 用户的环境变量
当前工作目录 保持不变 切换到 root 用户的主目录
配置文件加载 不加载 root 用户的配置文件 加载 root 用户的配置文件
使用场景 临时以 root 权限执行命令 完全切换到 root 用户环境

umask

  • 用法umask [选项]
  • 功能:显示或设置文件创建掩码。
  • 举例umask 显示当前的文件创建掩码。

chattr

  • 用法chattr [选项] 文件
  • 功能:更改文件属性。
  • 举例chattr +i file.txt 设置文件为不可修改。

lsattr

  • 用法lsattr [选项] 文件
  • 功能:显示文件属性。
  • 举例lsattr file.txt 显示 file.txt 的属性。

14. 查看系统用户登陆信息的命令

whoami

  • 用法whoami
  • 功能:显示当前用户的身份。
  • 举例whoami 显示当前登录的用户名。

who

  • 用法who
  • 功能:显示当前登录的用户信息。
  • 举例who 显示当前登录的用户列表。

w

  • 用法w
  • 功能:显示当前登录的用户和系统信息。
  • 举例w 显示当前登录的用户和系统负载。

last

  • 用法last
  • 功能:显示用户的登录历史。
  • 举例last 显示所有用户的登录历史。
last -n 5 #显示最近五次

lastlog

  • 用法lastlog
  • 功能:显示所有用户的最后登录信息。
  • 举例lastlog 显示所有用户的最后登录时间。

users

  • 用法users
  • 功能:显示当前登录的用户列表。
  • 举例users 显示当前登录的用户列表。

finger

  • 用法finger [选项] 用户名
  • 功能:显示用户的信息。
  • 举例finger user1 显示用户 user1 的详细信息。

15. 其它命令

echo

  • 用法echo [选项] 文本

  • 功能:输出文本。

  • 举例echo "Hello, World!" 输出 Hello, World!

  • 单引号:所见所得
    双引号:解析变量
    echo -e "hello \n 133"
    -e :启用转义(默认-E不启用)
    
    

rpm

  • 用法rpm [选项] 包名
  • 功能:管理 RPM 包。
  • 举例rpm -ivh package.rpm 安装 RPM 包。
#常用
rpm -qa | egrep Nginx #查询
rpm -e Nginx.....  #删除
rpm -ivh Nginx.....  #安装
rpm -ql Nginx  #显示安装目录 
yum remove Nginx

#注:为什么用yum而不用rpm包安装
yum可自动解决依赖问题
rpm一般在无网环境使用

-a:查询所有套件;
-e<套件档>或--erase<套件档>:删除指定的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-v:显示指令执行过程;
-l:显示套件的文件列表;

yum

  • 用法yum [选项]
  • 功能:Yellowdog Updater Modified,用于管理 RPM 包。
  • 举例yum install package 安装包。

watch

  • 用法watch [选项] 命令
  • 功能:定期执行指定命令并显示输出。
  • 举例watch -n 2 uptime 每两秒显示一次系统运行时间。
watch -d uptime
-d 或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。

date

  • 用法date [选项]
  • 功能:显示或设置系统日期和时间。
  • 举例date 显示当前日期和时间。
#场景1:当date显示时间错误时,同步网络时间
- 手动设置:date -s "2024-11-15 14:30:00"

- 网络同步:
[root@Kanyun ~]# ll /etc/localtime (查看时区,默认北美洲)
lrwxrwxrwx 1 root root 33 May 11 19:30 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
#如果不是Shanghai需要修改
unlink /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
crontab -e
*/5 * * * * ntpdate ntp1.aliyun.com
crontab -l
ntpdate ntp1.aliyun.com
date

#场景描述
描述一个故障,在搭建整个监控系统,落地时发现偶尔有部分的节点监控数据异常,抓不到。最后,经过排查我们发现,部分节点没有进行时间同步,所以在落地整个监控系统的时候,必要的条件是实现所有节点的时间同步。我们有一个自建的时间同步服务器,也有一个备用的公网的时间同步。实现这个可用性,保证所有的节点五分钟执行一次
#场景2:用于编写脚本(文件时间戳)
date +%F-%T	#年月日+时分秒
cp -r test test_bak$(date +%F-%T | sed -r 's#:#-#g')
- test_bak2025-05-16-19-22-59

#场景3:时间戳(脚本处理)
date +%s

clear

  • 用法clear
  • 功能:清除终端屏幕。
  • 举例clear 清除终端屏幕。

history

  • 用法history
  • 功能:显示命令历史。
  • 举例history 显示最近执行的命令列表。
history 5 #显示最近5条
history -d <指定行号>	#删除某条记录 
-c 清除记录
-d<编号>[n] 删除指定n条记录

#	history家目录日志
[root@Kanyun ~]# cat .bash_history

nohup

  • 用法nohup 命令
  • 功能:忽略挂起信号运行命令。
  • 举例nohup long_process.sh 在后台运行长时间进程。
#场景:日志后台记录
vim dates.sh

#!/bin/bash
tmp="./tmp"
touch $tmp 	#确保文件存在
while true
do
	now=$(date)"
	echo "now:$now" >> $tmpe
	sleep 1
done

sh dates.sh
nohup sh dates.sh &	#后台运行(终端关闭不影响)
日志文件输出在./nohup.out
pa aux | egrep dates.sh
kill <进程号>

xargs

  • 用法xargs [选项] 命令
  • 功能:构建和执行命令(将前面的标准输出作为后边命令的参数)。
  • 举例ls | xargs rm 删除列出的文件。
#场景:为/etc/passwd中的每一个用户创建一个目录
cat /etc/passwd | awk -F: '{print $1}' | xargs mkdir -p
cat /etc/passwd | awk -F: '{print $1}' | xargs -n 4 |column -t #按几列输出
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:,默认的分隔符是连续的空格或制表符

time

  • 用法time 命令
  • 功能:测量命令的执行时间。
  • 举例time ls -l 测量 ls -l 的执行时间。

bc/expr

  • 用法bc [选项]
  • 功能:计算器(写脚本时用于计算)。
  • 举例echo "2+2" | bc 计算 2+2

printf

  • 用法printf [选项] 格式字符串
  • 功能:格式化输出。
  • 举例printf "Hello, %s\n" "World" 输出 Hello, World

alias

  • 用法alias [选项] 别名=命令
  • 功能:创建命令别名。
  • 举例alias ll='ls -l' 创建 ll 作为 ls -l 的别名。

unalias

  • 用法unalias 别名
  • 功能:删除命令别名。
  • 举例unalias ll 删除 ll 别名。

eject

  • 用法eject [选项] 设备
  • 功能:弹出介质。
  • 举例eject /dev/cdrom 弹出光盘。

nc

  • 用法nc [选项] 主机 端口
  • 功能:网络工具,用于读写网络连接。
  • 举例nc -l 1234 监听本地端口 1234。

exec

  • 用法exec [选项] 命令
  • 功能:执行命令。
  • 举例exec cat file.txt 执行 cat file.txt

export

  • 用法export 变量名=值
  • 功能:设置环境变量。
  • 举例export PATH=$PATH:/new/path 添加新路径到环境变量。

unset

  • 用法unset 变量名
  • 功能:删除变量或函数。
  • 举例unset var1 删除变量 var1

type

  • 用法type 命令名
  • 功能:显示命令的类型。
  • 举例type ls 显示 ls 命令的类型。

16. 系统性能监视高级命令

top

  • 用法top
  • 功能:显示系统进程和资源使用情况。
  • 举例top 启动系统监控工具。

free

  • 用法free [选项]
  • 功能:显示系统的内存使用情况。
  • 举例free -h 显示系统的内存使用情况。

vmstat

  • 用法vmstat [选项]
  • 功能:报告虚拟内存统计信息。
  • 举例vmstat 1 每秒更新一次虚拟内存统计信息。

mpstat

  • 用法mpstat [选项]
  • 功能:报告每个处理器的使用情况。
  • 举例mpstat -P ALL 显示所有处理器的使用情况。

iostat

  • 用法iostat [选项]
  • 功能:报告 CPU 和 I/O 使用情况。
  • 举例iostat 2 每两秒更新一次 I/O 统计信息。

sar

  • 用法sar [选项]
  • 功能:报告系统活动统计信息。
  • 举例sar -u 显示 CPU 使用情况。

ipcs

  • 用法ipcs [选项]
  • 功能:报告 IPC 对象的状态。
  • 举例ipcs -a 显示所有 IPC 对象。

ipcrm

  • 用法ipcrm [选项]
  • 功能:删除 IPC 对象。
  • 举例ipcrm -m 1234 删除消息队列 1234。

lsof

  • 用法lsof [选项]
  • 功能:显示打开的文件和网络连接。
  • 举例lsof -i :80 显示监听 80 端口的进程。

strace

  • 用法strace [选项] 命令
  • 功能:跟踪系统调用。
  • 举例strace ls 跟踪 ls 命令的系统调用。

ltrace

  • 用法ltrace [选项] 命令
  • 功能:跟踪库函数调用。
  • 举例ltrace ls 跟踪 ls 命令的库函数调用。

vmstat

  • 用法vmstat [选项]
  • 功能:报告虚拟内存统计信息。
  • 举例vmstat 1 每秒更新一次虚拟内存统计信息。

runlevel

  • 用法runlevel
  • 功能:显示当前运行级别。
  • 举例runlevel 显示当前运行级别。

init

  • 用法init [选项]
  • 功能:更改系统的运行级别。
  • 举例init 3 更改运行级别为 3。

service

  • 用法service 服务名 [选项]
  • 功能:管理系统服务。
  • 举例service apache2 start 启动 apache2 服务。

17. 关机/重启/注销命令

shutdown

  • 用法shutdown [选项] 时间
  • 功能:关机或重启系统。
  • 举例shutdown -r now 立即重启系统。

init

  • 用法init [选项]
  • 功能:更改系统的运行级别。
  • 举例init 0 关机。

halt

  • 用法halt
  • 功能:立即关机。
  • 举例halt 关闭系统。

poweroff

  • 用法poweroff
  • 功能:立即关机。
  • 举例poweroff 关闭系统。

reboot

  • 用法reboot
  • 功能:立即重启系统。
  • 举例reboot 重启系统。

logout

  • 用法logout
  • 功能:退出当前会话。
  • 举例logout 退出当前登录会话。

exit

  • 用法exit
  • 功能:退出当前会话。
  • 举例exit 退出当前登录会话。

Ctrl+D

  • 用法:按下 Ctrl+D
  • 功能:快捷键退出当前会话。
  • 举例:在终端中按下 Ctrl+D 退出当前会话。

18. 进程管理

bg

  • 用法bg [作业号]
  • 功能:将作业放到后台运行。
  • 举例bg 1 将作业 1 放到后台运行。

fg

  • 用法fg [作业号]
  • 功能:将作业放到前台运行。
  • 举例fg 1 将作业 1 放到前台运行。

jobs

  • 用法jobs
  • 功能:显示后台作业列表。
  • 举例jobs 显示当前的后台作业。

kill

  • 用法kill [选项] 进程号
  • 功能:发送信号到进程。
  • 举例kill 1234 向进程 1234 发送终止信号。

killall

  • 用法killall [选项] 进程名
  • 功能:向所有同名进程发送信号。
  • 举例killall httpd 向所有 httpd 进程发送终止信号。

pkill

  • 用法pkill [选项] 模式
  • 功能:根据模式匹配进程名并发送信号。
  • 举例pkill httpd 向所有 httpd 进程发送终止信号。

crontab

  • 用法crontab [选项]
  • 功能:设置定时任务。
  • 举例crontab -e 编辑当前用户的定时任务。

ps

  • 用法ps [选项]
  • 功能:显示进程状态。
  • 举例ps aux 显示所有进程。

pstree

  • 用法pstree [选项]
  • 功能:以树形结构显示进程。
  • 举例pstree 显示进程树。

top

  • 用法top
  • 功能:显示系统进程和资源使用情况。
  • 举例top 启动系统监控工具。

nice

  • 用法nice [选项] 命令
  • 功能:设置进程的优先级。
  • 举例nice -n 10 command 设置命令的优先级为 10。

nohup

  • 用法nohup 命令
  • 功能:忽略挂起信号运行命令。
  • 举例nohup long_process.sh 在后台运行长时间进程。

pgrep

  • 用法pgrep [选项] 模式
  • 功能:查找匹配条件的进程。
  • 举例pgrep httpd 查找所有 httpd 进程。

strace

  • 用法strace [选项] 命令
  • 功能:跟踪系统调用。
  • 举例strace ls 跟踪 ls 命令的系统调用。

ltrace

  • 用法ltrace [选项] 命令
  • 功能:跟踪库函数调用。
  • 举例ltrace ls 跟踪 ls 命令的库函数调用。

vmstat

  • 用法vmstat [选项]
  • 功能:报告虚拟内存统计信息。
  • 举例vmstat 1 每秒更新一次虚拟内存统计信息。

runlevel

  • 用法runlevel
  • 功能:显示当前运行级别。
  • 举例runlevel 显示当前运行级别。

init

  • 用法init [选项]
  • 功能:更改系统的运行级别。
  • 举例init 3 更改运行级别为 3。

service

  • 用法service 服务名 [选项]
  • 功能:管理系统服务。
  • 举例service apache2 start 启动 apache2 服务。

19. 非常危险的系统命令

mv

  • 用法mv 源文件 目标文件
  • 功能:移动或重命名文件。
  • 举例mv /data/* /backup/data 目录下的所有文件移动到 /backup

rm

  • 用法rm [选项] 文件
  • 功能:删除文件或目录。
  • 举例rm -rf /data 删除 /data 目录及其内容。

fdisk

  • 用法fdisk [选项] 设备
  • 功能:磁盘分区工具。
  • 举例fdisk /dev/sda 管理 /dev/sda 的分区。

parted

  • 用法parted [选项] 设备
  • 功能:磁盘分区工具。
  • 举例parted /dev/sda 管理 /dev/sda 的分区。

dd

  • 用法dd [选项] if=输入文件 of=输出文件
  • 功能:转换和复制文件。
  • 举例dd if=/dev/zero of=/dev/sda 清空 /dev/sda 磁盘内容。

20. Linux 系统四位剑客

grep

  • 用法grep [选项] 模式 文件
  • 功能:在文件中搜索指定模式。
  • 举例grep "error" log.txt 搜索程序中包含 "error" 的行。

egrep

  • 用法egrep [选项] 模式 文件
  • 功能:扩展正则表达式搜索。
  • 举例egrep "[0-9]" file.txt 搜索功能包含数字的行。

sed

  • 用法sed [选项] '脚本' 文件
  • 功能:流编辑器,用于文本处理。
  • 举例sed 's/old/new/g' file.txtold 替换为 new
#场景1:替换字符
sed -ri 's/old/new/g' file

#场景2:提取字符并创建文件
[root@Kanyun tmpdir] cat ../tmp | sed -r 's/(now:Fri 16 May)(.*)(CST 2025)/\2/g'  | xargs touch

awk

  • 用法awk [选项] '脚本' 文件
  • 功能:文本处理工具,支持强大的文本处理功能。
  • 举例awk -F: '{print $1}' /etc/passwd 提取 /etc/passwd 的第 1 列。
awk -F: '{print $1}' /etc/passwd | xargs -n 2 | column -t

以上是《Linux 运维必须掌握150个命令讲解》中列出的命令的简要说明和常用命令举例。

posted @ 2025-05-16 23:16  FangNing  阅读(112)  评论(0)    收藏  举报