kill命令
Linux的kill命令是一个用于发送信号到程序的基本命令行工具。进程可以响应这些信号并采取相应的行动,例如终止、忽略信号或执行特定的处理程序。如果没有明确指定信号类型,kill命令默认会发送SIGTERM(信号15)来请求进程终止。如果进程未能响应,则可以使用SIGKILL(信号9)强制结束进程。
命令格式
kill [选项] 进程号或者
kill [选项] 进程名称常用选项
-l:列出所有信号名称。-s:指定发送的信号,信号可以以名称或数字表示。-L:列出所有信号名称及其对应的数字。
常用信号
以下是一些常用的信号及其用途:
1(HUP):挂起,通常用于重新加载配置文件。2(INT):中断,相当于按下Ctrl+C。9(KILL):强制杀死进程,该信号不能被捕获或忽略。15(TERM):终止,这是默认的信号,允许进程进行清理。18(CONT):继续执行被暂停的进程。
使用示例
终止进程号为1234的进程:
kill 1234发送HUP信号到进程号为1234的进程:
kill -1 1234或者
kill -s HUP 1234
netstat 命令
netstat 命令可以显示路由表、实际的网络连接以及各种网络接口的统计信息。
它主要用于网络故障诊断、网络连接监控和性能分析。
常用选项
-a或--all: 显示所有连接,包括监听中的连接和未建立的连接。-b或--b: 显示拥有每个连接的应用程序名称(仅限Windows)。-e或--extended: 显示额外的信息,如IPv6地址。-n或--numeric: 不解析主机名或端口名称,直接显示数字形式的地址和端口号。-o或--programs: 显示拥有每个连接的应用程序PID和名称(仅限Windows)。-l或--listening:显示监控中的服务器的Socket。-p或--protocol: 指定协议类型,例如TCP或UDP。-r或--route: 显示路由表而不是连接。-s或--statistics: 显示协议统计信息,如TCP、UDP等。-t或--tcp: 仅显示TCP连接。-u或--udp: 仅显示UDP连接。
常见用法
netstat -an:显示所有连接的详细信息,但不解析地址和端口号。netstat -tunlp:显示所有 TCP 和 UDP 连接及其对应的 PID 和程序名称。netstat -i:显示网络接口的统计信息,比如接收和发送的数据包数量。netstat -r:显示内核路由表。
统计当前系统上不同TCP状态的连接数:
netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'netstat -na:netstat是用于显示网络连接、路由表、接口统计信息等网络相关信息的命令。-n选项告诉netstat以数字形式显示地址和端口号,而不是尝试将它们解析为名称。-a选项告诉netstat显示所有连接(已建立的和监听的)。
|(管道符):- 管道符用于将
netstat命令的输出作为awk命令的输入。
- 管道符用于将
awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}':awk是一个强大的文本处理工具,常用于模式扫描和处理。/^tcp/是一个正则表达式模式,用于匹配以 "tcp" 开头的行。这意味着awk只会处理那些与TCP连接相关的行。{++S[$NF]}是awk的动作部分,执行以下操作:$NF是一个特殊变量,代表当前记录(即当前行)的最后一个字段。在netstat -na的输出中,最后一个字段是连接的状态(例如 "ESTABLISHED"、"TIME_WAIT" 等)。S[$NF]是一个关联数组(类似于哈希表或字典),其键是连接状态。++S[$NF]表示将数组中对应状态的计数加一。如果该状态是第一次出现,它会被初始化为1。
END是一个特殊的awk模式,它匹配输入文件的末尾。在处理完所有输入行之后,awk会执行END模式后面的动作。{for(a in S) print a, S[a]}是在处理完所有行后执行的动作,它遍历数组S并打印每个状态及其对应的计数。
输出示例:
[root@cengxuyuan ~]# netstat -na | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
LISTEN 22
ESTABLISHED 28
TIME_WAIT 5find 命令
find 命令是 Linux 系统中一个非常强大的文件搜索工具,它可以用来在指定的目录及其子目录中查找文件,并根据多种条件过滤搜索结果。find 命令的基本语法如下:
find [搜索范围] [选项] [动作]搜索范围
搜索范围:指定你想要搜索的目录。如果省略,默认从当前目录开始搜索。
选项
-type:指定搜索的文件类型,如-type f表示搜索文件,-type d表示搜索目录,-type l表示链接。-name:指定搜索的文件名。-size:指定文件的大小,如-size +100M表示搜索大于 100MB 的文件。-mtime:指定文件的最后修改时间,如-mtime +10表示搜索在过去 10 天内修改的文件。-user:指定文件的所有者,如-user username表示搜索所有者为 username 的文件。-group:指定文件所属的组,如-group groupname表示搜索属于 groupname 组的文件。-iname:忽略大小写的文件名搜索。-inum:指定 inode 号,如-inum 12345表示搜索 inode 号为 12345 的文件。
动作
-print:将找到的文件打印到标准输出。-exec:对找到的文件执行指定的命令。-ok:与-exec类似,但需要用户确认才能执行。-delete:删除找到的文件。-fprintf:格式化输出找到的文件内容。-ls:列出找到的文件信息。
示例
- 搜索当前目录下所有文件:bash
find . -type f - 搜索当前目录下所有 PDF 文件:bash
find . -type f -name "*.pdf" - 搜索当前目录下所有大于 100MB 的文件:bash
find . -type f -size +100M - 搜索当前目录下所有在过去 10 天内修改的文件:bash
find . -type f -mtime -10 - 搜索当前目录下所有属于用户
username的文件:bashfind . -type f -user username - 搜索当前目录下所有 inode 号为 12345 的文件:bash
find . -type f -inum 12345 - 搜索当前目录下所有文件并删除:bash
find . -type f -delete - 搜索当前目录下所有文件并执行命令:bash
find . -type f -exec ls -l {} \;
Yum命令
Yum(全称为 Yellow dog Updater, Modified)是在Linux操作系统中,特别是Fedora、RedHat和SUSE等发行版中常用的一种基于RPM的软件包管理器。它允许系统管理员交互式和自动化地管理RPM软件包,能够从指定的服务器自动下载RPM包并进行安装,同时自动处理依赖性关系,一次性安装所有依赖的软件包,从而避免了繁琐的下载和安装过程。
主要特点
- 自动化管理:Yum能够自动下载和安装软件包,简化了软件管理过程。
- 依赖性处理:Yum可以自动解决软件包的依赖关系,无需手动干预。
- 命令简单易记:Yum的命令结构简洁,易于学习和使用。
基本命令
- 安装软件包:
yum install package1:安装指定的软件包。yum groupinstall group1:安装指定的软件包组。
- 更新和升级:
yum update:更新所有软件包。yum update package1:更新指定的软件包。yum upgrade package1:升级指定的软件包。yum check-update:检查所有可更新的软件包。
- 查找和显示信息:
yum list:显示所有已安装和可安装的软件包。yum info package1:显示指定软件包的详细信息。yum search string:根据关键字查找软件包。
- 删除软件包:
yum remove package1:删除指定的软件包。
软件包目录
当你使用 yum 安装软件包时,实际的文件会被放置在系统的多个位置,这取决于软件包的内容和类型。
二进制可执行文件:
- 通常被安装在
/usr/bin或/usr/local/bin目录下。 - 有时候也会被安装在
/sbin或/usr/sbin(系统管理命令)或者/usr/local/sbin。 - 如果是图形界面程序,可能会被安装在
/usr/bin下,同时在/usr/share/applications中有一个指向它的.desktop文件。
- 通常被安装在
库文件:
- 通常被安装在
/usr/lib或/usr/lib64(对于 64 位系统)。 - 有时也可能在
/usr/local/lib或/usr/local/lib64。
- 通常被安装在
配置文件:
- 通常被安装在
/etc目录下,具体的子目录取决于软件包。 - 某些服务的配置文件可能位于
/etc/<service_name>目录内。
- 通常被安装在
文档和手册页:
- 文档通常位于
/usr/share/doc/<package-name>。 - 手册页位于
/usr/share/man/manX/<command>.X.gz,其中X是手册页的章节编号。
- 文档通常位于
数据文件:
- 用户数据文件通常存储在
/var/lib/<service_name>或/var/cache/<service_name>。 - 日志文件通常存储在
/var/log/<service_name>。
- 用户数据文件通常存储在
启动脚本和服务配置:
- 对于 Systemd 系统,服务单元文件通常位于
/usr/lib/systemd/system或/etc/systemd/system。 - 对于 SysVinit 系统,启动脚本通常位于
/etc/rc.d/init.d。
- 对于 Systemd 系统,服务单元文件通常位于
桌面环境相关的文件:
- 图标和菜单文件通常位于
/usr/share/icons和/usr/share/applications。
- 图标和菜单文件通常位于
库依赖:
- 动态链接库(
.so文件)通常位于/usr/lib或/usr/lib64。 - 静态库(
.a文件)通常位于/usr/lib或/usr/lib64。
- 动态链接库(
开发文件:
- 头文件和开发库通常被安装在
/usr/include和/usr/lib或/usr/lib64。
- 头文件和开发库通常被安装在
语言支持文件:
- 包含翻译字符串的
.mo文件通常位于/usr/share/locale。
- 包含翻译字符串的
防火墙命令
firewalld 是一个功能强大的防火墙管理工具,它支持动态管理防火墙规则,而无需重启服务或连接。
查看防火墙状态:
- 显示防火墙的状态(active、inactive等):bash
firewall-cmd --state
重新加载规则:
- 重新加载防火墙规则,不会中断现有连接:bash
firewall-cmd --reload
查看永久规则:
- 显示永久性的防火墙规则:bash
firewall-cmd --permanent --list-all
临时添加端口:
- 将端口添加到默认区域(临时):bash
firewall-cmd --add-port=<port>/<protocol>
永久添加端口:
- 将端口添加到默认区域(永久):bash
firewall-cmd --permanent --add-port=<port>/<protocol>
删除端口:
- 从默认区域移除端口(临时):bash
firewall-cmd --remove-port=<port>/<protocol> - 从默认区域移除端口(永久):bash
firewall-cmd --permanent --remove-port=<port>/<protocol>
常用命令
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
firewall-cmd --permanent --list-alltop命令
top 命令是 Linux 系统中一个非常强大的工具,用于实时地监视系统的状态,特别是进程的状态。它可以显示当前正在运行的进程,并且允许用户动态地观察这些进程的变化。
启动 top
要启动 top 命令,只需在终端中输入 top 并按回车键即可。
top 的基本界面
当你启动 top 之后,你会看到一个包含多个部分的界面:
任务栏: 显示系统当前的任务总数、运行中的任务数、睡眠中的任务数、停止的任务数以及僵尸任务数。
负载平均: 显示过去 1 分钟、5 分钟和 15 分钟的系统负载平均值。
系统状态信息: 包括系统运行时间、用户数、系统负载等。
内存使用: 显示物理内存、交换空间(Swap)的使用情况。
CPU 使用: 显示 CPU 的使用情况,包括用户进程使用率、系统进程使用率、空闲时间、等待 I/O 完成的时间等。
进程列表: 显示当前运行的进程,每一行代表一个进程,包括 PID、用户、优先级、NI(nice 值)、虚拟内存大小、驻留集大小、状态、CPU 使用率、内存使用率、时间和命令名称。
交互式操作
top 命令支持多种交互式的操作,可以通过键盘命令来控制显示的内容和排序方式。
排序: 默认情况下,
top是按照 CPU 使用率来排序的。你可以使用以下命令来改变排序依据:- 按
Shift+P或者在 Caps Lock 开启状态下按P来按照 CPU 使用率排序。 - 按
Shift+M或者在 Caps Lock 开启状态下按M来按照内存使用率排序。 - 按
Shift+V或者在 Caps Lock 开启状态下按V来按照虚拟内存大小排序。 - 按
Shift+T或者在 Caps Lock 开启状态下按T来按照时间排序。
- 按
搜索: 你可以使用
/键来搜索进程名或命令。帮助: 按
h或H键可以显示命令的帮助信息。其他常用命令:
q: 退出top。k: 发送信号给选定的进程。r: 改变选定进程的优先级(nice 值)。s: 设置更新间隔。m: 切换是否显示交换空间(Swap)信息。l: 显示最近的系统负载变化曲线。t: 切换是否显示完整的命令行。
扩展功能
除了标准的 top 命令外,还有一些扩展选项可以修改其行为:
top -b: 将top输出重定向到文件或管道。top -d <seconds>: 设置更新间隔为<seconds>秒。top -u <username>: 仅显示属于<username>用户的进程。top -c: 显示完整的命令行而不是仅仅显示命令名。top -n <num>: 运行<num>次更新后自动退出。
示例
如果你想按内存使用率对进程进行排序并显示完整命令行,可以这样操作:
- 启动
top。 - 按
Shift+M或在 Caps Lock 开启状态下按M来按内存使用率排序。 - 按
c显示完整的命令行。
curl命令
curl是一个强大的命令行工具,用于在没有用户交互的情况下传输数据,支持多种协议,如HTTP、HTTPS、FTP等。它不仅能够下载文件,还能上传文件、发送POST请求等,在开发、测试和日常使用中广泛使用。
基本格式
curl [选项] [URL]常用选项
-O:将文件下载并以服务器上的文件名保存。-o:将文件下载并指定保存的本地文件名。-L:跟随重定向链接。-s:静默模式,不输出任何东西。-S:当遇到错误时仍然输出错误信息。-X:指定 HTTP 请求方法(如 GET、POST、PUT 等)。-d:发送 POST 请求的数据。-H:添加 HTTP 请求头。-u:设置服务器认证的用户名和密码。-b:发送 cookies。-c:将服务器设置的 cookies 保存在一个文件中。-i:输出响应头信息。-I:只输出响应头信息,不输出响应体。-v:输出通信的整个过程,用于调试。-k:允许curl执行“不安全”的 SSL 连接和传输。
常见用法
GET 请求
curl http://cengxuyuan.cn带参数的 GET 请求
curl "http://cengxuyuan.cn/page?param1=value1¶m2=value2"POST 请求
curl -d "param1=value1¶m2=value2" -X POST http://cengxuyuan.cn/page或者使用 -d 的 JSON 格式:
curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://cengxuyuan.cn/page下载文件
curl -O http://cengxuyuan.cn/file.zip上传文件
curl -F "file=@path/to/local/file" http://cengxuyuan.cn/upload用户认证
curl -u username:password http://cengxuyuan.cn使用 cookies
curl -b cookies.txt -c cookies_new.txt http://cengxuyuan.cn显示响应头
curl -I http://cengxuyuan.cn跟随重定向
curl -L http://cengxuyuan.cn保存响应到文件
curl -o response.html http://cengxuyuan.cn使用 HTTP Basic 认证
curl -u username:password http://cengxuyuan.cn使用 HTTPS(忽略证书验证)
curl -k https://cengxuyuan.cn高级用法
curl 还支持多线程下载、代理、限速、用户代理设置等高级功能。
多线程下载
curl -# -O -C - -Q 'Range: bytes=0-1023' http://cengxuyuan.cn/file.zip -Q 'Range: bytes=1024-' -o file.zip.part设置代理
curl -x myproxy:port http://cengxuyuan.cn限速
curl --limit-rate 200k http://cengxuyuan.cn设置用户代理
curl -A "Mozilla/5.0" http://cengxuyuan.cncurl 的功能非常丰富,这里只列举了部分常见用法。更详细的用法和选项,可以通过 man curl 或 curl --help 来查看帮助文档。
使用 curl -v 命令跟踪链路
使用 -v 选项可以看到整个 HTTP 通信过程,这对于调试网络问题、理解 HTTP 协议、检查服务器配置或验证客户端请求都非常有用。
版本信息
首先,curl 会输出它自己的版本信息,以及所使用的 libcurl 库的版本信息。
* curl 7.64.1 (x86_64-apple-darwin18.2.0) libcurl/7.64.1 (SecureTransport) OpenSSL/1.0.2q
zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.5) nghttp2/1.36.0 librtmp/2.3请求初始化
curl 会显示它如何解析命令行参数,以及如何初始化请求。
* Trying 93.184.216.34...
* TCP_NODELAY setDNS 解析
curl 会显示它如何解析目标 URL 的 IP 地址。
* Connected to example.com (93.184.216.34) port 80 (#0)TLS/SSL 握手(如果是 HTTPS 请求)
如果请求的是 HTTPS 网址,curl 会显示 SSL 握手的过程,包括证书验证、密钥交换等。
查看代码
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):HTTP 请求
curl 会显示完整的 HTTP 请求,包括请求行、请求头和(如果是 POST 请求)请求体。
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.64.1
> Accept: */*
>HTTP 响应
curl 会显示完整的 HTTP 响应,包括状态行、响应头和响应体(除非使用 -i 或 -I 选项)。
查看代码
< HTTP/1.1 200 OK
< Date: Wed, 27 Jul 2024 18:57:58 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jul 2024 14:25:27 GMT
< ETag: "e00172-56d-5a39784096e80"
< Accept-Ranges: bytes
< Content-Length: 1389
< Content-Type: text/html
<
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<!-- ... rest of the HTML response ... -->
</head>连接关闭
最后,curl 会显示连接是如何被关闭的。
* Connection #0 to host example.com left intact查看路由命令
在Linux系统中,可以使用以下几种命令来查看路由表:
route命令:输入
route或route -n(使用-n选项可以显示数字形式的地址,而不是尝试解析它们)来查看当前的路由表。bashroute route -nnetstat命令:使用
netstat -r或netstat -rn命令也可以查看路由表。bashnetstat -r netstat -rnip route命令:对于较新的Linux发行版,
ip命令是较新的用来显示和管理路由的命令。baship routeip route show命令:同样使用
ip命令,但更明确地要求显示路由信息。baship route show
在现代Linux系统中,ip 命令逐渐取代了 route 和 netstat,因为它提供了更全面和更灵活的IP网络配置功能。
awk 命令
awk 是一种强大的文本处理工具,它在Unix和类Unix系统中被广泛使用。awk 命令的名称来源于它的三位创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的姓氏首字母。awk 不仅可以用于简单的文本搜索和替换,还可以执行复杂的文本分析和报告生成。
基本语法
awk 命令的基本语法如下:
awk 'pattern { action }' file或者,当需要指定多个模式-动作对时:
awk 'pattern1 { action1 } ; pattern2 { action2 }' file其中:
pattern是一个可选的匹配模式,用于指定哪些行应该被action处理。{ action }是当模式匹配时要执行的一系列命令。file是要处理的文件名。
如果省略了pattern,则action会应用于每一行。
内建变量
awk 提供了许多内建变量,这些变量可以在awk脚本中使用,例如:
NR:当前记录(行)的编号。NF:当前记录中的字段数量。$0:当前记录(整行)。$1、$2、...$n:当前记录的第n个字段(字段由FS分隔,默认是空格)。FS:字段分隔符,默认是空格或制表符。RS:记录分隔符,默认是换行符。
例子
以下是一些简单的awk命令示例:
打印每一行的第一个字段
awk '{ print $1 }' filename打印第一行
awk 'NR == 1' filename打印总字段数大于5的行
awk 'NF > 5' filename打印字段数和每行内容
awk '{ print NF, $0 }' filename使用自定义分隔符打印每行
awk -F, '{ print $1, $2 }' filename这里-F,指定了字段分隔符为逗号。
对文件中的数值进行求和
awk '{ sum += $1 } END { print sum }' filename这里END是一个特殊的模式,它会在文件处理结束后执行。
ps命令
ps(process status)是Linux和类Unix操作系统中用于查看当前系统上运行进程的命令。它提供了丰富的选项来显示不同类型的进程信息。
基本语法
ps [options]常用选项
a:显示所有与终端相关的进程。u:以用户为中心的格式显示进程信息。x:显示所有进程,不仅限于与终端关联的进程。e:显示所有进程,等同于-A。f:显示完整格式列表。l:显示长格式列表。j:显示与作业控制相关的信息。o:自定义输出格式。
常见用法
显示所有进程
ps aux或
ps -ef这两个命令都会列出系统上的所有进程,但aux是BSD风格,而-ef是System V风格。
显示长格式列表
ps -l这个命令会显示一个长格式的列表,包含更详细的进程信息。
自定义输出格式
ps -eo pid,ppid,cmd这个命令会按照指定的列(PID, PPID, CMD)来显示进程信息。
输出列的含义
以下是一些常用的列及其含义:
PID:进程ID。PPID:父进程ID。UID:运行该进程的用户ID。USER:运行该进程的用户名。%CPU:进程使用的CPU时间百分比。%MEM:进程使用的内存百分比。VSZ:进程的虚拟内存大小(以KB为单位)。RSS:进程的常驻内存大小(以KB为单位)。TTY:进程所关联的终端。STAT:进程状态(如R运行,S睡眠,T停止,Z僵尸)。START:进程开始时间。TIME:进程运行的总CPU时间。CMD:启动进程的命令。
进程状态码
STAT列中的状态码可以包含以下字符:
R:运行。S:睡眠(可中断)。D:睡眠(不可中断,通常是在等待I/O)。T:停止。Z:僵尸进程。<:高优先级(以下划线开头)。N:低优先级(以尖括号结尾)。L:有页面锁定在内存中。s:会话领导者。l:多线程(使用CLONE_THREAD, 类似于轻量级进程)。+:前台进程组。
示例
查看当前用户的所有进程:
ps -u $USER查看特定进程ID的信息:
ps -p PID其中PID是我们想查看的进程的ID。
lsof命令
lsof(list open files)是Linux和类Unix操作系统中的一个命令行工具,用于列出由进程打开的所有文件和网络连接。
基本语法
lsof [options] [file]常用选项
-a:逻辑与操作,用于组合其他选项。-c <进程名>:列出指定进程名打开的文件。-p <PID>:列出由指定进程ID(PID)打开的文件。-u <用户名>:列出由指定用户名打开的文件。-i [i]:列出符合条件的网络文件信息,[i]可以是协议或端口。-n:不解析主机名,显示数字形式的IP地址。-P:不解析端口号,显示端口号的数字形式。-l:不显示用户ID(UID),只显示用户名。-t:仅列出运行中的进程。-r:间隔一定时间重复执行lsof命令。-h:显示帮助信息。
常见用法
列出所有打开的文件
lsof这个命令会列出系统上所有打开的文件和进程。
列出指定进程打开的文件
lsof -p PID将PID替换为我们想要检查的进程ID。
列出指定用户打开的文件
lsof -u username将username替换为用户名。
列出指定协议或端口的网络连接
lsof -i [protocol][:service-port]例如,要列出所有使用TCP协议的进程:
lsof -i tcp或者,要列出所有使用端口80的进程:
lsof -i :80查看某个文件被哪些进程打开
lsof /path/to/file将/path/to/file替换为我们想要检查的文件路径。
输出列的含义
以下是lsof命令输出的部分列及其含义:
COMMAND:进程的名称。PID:进程ID。USER:运行该进程的用户。FD:文件描述符,可以是(例如)cwd(当前工作目录)、txt(程序代码)、mem(内存映射文件)、0u(UNIX域套接字)等。TYPE:文件类型,如DIR(目录)、REG(常规文件)、CHR(字符设备)、BLK(块设备)等。DEVICE:设备号(主设备号和次设备号)。SIZE:文件的大小(如果适用)。NODE:文件的inode号。NAME:文件名。
示例
列出所有使用TCP协议的进程:
lsof -i tcp列出所有打开文件的用户名为root的进程:
lsof -u root查看文件/var/log/syslog被哪些进程打开:
lsof /var/log/sysloglogrotate日志管理
Linux的logrotate是一个日志管理工具,它用于自动截断、压缩、删除和邮寄日志文件。
logrotate基于配置文件来管理日志文件。它会定期检查配置文件中指定的日志文件,根据设定的规则进行轮转。
logrotate的配置文件
logrotate的配置文件通常位于以下路径:
/etc/logrotate.conf:主配置文件/etc/logrotate.d/:包含各个服务的日志轮转配置
配置文件格式
logrotate配置文件的基本格式如下:
日志文件路径 {
轮转规则1
轮转规则2
...
}常用的轮转规则
以下是一些常用的轮转规则:
daily:每天轮转一次weekly:每周轮转一次monthly:每月轮转一次rotate n:保留最新的n个日志文件,其余删除compress:通过gzip压缩轮转后的日志文件create mode owner group:创建新的日志文件,并设置权限、所有者和组postrotate/endscript:在轮转后执行的脚本prerotate/endscript:在轮转前执行的脚本
示例配置
以下是一个简单的logrotate配置示例:
查看代码
/var/log/nginx/access.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
postrotate
/usr/bin/kill -USR1 `cat /var/run/nginx.pid`
endscript
}这个配置表示每天轮转一次Nginx的访问日志,保留最近7天的日志文件,并对其进行压缩。如果日志文件不存在,则忽略错误。如果日志文件为空,则不进行轮转。创建新日志文件时,权限为640,所有者为root,组为adm。轮转后执行脚本,用于通知Nginx重新打开日志文件。
手动执行logrotate
在需要的情况下,可以手动执行logrotate进行日志轮转:
logrotate /etc/logrotate.conf或者指定配置文件:
logrotate /etc/logrotate.d/nginx查看logrotate的状态
可以使用以下命令查看logrotate的状态:
logrotate --debug /etc/logrotate.conf这将显示logrotate执行过程中的详细信息,有助于调试配置文件。
less命令
less 是一个在Unix和类Unix系统中广泛使用的文本文件查看器。它允许用户以交互方式查看文件内容,而不需要将整个文件加载到内存中。less 命令是 more 命令的改进版,提供了更多的功能和灵活性。
主要功能
- 逐页查看:
less允许用户一次查看文件的一部分,按页查看。 - 向前和向后滚动:用户可以向前和向后滚动文件内容。
- 搜索:可以在文件中搜索特定的文本字符串。
- 支持管道:
less可以通过管道接收来自其他命令的输出。 - 支持多个文件:可以同时打开多个文件,并在它们之间切换。
常用命令
在 less 的交互模式下,以下是一些常用的键盘命令:
- 空格键:向下滚动一页。
- b:向上滚动一页。
- 上下箭头:向上或向下滚动一行。
- pagedown/pageup:向下或向上滚动一页。
- /:向前搜索文本字符串(输入搜索词后按 Enter)。
- ?:向后搜索文本字符串。
- n:重复前一个搜索(与
/或?相同方向)。 - N:重复前一个搜索(相反方向)。
- g:跳转到文件的开头。
- G:跳转到文件的末尾。
- h:显示帮助页面。
- q:退出
less。 - =:显示当前行号。
- d:向下滚动半页。
- u:向上滚动半页。
命令行选项
less 命令也支持多种命令行选项,以下是一些常用的选项:
-N:显示行号。-i:搜索时忽略大小写。-S:禁止折行。-M:显示更多的提示信息,包括百分比和行号。-F:如果文件很小时,不使用less,直接输出到标准输出。-X:退出时不清除屏幕。-R:原始输出,不进行颜色处理。
示例
less -N /var/log/messages # 查看日志文件,并显示行号
less -i /path/to/file # 搜索时忽略大小写
less -S file.txt # 查看文件,不折行less 是一个功能强大的工具,适合查看大文件,因为它不会一次性加载整个文件,这样可以节省内存并提高效率。
