grep
命令
grep
命令的使用指南
1
2
3
4
5
6
7
8
9
10
11
12
|
grep [选项] 模式 文件
-i:忽略大小写区别
-r 或 -R:递归搜索目录
-n:显示匹配行及行号
-v:显示不包含匹配文本的所有行
-c:仅显示匹配行的计数
-l:列出包含匹配文本的文件名称
-w:匹配整个单词
-A n:显示匹配行及后n行内容
-B n:显示匹配行及前n行内容
-C n:显示匹配行及前后各n行内容
|
Linux命令,查找100个⽂本⽂件,将含有abc字段⾏数统计出来
grep -r "abc" /path/to/directory/* | head -100 | wc -l
grep
命令可搭配 wc -l
命令使用,后者是统计次数的
wc
命令
wc命令是一个用于统计文件中字节数、字数、行数的命令,它的名称代表"word count"。下面是wc命令的详细说明:
1
2
3
4
5
|
wc [选项] 文件名
-c:统计字节数
-w:统计单词数
-l:统计行数
|
find
命令
find
命令是在 Linux 系统中用于查找文件和目录的强大工具。它可以根据指定的条件在指定路径下进行搜索,并匹配相应的文件或目录。下面是关于 find
命令的详细说明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
find <路径> <匹配条件> <操作>
匹配条件:
-name:按照文件名进行匹配,可以使用通配符进行模糊匹配
-iname:类似于 -name,但是不区分大小写
-type:按照文件类型进行匹配,比如 -type f 匹配普通文件,-type d 匹配目录
-size:按照文件大小进行匹配,可以指定大于、小于或等于某个特定大小 +是大于,-是小于
-user:按照文件属主进行匹配
-group:按照文件所属组进行匹配
-mtime:按照文件内容修改时间进行匹配,可以指定相对天数或具体日期
-ctime:按照文件状态改变时间进行匹配,包括文件权限、属主等改变
-atime:按照文件最后访问时间进行匹配
-perm:按照文件权限进行匹配,可以指定具体权限值或权限组合
-executable:匹配可执行文件
-empty:匹配空文件或空目录
-regex:使用正则表达式进行文件名匹配
操作:
-print:将匹配到的文件名输出到标准输出(通常是显示在终端上)
-delete:删除匹配到的文件或目录。需要谨慎使用,因为删除的操作是不可逆的
-exec command {} ;:对匹配到的每个文件执行特定的命令。其中 {} 会被替换为匹配到的文件名,\; 表示命令结束
-exec command {} +:与 -exec command {} \; 类似,但是会将多个文件名一起传递给 command 命令,以提高效率
-ok command {} ;:与 -exec 类似,但在执行命令之前会先询问用户是否确认执行
-okdir command {} ;:类似于-ok,但只对目录执行操作而不是文件
-prune:停止find命令在当前目录下继续搜索,避免进入匹配到的目录中继续搜索
|
kill
命令
kill
命令用于终止正在运行的进程。它向指定的进程发送信号,通知该进程终止或者进行其他操作。下面是关于 kill
命令的一些详细信息和其底层原理:
基本用法:kill
命令的基本用法是 kill [signal] PID
,其中signal是要发送的信号类型(通常是数字或信号名),PID是要终止的进程的进程ID。
信号类型:常用的信号类型包括:
SIGTERM(15):默认信号,请求进程正常终止。
SIGKILL(9):强制终止信号,立即终止进程。
其他信号如SIGHUP、SIGINT等,用于不同的目的。
底层原理:在 Linux 系统中,进程间通信通过信号来实现。当使用 kill
命令时,实际上是向目标进程发送一个信号,让目标进程做出相应的处理。具体原理如下:
kill
命令会向指定进程发送一个信号,可以是终止信号或其他信号。
目标进程收到信号后,根据信号的类型进行相应的处理。比如,收到SIGTERM信号时,进程可以进行清理工作后正常退出;收到SIGKILL信号时,进程会被强制终止,无法做任何处理。
进程可以注册信号处理函数来处理收到的信号,也可以选择忽略某些信号。
一些常见信号的含义
1
2
3
4
5
6
7
8
9
10
11
12
|
SIGHUP (1):终端挂起或控制进程终止
SIGINT (2):用户发送的中断信号,通常由按下 Ctrl + C 触发
SIGQUIT (3):用户发送的退出信号,通常由按下 Ctrl + \ 触发
SIGILL (4):非法指令
SIGABRT (6):异常终止
SIGFPE (8):浮点异常
SIGKILL (9):无条件终止进程
SIGSEGV (11):段错误,访问了无效的内存地址
SIGPIPE (13):管道破裂
SIGALRM (14):定时器超时
SIGTERM (15):终止信号,用于请求进程正常终止
SIGUSR1 (30) 和 SIGUSR2 (31):用户自定义信号
|
ss
命令
ss 命令是一个用于显示套接字统计信息的工具,其名称源自 “Socket Statistics”。它可以显示有关套接字(sockets)的各种详细信息,包括网络连接、路由表、接口统计等。ss 命令是 net-tools 套件的一部分,它逐渐替代了老旧的 netstat 命令。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-t, --tcp:仅显示 TCP 套接字信息
ss -t
-u, --udp:仅显示 UDP 套接字信息
ss -u
-l, --listening:仅显示监听套接字信息
ss -l
-p, --processes:显示与套接字相关联的进程信息
ss -p
-x, --unix:显示 UNIX 域套接字信息
ss -x
-s, --summary:显示各种计时器信息、套接字统计和路由表统计
ss -s
-a, --all:显示所有套接字信息,包括监听和非监听的套接字
ss -a
-n, --numeric:以数字形式显示 IP 地址和端口号,而不进行反向解析
ss -n
|
netstat
命令
netstat 是一个用于显示网络状态信息的命令行工具,可以用来查看网络连接、路由表、接口统计等网络相关信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
netstat [选项] [参数]
常用的选项包括:
-t, --tcp:显示 TCP 协议相关的连接信息
-u, --udp:显示 UDP 协议相关的连接信息
-n, --numeric:直接显示 IP 地址和端口号,而不进行域名解析
-a, --all:显示所有连接信息,包括正在监听的服务
-r, --route:显示路由表信息
-i, --interfaces:显示网络接口信息
-s, --statistics:显示网络协议统计信息
-p, --program:显示与连接相关的进程信息
-c, --continuous:持续显示网络状态信息
例如,要显示所有 TCP 连接信息,可以使用命令 netstat -t;要显示所有连接信息并显示进程信息,可以使用命令 netstat -ap
|
iptables
命令
iptables
是一个用于配置 Linux 内核防火墙的命令行工具,可以帮助用户管理网络数据包的过滤、转发和地址转换等功能。通过配置 iptables
规则,管理员可以控制网络数据包在系统内部的流动,实现网络访问控制、端口转发、NAT 网络地址转换等功能。以下是 iptables
命令的一些常见用途和功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
iptables 命令的使用格式和参数如下所示:
iptables [选项] 命令 [链名] 规则规范
其中,选项可以是以下之一或多个组合:
-t, --table table_name:指定要操作的表(filter、nat、mangle、raw、security)
-A, --append chain rule-specification:向指定链末尾添加规则
-I, --insert chain [rulenum] rule-specification:向指定链的指定位置插入规则
-D, --delete chain rule-specification:删除指定链上的规则
-R, --replace chain rulenum rule-specification:替换指定链上的规则
-L, --list [chain]:列出指定链的所有规则
-F, --flush [chain]:清空指定链上的所有规则
-Z, --zero [chain [rulenum]]:将指定链上的计数器归零
-N, --new-chain chain:创建一个新的用户自定义链
-X, --delete-chain [chain]:删除指定链,如果不指定链名则删除所有用户自定义链
-P, --policy chain target:设置指定链的默认策略
-h, --help:显示帮助信息
在命令部分,常用的命令包括:
-A, --append:添加规则到指定链
-D, --delete:删除指定链上的规则
-I, --insert:插入规则到指定链的指定位置
-R, --replace:替换指定链上的规则
链名可以是以下之一:
INPUT:处理传入的数据包
OUTPUT:处理传出的数据包
FORWARD:处理转发的数据包
PREROUTING:处理数据包进入路由前
POSTROUTING:处理数据包离开路由后
规则规范是指具体的规则定义,包括匹配条件和动作。例如,-s 源地址 -d 目标地址 -p 协议 --sport 源端口 --dport 目标端口 -j 动作
|
nohup
命令
nohup
命令用于在后台运行命令,同时忽略 SIGHUP (挂断)信号,使得命令在用户退出登录后仍然可以继续执行。下面是 nohup
命令的详细用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
nohup COMMAND [ARG]... &
COMMAND:要执行的命令或脚本
[ARG]...:命令的参数
&:将命令放入后台运行
运行一个简单的命令,并将其放到后台运行:
nohup command_to_run &
运行一个带参数的命令,并将其放到后台运行:
nohup command_to_run arg1 arg2 &
将一个长时间运行的任务放到后台,并保存输出到指定文件:
nohup long_running_command > output.log &
将一个 Python 脚本放到后台运行:
nohup python script.py arg1 arg2 &
|
top
命令
top
命令是一个常用的系统监控工具,用于实时显示系统中运行的进程的相关信息,如 CPU 占用率、内存占用情况、进程运行状态等
功能和用途:
- 实时显示系统中运行的进程信息,按照 CPU 占用率或内存占用率进行排序
- 提供关于系统负载、内存使用情况、进程状态等方面的快速概览
- 允许用户对进程进行交互式操作,如终止进程、切换排序方式等
主要显示信息:
- 第一行:系统时间、运行时间、登录用户数、系统负载(1分钟、5分钟、15分钟)
- 进程列表:每个进程一行,列出进程 ID、用户、优先级、虚拟内存、物理内存、共享内存、状态、CPU 占用率、内存占用率等
- 总体情况:系统 CPU 使用情况、内存使用情况等
常用交互命令:
- q:退出 top 命令。
- k:终止指定 PID 的进程。
- r:修改指定 PID 进程的优先级
- Space:切换排序方式(按 CPU 占用率或内存占用率)
- 1:显示单个 CPU 的使用情况
- H:将线程显示/隐藏
示例用法:
- 运行 top 命令后,即可实时查看系统中运行的进程信息,并根据需要进行交互操作
- 可以通过 top -u username 来显示特定用户的进程信息
- 通过 top -p PID 来监视指定进程的运行情况
htop
命令
htop 是一个类似于 top 的系统监控工具,提供了比 top 更丰富的功能和更直观的界面,使用户更容易理解系统的运行情况。下面是对 htop 命令的详细解释以及它的用法:
功能和用途:
- 实时显示系统中运行的进程信息,包括 CPU 占用率、内存占用情况、进程状态、进程树等
- 提供交互式界面,支持鼠标操作和键盘快捷键,更方便用户查看和管理进程
- 显示颜色化的信息,让用户更直观地了解系统状况
主要特点:
- 直观界面:使用彩色显示,直观明了
- 交互式操作:支持鼠标点击和键盘快捷键操作,方便用户进行选择和操作
- 更多信息:显示更多关于进程的详细信息,如进程树、线程数等
- 滚动查看:支持上下滚动,方便查看较长的进程列表
常用交互操作:
- 使用箭头键:上下移动选中的进程
- F1:显示帮助文档
- F2:设置参数,如显示选项、排序方式等
- F3:通过关键字搜索进程
- F4:筛选进程
- F9:杀死选中的进程
- F10:退出 htop
示例用法:
- 运行 htop 命令后,会打开一个交互式的界面,实时显示系统中各个进程的信息
- 可以通过键盘快捷键和鼠标操作来查看和管理进程,如杀死进程、改变优先级等
- 在 htop 中也可以自定义显示选项、排序方式,以及筛选条件,以满足不同需求
Linux系统下各个目录的作用
/bin(二进制文件)
存放系统启动和运行时必需的基本命令,如 ls、cp、mv 等
这些命令通常被所有用户和系统启动脚本所使用
/boot(引导文件)
包含用于系统引导的内核文件、引导加载程序(如 GRUB)、以及引导时所需的配置文件
在系统启动过程中会使用这里的文件
/dev(设备文件)
包含系统中所有硬件设备的设备文件,如磁盘、终端、打印机等
Linux 将硬件设备都视为文件,通过与这些设备文件的交互实现对硬件设备的控制和访问
/etc(配置文件)
存放系统全局的配置文件,包括网络配置、用户账户信息、服务的启动脚本等
用户和管理员可以在这里修改系统的各种配置
/home(用户主目录)
每个用户的主目录都位于这个目录下,例如 /home/user1、/home/user2
用户通常在自己的主目录下存放个人文件和配置
/lib(库文件)
包含系统运行时需要的共享库文件,这些库文件可以被可执行程序动态链接
供系统中的程序在运行时调用
/mnt(挂载点)
用于临时挂载其他文件系统的目录,如光盘、移动硬盘等
系统管理员可以将外部设备挂载到这个目录下进行访问
/opt(可选应用程序)
用于存放可选的、不属于发行版本管理的应用程序
一些第三方软件或升级软件包可能会安装到这个目录
/tmp(临时文件)
存放系统运行过程中产生的临时文件
重启系统时通常会清空该目录下的文件
/var(可变数据)
包含系统运行过程中产生的变化数据,如日志文件、邮件、打印队列等
用于存放那些在系统运行时可能会频繁变化的数据
系统日志存放在 /var/log
路径下