找回密码
 立即注册
首页 业界区 安全 Linux基础命令学习记录

Linux基础命令学习记录

怃膝镁 2025-5-31 23:13:20
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 /backup 将 file.txt 复制到 /backup 目录。
find

find linux 命令

  • 用法:find [路径] [选项] [表达式]
  1. -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
  2. -atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算:
  3. -cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
  4. -ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
  5. -depth:从指定目录下最深层的子目录开始查找;
  6. -empty:寻找文件大小为0Byte的文件,或目录下没有任何子目录或文件的空目录;
  7. -exec<执行指令>:假设find指令的回传值为True,就执行该指令;
  8. -maxdepth<目录层级>:设置最大目录层级;
  9. -mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
  10. -mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
  11. -perm<权限数值>:查找符合指定的权限数值的文件或目录;
  12. -size<文件大小>:查找符合指定的文件大小的文件;
  13. -type<文件类型>:只寻找符合指定的文件类型的文件;
  14. -exec <执行指令>
  15. 作用:假设 find 命令的返回值为 True,则执行指定的命令。
  16. 示例:查找当前目录下的所有 .txt 文件,并打印每个文件的内容。
  17. find ./ -name "*.txt" -exec cat {} \;
复制代码

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


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


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


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


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


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


  • 用法:tree [目录]
  • 功能:以树形结构列出目录内容。
  • 举例:tree /etc 显示 /etc 目录的树形结构。
    1. 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 设置文件系统挂载为不可修改。
    1. 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。
  1. vim在粘贴时会改变格式,vi不会
  2. shift+zz强制保存
复制代码
cat


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


  • 用法:more 文件
  • 功能:分页显示文件内容。
  • 举例:more file.txt 分页显示 file.txt 的内容。
head


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

注意事项
  1. - **权限**:`netstat -ant` 命令通常需要 root 权限才能显示所有网络连接信息。
  2. - **输出解释**:
  3.   - `ESTABLISHED`:连接已建立。
  4.   - `TIME_WAIT`:连接处于等待关闭状态。
  5.   - `LISTEN`:服务器正在监听某个端口。
  6.   - `CLOSE_WAIT`:连接正在等待关闭。
  7. - `SYN_SENT`:客户端已发送连接请求,等待服务器响应。
  8. 通过这个命令,可以快速了解系统中不同 TCP 连接状态的分布情况。
  9. ```bash
  10. egrep -ir -A 2 'error' /var/log/mysqld.log
复制代码
场景描述:排查报错原因,通过egrep过滤报错日志的关键字error或warning,并且显示后几行内容进行排查定位
  1. ```
  2. 命令解释:`egrep -ir -A 2 'error' /var/log/mysqld.log`
  3.   
  4. 组成部分
  5. - **`egrep`**:
  6.   - `egrep` 是一个用于搜索文本的命令,支持扩展正则表达式。
  7. - **`-i`**:
  8.   - `-i` 选项表示忽略大小写,使搜索不区分大小写。
  9. - **`-r`**:
  10.   - `-r` 选项表示递归搜索,即在指定目录及其子目录中搜索。
  11. - **`-A 2`**:
  12.   - `-A` 选项表示在匹配行之后显示指定数量的行(这里是 2 行)。
  13. - **`'error'`**:
  14.   - 指定要搜索的模式,这里是字符串 `error`。
复制代码

  • /var/log/mysqld.log

    • 指定搜索的文件路径,这里是 MySQL 的日志文件。

命令作用
  1. 该命令的作用是在 `/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 搜索个性化包含数字的行。
  1. cat /etc/passwd | egrep "^s.*n$"
  2. egrep "^s.*n$" /etc/passwd
  3. 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 比较两个文件。
    1. #场景:备份文件快速同步
    2. 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.txt 为 file.txt.gz。
zip


  • 用法:zip [选项] 压缩文件.zip 文件
  • 功能:压缩文件为 ZIP 格式。
  • 举例:zip archive.zip file.txt 将 file.txt 压缩到 archive.zip。
5. 信息显示命令

uname


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


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


  • 用法:uptime
  • 功能:显示系统运行时间。
  • 举例:uptime 显示系统运行时间和负载。
  1. #场景:如何查看负载,若负载为1(满了,如何解决),负载一般与cpu核数关联
  2. #负载是代表整个系统的繁忙程度
  3. 使用top、uptime查看系统负载信息,若负载满了就用top查看具体是哪一个进程导致的。
  4. 找到问题后进行评估处理(联合开发)
  5. 系统处于可运行状态和不可中断状态的平均活跃进程数。就代表系统负载系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程
  6. 系统负载跟CPU的。使用率没有关系,它只有两个,一个是计算型啊,一个是计,一个叫密集型进程,
  7. 还有一个叫计算型进程,还有一个叫ao型进程。只有这三点会导致这个负载比较高,但这属于性能分析,包括也比较比较深入的一个linux里面的一个问题
复制代码
stat


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


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


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


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


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


  • 用法:free [选项]
  • 功能:显示系统的内存使用情况。
  • 举例:free -h 显示系统的内存使用情况。
  1. free
  2.               total        used        free      shared  buff/cache   available
  3. Mem:        3861288      711228     1486724       14752     1663336     2904900
  4. Swap:       2097148           0     2097148
  5. #读cache ->  
  6. #写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 文件。
  1. #场景:查找一个服务的所有日志文件
  2. 如果不知道日志文件名称,先搜xx日志,如:Nginx日志
  3. find ./ -type f -name "*access.log" #不知道路径从根开始性能较差
  4. 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 端口。
    1. #过滤网络TCP连接状态
    2. netstat -antup | egrep ssh
    3. -a或--all:显示所有连线中的Socket;
    4. -l或--listening:显示监控中的服务器的Socket;
    5. -n或--numeric:直接使用ip地址,而不通过域名服务器;
    6. -p或--programs:显示正在使用Socket的程序识别码和程序名称;
    7. -t或--tcp:显示TCP传输协议的连线状况;
    8. -u或--udp:显示UDP传输协议的连线状况;
    复制代码
route


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


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


  • 用法:ifdown 接口
  • 功能:停止指定网络接口。
  • 举例:ifdown eth0 停止 eth0 接口。
9. 深入网络操作命令

nmap


  • 用法:nmap [选项] 主机
  • 功能:网络扫描工具。
  • 举例:nmap example.com 扫描远程主机的开放端口。
  1. #默认1~65535
复制代码
lsof    (List Open Files)


  • 用法:lsof [选项]
  • 功能:显示打开的文件和网络连接(Linux一切皆文件)。
  • 举例:lsof -i :80 显示监听 80 端口的进程。
  1. lsof -i tcp
  2. ps aux | egrep nginx
  3. lsof | egrep nginx
  4. #解释
  5. /usr/sbin/nginx        #启动目录,下面的.so是一些依赖的系统共享库
  6. /dev/null           #Linux黑洞
  7. - 用法:rm $badname 2>/dev/null,
  8. - 解释:https://blog.csdn.net/weixin_44388689/article/details/120705959
复制代码
常见用法
  1. 查看所有打开的文件:lsof
  2. 查看特定进程打开的文件:lsof -p [PID]([PID] 为进程 ID)
  3. 查看特定用户打开的文件:lsof -u [用户名]
  4. 查看特定端口相关的进程:lsof -i :[端口号]
  5. 查看特定文件系统上的打开文件:lsof [文件系统路径]
复制代码
nslookup


  • 用法:nslookup [选项] 域名
  • 功能:查询 DNS 信息。
  • 举例:nslookup example.com 查看域名的 DNS 记录。
  1. nslookup www.baidu.com
  2. Server:         114.114.114.114
  3. Address:        114.114.114.114#53
  4. Non-authoritative answer:
  5. Name:   www.baidu.com
  6. Address: 39.156.70.239
  7. Name:   www.baidu.com
  8. Address: 39.156.70.46
  9. Name:   www.baidu.com
  10. Address: 2409:8c00:6c21:118b:0:ff:b0e8:f003
  11. Name:   www.baidu.com
  12. Address: 2409:8c00:6c21:11eb:0:ff:b0bf:59ca
  13. 说明通过域名服务器的53端口进行解析
  14. 抓包
  15. tcpdump -i any port 53 -nn
复制代码
  1. #场景:DNS解析超时
  2. 第一,你检查你自己的DNS有没有配置`vim /etc/resolv.conf`
复制代码
  1. #法二,strace
  2. strace -e open,connect,socket nslookup www.baidu.com
  3. #so都是系统文件不用关注,查看打开了其他哪些文件,然后进行下一步
复制代码
dig


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


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

tcpdump


  • 用法:tcpdump [选项]
  • 功能:网络流量捕获和分析的命令行工具(网络抓包工具)。
  • 举例:tcpdump -i eth0 抓取 eth0 接口的网络数据包。
  1. #tty1
  2. tcpdump -i any not arp and not port 22 -w dns.pcap
  3. -i  interface,指定tcpdump 需要监听的接口.  
  4. -w  把包数据直接写入文件而不进行分析和打印输出. 这些包数据可在随后通过-r 选项来重新读入并进行分析和打印.
  5.    
  6. sz dns.capa
  7. 拖入wireshark,选择DNS或TCP协议包,分析追踪流。
  8. 如DNS查看应答的域名解析ip,进行访问查看进一步分析
  9. tcpdump -r dns.pcap  #将封装包数据进行读入并分析、打印
  10. #tty2
  11. #  ping www.baidu.com
  12. #  traceroute www.baidu.com
  13. nslookup www.baidu.com #查看DNS域名解析是否成功(域名解析正常,但并不保证网站实际上线)
  14. nc -v www.baidu.com 80  #测试网络是否在线(80:http,443:https)
复制代码
  1. # Wireshark过滤策略
  2. tcp.port==80
  3. 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。
    1. #场景
    2. 如果公司让你去买一台服务器,你买了这个服务器以后,你得问一下需求,要不要再去买一张新的磁盘?如果是默认的磁盘,它是不会存在这个分区的过程,如果是新的磁盘,你就要去分区格式化挂载这个过程
    复制代码
umount


  • 用法:umount [选项] 挂载点或设备
  • 功能:卸载已挂载的文件系统。
  • 举例:umount /mnt 卸载 /mnt 挂载点。
df
  1. #场景,系统资源监控报警脚本
  2. df -h | awk '/boot/{print $5}' | sed -r 's#%##g'
  3. used=$(df -h | awk '/boot/{print $5}' | sed -r 's#%##g')
  4. [ $used -gt 18 ] && echo "Warning" || echo "normol"
  5. #扩展(监控/)
  6. df -h | awk '$NF == "/"{print $5}' | sed -r 's#%##g'
  7. #解释
  8. $NF:awk 中的 $NF 表示当前行的最后一个字段(NF 是字段总数,$NF 是最后一个字段的内容)。在 df -h 的输出中,最后一个字段是挂载点。
  9. == "/":精确匹配最后一个字段是否等于 /。
复制代码
  1. s#%##g 详解
  2. s:表示替换操作。
  3. #:分隔符。sed 默认使用 / 作为分隔符,但也可以用其他字符代替,以避免和模式中的 / 冲突。这里使用 # 作为分隔符。
  4. %:模式,表示要匹配的内容是 % 符号。
  5. #:第二个分隔符,分隔模式和替换内容。
  6. #:替换内容为空,表示将匹配到的 % 替换为空字符串。
  7. g:全局替换标志,表示替换每一行中所有匹配的 %。
复制代码
fdisk


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


  • 用法:resize2fs [选项] 设备
  • 功能:调整文件系统大小。
  • 举例:resize2fs /dev/sda1 调整 /dev/sda1 的文件系统大小。
  1. - **`fsck`**:
  2.   - **用法**:`fsck [选项] 设备`
  3.   - **功能**:检查和修复文件系统。
  4.   - **举例**:`fsck /dev/sdb1` 检查和修复 `/dev/sdb1` 文件系统。
  5.   
  6. - **`dd`**:
  7.   - **用法**:`dd [选项] if=输入文件 of=输出文件`
  8.   - **功能**:转换和复制文件。
  9.   - **举例**:`dd if=/dev/sda of=/dev/sdb` 复制磁盘内容。
  10.   
  11. - **`dumpe2fs`**:
  12.   - **用法**:`dumpe2fs [选项] 设备`
  13.   - **功能**:显示 ext2/ext3/ext4 文件系统的信息。
  14.   - **举例**:`dumpe2fs /dev/sda1` 显示 `/dev/sda1` 的文件系统信息。
  15.   
  16. - **`dump`**:
  17.   - **用法**:`dump [选项] 文件系统`
  18.   - **功能**:备份文件系统。
  19.   - **举例**:`dump -0u /dev/sda1` 备份 `/dev/sda1` 文件系统。
  20.    
  21. - **`parted`**:
  22.   - **用法**:`parted [选项] 设备`
  23.   - **功能**:磁盘分区工具。
  24.   - **举例**:`parted /dev/sda` 管理 `/dev/sda` 的分区。
  25.   
  26. - **`mkfs`**:
  27.   - **用法**:`mkfs [选项] 设备`
  28.   - **功能**:创建文件系统。
  29.   - **举例**:`mkfs.ext4 /dev/sdb1` 在 `/dev/sdb1` 上创建 ext4 文件系统。
  30.   
  31. - **`partprobe`**:
  32.   - **用法**:`partprobe [选项] 设备`
  33.   - **功能**:通知内核分区表已更改。
  34.   - **举例**:`partprobe /dev/sda` 通知内核 `/dev/sda` 的分区表已更改。
  35.   
  36. - **`e2fsck`**:
  37.   - **用法**:`e2fsck [选项] 设备`
  38.   - **功能**:检查和修复 ext2/ext3/ext4 文件系统。
  39.   - **举例**:`e2fsck /dev/sda1` 检查和修复 `/dev/sda1` 文件系统。
  40.   
  41. - **`mkswap`**:
  42.   - **用法**:`mkswap [选项] 设备`
  43.   - **功能**:创建 swap 分区。
  44.   - **举例**:`mkswap /dev/sdb1` 在 `/dev/sdb1` 上创建 swap 分区。
  45.   
  46. - **`swapon`**:
  47.   - **用法**:`swapon [选项] 设备`
  48.   - **功能**:启用 swap 分区。
  49.   - **举例**:`swapon /dev/sdb1` 启用 `/dev/sdb1` 作为 swap 分区。
  50.   
  51. - **`sync`**:
  52.   - **用法**:`sync`
  53.   - **功能**:同步文件系统。
  54.   - **举例**:`sync` 同步所有挂起的 I/O 操作。
复制代码
11. 关机和查看系统信息的命令

shutdown


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


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


  • 用法:init [选项]
  • 功能:更改系统的运行级别。
  • 举例:init 0 关机。
12. 系统管理相关命令

uptime


  • 用法:uptime
  • 功能:显示系统运行时间。
  • 举例:uptime 显示系统运行时间和负载
  1. [root@Kanyun /]# uptime
  2. 01:20:20 up 51 min,  2 users,  load average: 0.00, 0.02, 0.05
  3. #使用场景
  4. 检查系统运行时长,判断系统是否需要重启。
  5. 查看系统负载,评估系统性能和压力。
  6. 监控服务器状态,用于系统管理和故障排查。
  7. 在自动化脚本中获取系统运行时间和负载信息。
  8. #解释
  9. 系统负载表示任务队列中等待 CPU 的任务数。负载值低于 CPU 核心数表示系统运行良好,高于核心数则可能表示系统压力较大。
复制代码
top


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


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


  • 用法:vmstat [选项]
  • 功能:报告虚拟内存统计信息。
  • 举例:vmstat 1 每秒更新一次虚拟内存统计信息。
  1. #场景:通过vmstat查看系统进程是否处于竞争调度
  2. [root@Kanyun /]vmstat 2 5   #每二秒显示一次系统内存的统计信息,总共5次
  3. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  4. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
  5. 1  0      0 2275432   1080 751680    0    0    16    11   91  100  0  0 99  0  0
  6. 0  0      0 2276216   1080 751764    0    0     0    32  479  505  0  0 100  0  0
  7. 0  0      0 2275400   1080 751848    0    0     0    58  794  874  0  1 99  0  0
  8. 0  0      0 2276556   1080 751888    0    0     0    65  799  847  0  1 99  0  0
  9. 0  0      0 2276968   1080 751972    0    0     0    32  456  500  0  0 100  0  0
  10. [root@Kanyun /]# lscpu | egrep CPU
  11. CPU op-mode(s):        32-bit, 64-bit
  12. CPU(s):                8
  13. On-line CPU(s) list:   0-7
  14. CPU 系列:          6
  15. CPU MHz:             2304.008
  16. NUMA 节点0 CPU:    0-7
  17. #解释:只有8颗CPU,当我的这个进程数达到8的时候,系统负载满,系统已经处于资源竞争的一个状态,进程队列已经满了,满了就会竞争、调度、会阻塞,比较慢。
复制代码
mpstat


  • 用法:mpstat [选项]
  • 功能:报告每个处理器的使用情况。
  • 举例:mpstat -P ALL 显示所有处理器的使用情况。
  1. [root@Kanyun /]# mpstat -P ALL
  2. Linux 3.10.0-1160.el7.x86_64 (Kanyun)   2025年05月17日  _x86_64_        (8 CPU)
  3. 01时34分54秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
  4. 01时34分54秒  all    0.03    0.00    0.47    0.01    0.00    0.03    0.00    0.00    0.00   99.46
  5. 01时34分54秒    0    0.05    0.00    0.34    0.01    0.00    0.06    0.00    0.00    0.00   99.54
  6. 01时34分54秒    1    0.03    0.00    0.60    0.00    0.00    0.02    0.00    0.00    0.00   99.34
  7. .....
  8. #使用场景
  9. CPU 性能监控 :查看每个 CPU 核心的使用情况,包括用户空间、系统空间、空闲等状态。
  10. 性能瓶颈分析 :确定是否存在特定 CPU 核心过载或空闲的情况。
  11. 负载均衡检查 :在多核系统中,检查负载是否均匀分布在各个 CPU 核心上。
  12. 系统调优 :根据 CPU 使用情况调整系统配置或任务分配。
复制代码
iostat


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


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


  • 用法:chkconfig [选项] 服务名
  • 功能:管理服务的启动配置。
  • 举例:chkconfig sshd on 设置 sshd 服务开机启动。
13. 系统安全相关命令

chmod


  • 用法:chmod [选项] 模式 文件
  • 功能:更改文件的权限。
  • 举例:chmod 755 file.txt 设置 file.txt 的权限为 rwxr-xr-x。
  1. #场景(更改文件/目录权限)
  2. 默认:文件644,目录755
  3. [root@Kanyun lnf_test]# stat ./lnf
  4.   文件:"./lnf"
  5.   大小:325             块:8          IO 块:4096   普通文件
  6. 设备:fd00h/64768d      Inode:17619675    硬链接:1
  7. 权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
  8. [root@Kanyun lnf_test]# stat test/
  9.   文件:"test/"
  10.   大小:142             块:0          IO 块:4096   目录
  11. 设备:fd00h/64768d      Inode:34523728    硬链接:2
  12. 权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
  13. #每个权限位由3个二进制数组成,最大表示111:7(rwx)
  14. #注
  15. 一般会给脚本一个执行权限
  16. - chmod + x file
  17. - chmod 755 file
复制代码
chown


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


  • 用法:sudo [选项] 命令
  • 功能:以超级用户权限执行命令。
  • 举例:sudo apt-get update 以 root 权限更新包列表。
  1. #拥有所有权限
  2. 需要先用root用户在visudo中添加指定用户的sudo权限
  3. visudo
  4. ## Allow root to run any commands anywhere
  5. root    ALL=(ALL)       ALL
  6. test    ALL=(ALL)       ALL
  7. [test@Kanyun root]$ sudo -l
  8. 我们信任您已经从系统管理员那里了解了日常注意事项。
  9. 总结起来无外乎这三点:
  10.     #1) 尊重别人的隐私。
  11.     #2) 输入前要先考虑(后果和风险)。
  12.     #3) 权力越大,责任越大。
  13. [sudo] test 的密码:
  14. 匹配 %2$s 上 %1$s 的默认条目:
  15.     !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR
  16.     LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
  17.     LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
  18.     XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
  19. 用户 test 可以在 Kanyun 上运行以下命令:
  20.     (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 rootsu - 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 显示所有用户的登录历史。
  1. last -n 5 #显示最近五次
复制代码
lastlog


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


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


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

echo


  • 用法:echo [选项] 文本
  • 功能:输出文本。
  • 举例:echo "Hello, World!" 输出 Hello, World!。
    1. 单引号:所见所得
    2. 双引号:解析变量
    3. echo -e "hello \n 133"
    4. -e :启用转义(默认-E不启用)
    复制代码
rpm


  • 用法:rpm [选项] 包名
  • 功能:管理 RPM 包。
  • 举例:rpm -ivh package.rpm 安装 RPM 包。
  1. #常用
  2. rpm -qa | egrep Nginx #查询
  3. rpm -e Nginx.....  #删除
  4. rpm -ivh Nginx.....  #安装
  5. rpm -ql Nginx  #显示安装目录
  6. yum remove Nginx
  7. #注:为什么用yum而不用rpm包安装
  8. yum可自动解决依赖问题
  9. rpm一般在无网环境使用
  10. -a:查询所有套件;
  11. -e<套件档>或--erase<套件档>:删除指定的套件;
  12. -h或--hash:套件安装时列出标记;
  13. -i:显示套件的相关信息;
  14. -i<套件档>或--install<套件档>:安装指定的套件档;
  15. -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
  16. -v:显示指令执行过程;
  17. -l:显示套件的文件列表;
复制代码
yum


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


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


  • 用法:date [选项]
  • 功能:显示或设置系统日期和时间。
  • 举例:date 显示当前日期和时间。
  1. #场景1:当date显示时间错误时,同步网络时间
  2. - 手动设置:date -s "2024-11-15 14:30:00"
  3. - 网络同步:
  4. [root@Kanyun ~]# ll /etc/localtime (查看时区,默认北美洲)
  5. lrwxrwxrwx 1 root root 33 May 11 19:30 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
  6. #如果不是Shanghai需要修改
  7. unlink /etc/localtime
  8. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  9. crontab -e
  10. */5 * * * * ntpdate ntp1.aliyun.com
  11. crontab -l
  12. ntpdate ntp1.aliyun.com
  13. date
  14. #场景描述
  15. 描述一个故障,在搭建整个监控系统,落地时发现偶尔有部分的节点监控数据异常,抓不到。最后,经过排查我们发现,部分节点没有进行时间同步,所以在落地整个监控系统的时候,必要的条件是实现所有节点的时间同步。我们有一个自建的时间同步服务器,也有一个备用的公网的时间同步。实现这个可用性,保证所有的节点五分钟执行一次
复制代码
  1. #场景2:用于编写脚本(文件时间戳)
  2. date +%F-%T        #年月日+时分秒
  3. cp -r test test_bak$(date +%F-%T | sed -r 's#:#-#g')
  4. - test_bak2025-05-16-19-22-59
  5. #场景3:时间戳(脚本处理)
  6. date +%s
复制代码
clear


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


  • 用法:history
  • 功能:显示命令历史。
  • 举例:history 显示最近执行的命令列表。
  1. history 5 #显示最近5条
  2. history -d <指定行号>        #删除某条记录
  3. -c 清除记录
  4. -d<编号>[n] 删除指定n条记录
  5. #        history家目录日志
  6. [root@Kanyun ~]# cat .bash_history
复制代码
nohup


  • 用法:nohup 命令
  • 功能:忽略挂起信号运行命令。
  • 举例:nohup long_process.sh 在后台运行长时间进程。
  1. #场景:日志后台记录
  2. vim dates.sh
  3. #!/bin/bash
  4. tmp="./tmp"
  5. touch $tmp         #确保文件存在
  6. while true
  7. do
  8.         now=$(date)"
  9.         echo "now:$now" >> $tmpe
  10.         sleep 1
  11. done
  12. sh dates.sh
  13. nohup sh dates.sh &        #后台运行(终端关闭不影响)
  14. 日志文件输出在./nohup.out
  15. pa aux | egrep dates.sh
  16. kill <进程号>
复制代码
xargs


  • 用法:xargs [选项] 命令
  • 功能:构建和执行命令(将前面的标准输出作为后边命令的参数)。
  • 举例:ls | xargs rm 删除列出的文件。
  1. #场景:为/etc/passwd中的每一个用户创建一个目录
  2. cat /etc/passwd | awk -F: '{print $1}' | xargs mkdir -p
  3. cat /etc/passwd | awk -F: '{print $1}' | xargs -n 4 |column -t #按几列输出
  4. -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.txt 将 old 替换为 new。
  1. #场景1:替换字符
  2. sed -ri 's/old/new/g' file
  3. #场景2:提取字符并创建文件
  4. [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 列。
  1. awk -F: '{print $1}' /etc/passwd | xargs -n 2 | column -t
复制代码
以上是《Linux 运维必须掌握150个命令讲解》中列出的命令的简要说明和常用命令举例。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册