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 /backup 将 file.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 644ll -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.txt 将 old.txt 重命名为 new.txt。
rm:
[*]用法:rm [选项] 文件
[*]功能:删除文件或目录。
[*]举例:rm -rf /tmp/* 删除 /tmp 目录下的所有内容。
touch:
[*]用法:touch 文件
[*]功能:创建空文件或更新文件时间戳。
[*]举例:touch newfile.txt 创建一个新文件。
touch test{1..100}
#模拟场景:拿到用户文件名,批量创建测试
ls > filename
cat filename | xargs touchfile:
[*]用法: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 [选项] 文件
[*]功能:显示文件的开头部分。
[*]举例: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连接状态进行排序
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 "" 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.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 显示当前主机名。
#扩展
提取网卡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
# 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 +100ktop:
[*]用法:top
[*]功能:实时显示系统进程和资源使用情况。
[*]举例:top 启动系统监控工具。
#场景
排查问题前,首先查看是否是系统资源瓶颈问题,使用top(系统负载、cup、进程信息)、df -h查看磁盘资源date:
[*]用法:date [选项]
[*]功能:显示或设置系统日期和时间。
[*]举例:date 显示当前日期和时间。
free:
[*]用法:free [选项]
[*]功能:显示系统的内存使用情况。
[*]举例:free -h 显示系统的内存使用情况。
free
total used free sharedbuff/cache available
Mem: 3861288 711228 1486724 14752 1663336 2904900
Swap: 2097148 0 2097148
#读cache ->
#写buffer->I/O ->diskdmesg:
[*]用法: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~65535lsof (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 ( 为进程 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
-iinterface,指定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==53mail:
[*]用法: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 显示系统运行时间和负载。
# 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查看系统进程是否处于竞争调度
vmstat 2 5 #每二秒显示一次系统内存的统计信息,总共5次
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
rb swpd free buffcache si so bi bo in cs us sy id wa st
10 0 2275432 1080 751680 0 0 16 11 9110000 9900
00 0 2276216 1080 751764 0 0 0 3247950500 10000
00 0 2275400 1080 751848 0 0 0 5879487401 9900
00 0 2276556 1080 751888 0 0 0 6579984701 9900
00 0 2276968 1080 751972 0 0 0 3245650000 10000
# 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 显示所有处理器的使用情况。
# 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
# stat ./lnf
文件:"./lnf"
大小:325 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:17619675 硬链接:1
权限:(0644/-rw-r--r--)Uid:( 0/ root) Gid:( 0/ root)
# 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 filechown:
[*]用法:chown [选项] 用户:组 文件
[*]功能:更改文件的所有者和组。
[*]举例:chown user1:group1 file.txt 更改 file.txt 的所有者和组。
#场景
useradd test
chown test.test filesudo:
[*]用法: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
$ sudo -l
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
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) ALLchgrp:
[*]用法: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 显示所有用户的登录历史。
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"
- 网络同步:
# 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 +%sclear:
[*]用法:clear
[*]功能:清除终端屏幕。
[*]举例:clear 清除终端屏幕。
history:
[*]用法:history
[*]功能:显示命令历史。
[*]举例:history 显示最近执行的命令列表。
history 5 #显示最近5条
history -d <指定行号> #删除某条记录
-c 清除记录
-d<编号> 删除指定n条记录
# history家目录日志
# cat .bash_historynohup:
[*]用法: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 "" file.txt 搜索功能包含数字的行。
sed:
[*]用法:sed [选项] '脚本' 文件
[*]功能:流编辑器,用于文本处理。
[*]举例:sed 's/old/new/g' file.txt 将 old 替换为 new。
#场景1:替换字符
sed -ri 's/old/new/g' file
#场景2:提取字符并创建文件
cat ../tmp | sed -r 's/(now:Fri 16 May)(.*)(CST 2025)/\2/g'| xargs touchawk:
[*]用法:awk [选项] '脚本' 文件
[*]功能:文本处理工具,支持强大的文本处理功能。
[*]举例:awk -F: '{print $1}' /etc/passwd 提取 /etc/passwd 的第 1 列。
awk -F: '{print $1}' /etc/passwd | xargs -n 2 | column -t以上是《Linux 运维必须掌握150个命令讲解》中列出的命令的简要说明和常用命令举例。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]