首页 >> 大全

程序员必看 Linux 常用命令(重要)

2023-10-05 大全 19 作者:考证青年

文件操作命令 find

常用的option 选项 | 描述
-mount     | 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n    | 在过去 n 分钟内被读取过
-atime n   | 在过去 n 天内被读取过的文件
-cmin n    | 在过去 n 分钟内被修改过
-ctime n   | 在过去n天内被修改过的文件
-gid n     | gid 是 n 文件。或 -group name, group 名称是 name 的文件
-pid n     | pid 是 n 的文件
-ipath p   | 路径名称符合 p 的文件。或 -path p,ipath 会忽略大小写
-name name | 文件名称符合 name 的文件。或者-iname name,iname 会忽略大小写
-size n    | 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type c    | 文件类型是c的文件。d: 目录;f: 一般文件;l: 符号连结;s: socket

find 示例

// 查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们
# find /var/log -type f -mtime +7 -ok rm {} \;

touch 和 vim

「touch」 可用于创建一个空文件,如果文件存在,则会更改文件的访问时间和修改时间

touch 示例

~~ #创建一个名为“file”的新的空白文件,如果存在则会修改其时间属性
# touch file

「vim」 Vim是从 vi 发展出来的一个文本编辑器,是在 linux 系统交互界面进行文件查看,编写文本的首选工具

vim 共分为三种模式,分别是命令模式( mode),输入模式( mode)和底线命令模式(Last line mode)

1 命令模式:用户 vim fileName,便进入了命令模式i         切换到输入模式,以输入字符:         冒号切换到底线命令模式/word     向光标之下寻找一个名称为 word 的字符串?word     向光标之上寻找一个字符串名称为 word 的字符串n         重复前一个搜索(与 / 或 ? 有关)N         反向重复前一个搜索(与 / 或 ? 有关)PageUp    上翻页PageDown  下翻页G       移动到这个档案的最后一行(常用)nG       n 为数字。移动到这个档案的第 n 行2 输入模式: 在命令模式下按下i就进入了输入模式; ESC 退出输入模式,切换到命令模式字符按键、shift组合    输入字符ENTER                 回车键,换行BACK SPACE            退格键,删除光标前一个字符DEL                   删除键,删除光标后一个字符方向键                在文本中移动光标HOME/END              移动光标到行首/行尾Page Up/Page Down     上/下翻页Insert                切换光标为输入/替换模式,光标将变成竖线/下划线3 底线命令模式: 在命令模式下按下 ":" 就进入了底线命令模式; ESC退出模式,切换到命令模式:q                 退出 vim 程序:w                 保存文件:wq                保存后离开:!q                不保存退出:w [filename]      将编辑的数据储存成另一个档案:r [filename]      在编辑的数据中,读入另一个档案的数据。追加到游标所在行后面:!ShellCommand     暂时离开 vi 到指令行模式下执行 shellCommand 的显示结果:%s/word1/word2/g  从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 :%s/word1/word2/gc 和 %s/word1/word2/g 功能一致,不过每次替换都需用户确认

less、cat、more、tail 和 head

「less」 是linux 必不可少的查看文件工具,功能极其强大

less [option] 文件
option 常用参数
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p pattern 搜索 pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-s 把连续多个空白行作为一个空白行显示;

less 文件后可进行的动作操作和 vim 在命令模式下的操作相似;less在查看文本时的常用动作命令如下

Enter      向下移动一行
y          向上移动一行
Space      向下滚动一屏
b          向上滚动一屏
d          向下滚动半屏
u          向上滚动半屏
g          跳到第一行
G          跳到最后一行
/pattern   向下搜索pattern ,比如 /MAIL 表示在文件中搜索MAIL单词
?pattern   向上搜索pattern 
n          重复前一个搜索(与 / 有关)
N          反向重复前一个搜索(与 / 有关)
v          调用 vi 编辑器
q          退出 less
!command   调用 shell 命令;比如 !ls 显示当前目录下的所有文件

「more」 常用于显示输出的内容,然后根据窗口的大小进行分页显示,然后还能提示文件的百分比。命令格式:more 文件,more 常用操作指令如下

Enter        向下n行,需要定义,默认为1行;
Ctrl+f       向下滚动一屏
空格键        向下滚动一屏
Ctrl+b       返回上一屏
=            输出当前行的行号
:f           输出文件名和当前行的行号
v            当我们查看某一文件时,想调用vi来编辑它,用 v 动作指令
!command     调用 shell,并执行command命令
q            退出 more

「 cat」 常用于连接文件并打印到标准输出设备上,也可用于查看文件。格式:cat [| ] , 默认是 echo,cat会一次性显示整个文件的内容,不分页

「head」 是显示一个文件的内容的前多少行;常用命令格式:head -n 行数值 文件名

「tail」 是显示一个文件的内容的后多少行;常用命令格式:tail -n 行数值 文件名

grep、zgrep

grep 一般用于在文件中查和匹配模式匹配的每一行数据。命令格式 grep [] '' [files];grep 支持处理管道的输出数据; 支持正则表达式;files 可以是多个文件,用空格分开

grep 无法在压缩文件匹配查找数,此时可以用 zgrep,zgrep 适用处理压缩后的gz等格式文件

options选项 | 功能描述
-i | 忽略大小写
-v | 不匹配匹配的
-l | 输出匹配的文件名
-L | 输出不匹配的文件名
-c | 输出匹配的数目(行数)
-C num  |       输出匹配的前后 num 条行数
-n | 输出匹配行的同时在前面加上文件名及在文件名中的行数

grep 和 zgrep 示例

~~ 输出匹配 lwl 数据,及前后十行
# grep -C 10 'lwl' log.txt

cp

文件目录复制可用使用 cp 命令。cp 格式:cp [选项参数] ...

cp 选项参数 | 描述
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
-f | 覆盖已经存在的目标文件而不给出提示。
-i | 与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖
-l | 不复制文件,只是生成链接文件

cp 示例

~~ 将当前目录 csc/ 下的所有文件复制到新目录 lwl 下
# cp –r csc/ lwl

mv

mv 可用来移动文件夹、文件 或者 修改文件名、目录名

option 参数 | 描述
-b | 当目标文件存在时,先进行备份再覆盖
-f | 当目标文件存在时,强制覆盖
-i | 默认选项,当目标文件存在时,提示是否覆盖
-t | 先指定目标,再指定源目标。即目标 和 源目标 参数位置互换

mv 示例

~~ 把 csc.txt 修改名字为 lwl.txt
# mv csc.txt lwl.txt
~~ 将 csc 目录下的文件移到 lwl 下
# mv csc/ lwl

rm

rm 命令用于删除一个文件或者目录;命令格式 rm [] /

option参数 | 描述
-i | 删除前逐一询问确认
-f | 即使原档案属性设置为只读,也可强制删除,无需确认
-r | 将目录及以下之档案亦逐一删除

rm 示例

~~ 删除文件名 test.txt
# rm  -rf   test.txt

mdkir

mdkir命令用于创建目录, mkdir [-p] ;-p 确保目录名称存在,不存在的就建一个

tar 和 jar

tar 的命令格式:tar [-] /;tar具有打包和压缩功能,普通文件和文件夹可以被打包成 xxx.tar,如果要压缩,则是在打包之后再压缩,格式是 xxx.tar.gz

tar [-cxtzjvfpPN] 文件与目录
常用参数:描述
-c :建立一个压缩文件 
-x :解开一个压缩文件
-t :查看tarfile 里面的文件!特别注意,c/x/t 仅能存在一个,不可同时存在
-z :用 gzip 解压缩
-j :用 bzip2 解压缩
-v :压缩的过程中显示文件,这个常用,但不建议用
-f :使用档名,在 f 之后要立即接档名!例如使用『 tar -zcfv tfile sfile』就是错误的写法,要写成 『tar -zcvf tfile sfile』才对喔
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :(大写P)使用绝对路径来压缩
-r : 新增文件到已存在的备份文件的结尾部分
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中
--exclude file :在压缩的过程中,不要将 FILE 打包

tar 示例

~~ 打包不压缩:/home/lwl 目录
# tar -cvf lwl.tar /home/lwl
~~ 打包并压缩:/home/lwl 目录
# tar zcvf lwl.tar.gz /home/lwl
~~ 解压 lwl.tar.gz
# tar zxvf lwl.tar.gz~~ 压缩 lwl.java 为 bz2 格式
# tar jcvf lwl.tar.bz2 lwl.java
~~ 解压 lwl.tar.bz2
# tar jxvf lwl.tar.bz2~~ 解压部分文件 log2021.log
# tar -zxvf log.tar.gz log2021.log

jar 的命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录] ;其中{ ctxu }这四个选项必须选其一。[ v f m e 0 M i ]是可选选项,文件名是必须的

jar {c t x u f }[ v m e 0 M i ][-C 目录] fileName 
jar 的选项参数和 tar 差不多,如下-c :创建一个jar包
-t :显示jar中的内容列表
-x :解压jar包
-u :添加文件到jar包中
-f :指定jar包的文件名
-v :生成详细的报造,并输出至标准设备
-m :指定manifest.mf文件.(manifest.mf 文件中可以对jar包及其中的内容作一些一设置)
-0 :产生jar包时不对其中的内容进行压缩处理
-M :不产生所有文件的清单文件(Manifest.mf)。这个参数会忽略掉 -m 参数的设置
-i :为指定的jar文件创建索引文件
-C :表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

jar 示例

~~ 利用hello目录创建 hello.jar 包,并显示创建过程
# jar cvf hello.jar hello
~~ 往 jar 包添加文件,将 HelloWorld.java 添加到 hello.jar 包中
# jar uf hello.jar HelloWorld.java    
~~  解压 hello.jar 至当前目录
# jar xvf hello.jar

chmod

chmod 是控制用户对文件的权限的命令, 命令格式:chmod [-cfvR] mode file

## -cfvR 参数解析
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)## mode [ugoa][+-=][rwxX-] 参数解析
u 表示该文件的拥有者
g 表示与该文件的拥有者属于同一个群体(group)者
o 表示其他以外的人
a 包扣 u g o
## [+-=]
+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限
## [rwxX-]
r 表示可读取
w 表示可写入
x 表示可执行
X 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
- 不具任何权限

chmod 示例

# chmod ugo+r lwl.txt
# chmod ug+w,o-w csc.txt lwl.txt

ln

命令格式:ln [] [源文件或目录] [目标文件或目录];当我们需要在不同的目录,用到相同的文件时,又不想浪费空间复制相同的文件,可以用ln 链接它,相当创建一个快捷图标

options 参数 | 描述
-b | 删除,覆盖以前建立的链接
-d | 允许超级用户制作目录的硬链接
-f | 强制执行
-i | 交互模式,文件存在则提示用户是否覆盖
-n | 把符号链接视为一般目录
-s | 软链接(符号链接)

软链接:以路径的形式存在。类似于操作系统中的快捷方式;可以对一个不存在的文件名进行链接;可以对目录进行链接;软链接可以 跨文件系统 ,硬链接不可以

硬链接:以文件副本的形式存在。但不占用实际空间;不允许给目录创建硬链接;硬链接只有在同一个文件系统中才能创建

ln 示例

~~ 给文件创建软链接,log2021.log文件创建软链接log2021,如果log2021.log丢失,log2021将失效
# ln -s log2021.log link2021

远程登录与操作 ssh

linux下的ssh服务是一个守护进程(demon),ssh 服务端的进程名为 sshd ,负责实时监听客户端的请求(默认22端口),包括公共秘钥等交换等信息。ssh的客户端可以用 ,, 等工具进行连接,也可以在 linux 命令窗口使用 ssh 命令连接 ssh 服务端

命令格式:ssh [-p port] user@ 或者 ssh [-p port] user@ ; 会提示输入密码

ssh示例

~~ 登录 192.168.25.137 ,并执行 ls /backup/data
# ssh root@192.168.25.137 ls /backup/data

sftp

登录sftp服务器 sftp -oPort=23 user@

~~ 上传,第一个目录是本机的, 第二个参数远端的    
> put /etc/hosts /home/lwl   
~~ 下载,第一个目录是远端的, 第二个参数是本机的
> get /home/lwl /home/csc

scp

如果是涉及不同linux系统间的文件复制则用 scp, 格式: scp []

options 选项参数 | 描述-P | port:注意是大写的P, port是指定数据传输用到的端口号
-p | 保留原文件的修改时间,小写p,访问时间和访问权限
-r | 递归复制整个目录
-C | 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)

scp 示例

~~ 从本地复制到远程 
~~ A 格式: scp localFile username@remoteIp:filePath; B 格式:scp localFile remoteIp:filePath 
~~ A 命令指定了用户名,但命令执行后需要输入密码,B 格式则需要输入用户名和密码
# scp -r /home/lwl/ root@www.csc.com:/home/lwl/ ~~ 从远程复制到本地 
~~ 格式:scp remoteIp:filePath localFile
# scp -r www.csc.com:/home/lwl/ /home/lwl/

文件同步 rsync

与其他文件传输工具(如 FTP 或 scp)不同,和 scp 功能类似。rsync 的最大特点是会检查发送方和接收方已有的文件

# rsync -r source destination

linux与客户端的上传下载命令:rz、sz

用 ssh 管理 linux 服务器时经常需要远程与 win 本地之间交互文件。直接用自带的上传下载功能无疑是最方便的。上传:rz、下载:sz

在 上使用、 软件,用 rz、sz 进行上传下载

~~ 上传文件到linux;弹出SecureCRT上传窗口,用SecureCRT来上传
# rz    
~~ 下载文件到客户端(window)
# sz filename

磁盘挂载 df

df 用于查看磁盘空间占用情况:df [-] [file]

options 参数解释-i                   显示inode信息
-h                   方便阅读方式显示
-k                   区块为1024字节
-m                   区块为1048576字节
-a                   全部文件系统列表
-T                   显示文件系统类型
-t<文件系统类型>      只显示选定文件系统的磁盘信息
-x<文件系统类型>      不显示选定文件系统的磁盘信息

df 示例

# df -hT
文件系统          类型            容量  已用  可用 已用% 挂载点
devtmpfs          devtmpfs         63G     0   63G    0% /dev
tmpfs             tmpfs            63G     0   63G    0% /dev/shm
tmpfs             tmpfs            63G  4.1G   59G    7% /run

mount

mount 命令是经常会使用到的命令,它用于挂载Linux系统外的文件

命令格式:mount [-t vfstype] [-o options] device dir
1、-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型
iso9660 : 光盘或光盘镜像 
msdos   : DOS fat16文件系统 
vfat    : Windows 9x fat32文件系统
ntfs    : Windows NT ntfs文件系统
smbfs   : Mount Windows文件网络共享
nfs     :UNIX(LINUX) 文件网络共享2、-o options 主要用来描述设备或档案的挂接方式
loop      :用来把一个文件当成硬盘分区挂接上系统 
ro        :采用只读方式挂接设备 
rw        :采用读写方式挂接设备 
iocharset :指定访问文件系统所用字符集3、device 要挂接(mount)的设备4、dir设备在系统上的挂接点(mount point)

mount 示例

~~ 1 挂接U盘,/dev/sdd1 是 U 盘里的磁盘分区
# mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb~~ 2 挂接Windows文件共享
~~ administrator 和 pldy123 是ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$ 是这台计算机的一个磁盘共享
# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba~~ 3 linux 挂接(mount)其他linux系统 NFS 共享 
/export/home/sunky 10.140.133.23(rw)  ~~ 在服务端 /etc/exports文件配置共享目录
~~ 在服务端启动 nfs 服务
/etc/rc.d/init.d/nfs start 启动NFS服务 
/etc/rc.d/init.d/nfs stop 停止NFS服务
~~ linux 客户端挂接 NFS 共享
# mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs

进程管理 启动和结束 和

「」 命令本身是一个shell脚本,它会在 /etc/init.d/ 目录查找指定的服务脚本,然后调用该服务脚本来完成任务;命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启()、查看状态()等。命令格式: 服务名 [start|stop|||]

~~ service 命令: 停止、启动、查看 redis服务
# service redis stop   ~~ 等于在 /etc/init.d/ 目录下运行 ./redis stop
# service redis start  ~~ 等于在 /etc/init.d/ 目录下运行 ./redis start
# service redis status ~~ 等于在 /etc/init.d/ 目录下运行 ./redis status

「」 命令兼容了 命令,且包含其他更强大功能

用来管理 linux系统的多种资源:系统服务、硬件设备、挂载点、等;下面则主要介绍关于 系统服务的相关命令使用。因为 一般用于实现服务自启动的脚本

~~ 系统自启动时 启动 cron 服务,启用或禁用它
# systemctl enable crond.service
# systemctl disable ccrond.service
# systemctl is-active crond.service  ~~ 是否正在运行
# systemctl is-enabled crond.service ~~  是否建立了启动链接~~ 启动、重启、停止、重载、杀死服务以及查看服务 httpd
# systemctl start httpd.service
# systemctl restart httpd.service
# systemctl stop httpd.service
# systemctl reload httpd.service
# systemctl status httpd.service
# systemctl kill apache.service~~ 列出所有服务(包括启用的和禁用的)
# systemctl list-units      ~~  列出所有管理的资源单元
# systemctl list-unit-files --type=service   ~~ 只列出所有 service 类型资源~~ 获取某个服务(httpd)的依赖性列表
# systemctl list-dependencies httpd.service~~ 检查 httpd 服务的所有配置细节
# systemctl show httpd

xxx. 文件的详细配置介绍请上网自行查看,下面给个简单的模板介绍

[Unit]
Description:描述
After:auditd.service 在auditd.service启动后才启动
ConditionPathExists: 执行条件[Service]
EnvironmentFile: 变量所在文件
ExecStart: 执行启动命令
Restart: fail时重启[Install]
Alias:服务别名
WangtedBy: 多用户模式下需要的

nohup 和 &

nohup 和 & 组合可以不挂断地在后台运行进程,命令格式:nohup [agrs..] [&]。& 表示程序可以在linux 后台运行,在当前 shell 界面 ctrl C 退出,该程序也能继续运行,它可以忽略 信号,不过它会随着 shell 程序的关闭而停止,这是因为 & 运行的进程对 信号不免疫

加上 nohup 就可以做到忽略信号

~~ 在后台运行 lwl.py,且不随着 shell 关闭而死亡。永远存在
# nohup python lwl.py &> /var/log/lwl.log &

kill

如果在linux遇到需要杀死或停止某进程,可以使用 kill, 示例:# kill -9 1211。kill 也不单单用于停止进程,可用kill [-s ][程序] 发送指定信号给指定程序,而# kill -l 可列出全部的信号名称。

~~ 列出全部的信息名称
# kill -l 
1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
...
...
~~ 发送 SIGQUIT 给 pid = 1211 的进程
# kill -s SIGQUIT 1211  ~~ 或者 kill -SIGQUIT 1211

系统性能参数查看 ps

ps 命令用于显示当前进程的状态。命令格式:ps []

options 参数解释
-A/a      列出所有的进程
-e        等于 “-A”
f         显示程序间的关系
-w        显示加宽可以显示较多的资讯
-au       显示较详细的资讯
-aux      显示所有包含其他使用者的行程

ps -ef 各项指标解释

# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  6 18:39 pts/0    00:02:27 java -jar /opt/lp-admin.jar
root        102      0  0 18:40 pts/1    00:00:00 /bin/bash
root        158    102  0 18:47 pts/1    00:00:00 /usr/bin/python /usr/bin/dstat
---------各项指标解析-----------------------
UID    程序的执行者 UID
PID    进程的ID号
PPID   则是其上级父程序的ID
C      cpu 使用的资源百分比
TTY    登入者的终端机位置
TIME   CPU 执行的时间
CMD    进程执行的命令

ps -aux 各项指标解释

# ps -aux
ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  7.0  5.3 13278220 1736948 pts/0 Ssl+ 18:39   2:24 java -jar /opt/lp-admin.jar
root        102  0.0  0.0  15264  2044 pts/1    Ss   18:40   0:00 /bin/bash
root        158  0.0  0.0  52176  6756 pts/1    T    18:47   0:00 /usr/bin/python /usr/bin/dstat
root        159  0.0  0.0  52176  6756 pts/1    T    18:49   0:00 /usr/bin/python /usr/bin/dstat -n -N eth0,total
---------各项指标解析-----------------------
USER    行程拥有者
PID     pid
%CPU    占用的 CPU 使用率
%MEM    占用的记忆体使用率
VSZ     占用的虚拟记忆体大小
RSS     占用的记忆体大小
TTY     终端的次要装置号码 (minor device number of tty)
STAT    该进程程的状态:D:  无法中断的休眠状态 (通常 IO 的进程)R:  正在执行中S:  可中断的睡眠状态T:  暂停状态或跟踪状态Z:  僵尸进程(zombie),无法正常终止X: 退出状态,进程即将被销毁
START   登入者的终端机位置
TIME    CPU 执行的时间
COMMAND 进程执行的命令

lsof

lsof(List Open Files) 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。命令格式 lsof []

options 参数解释-a            列出打开文件存在的进程
-c<进程名>     列出指定进程所打开的文件(常用)
-p<进程号>     列出指定进程号所打开的文件(常用)
-g            列出属于gid的进程详情
-u 显示归属uname或uid的进程情况
-d   列出占用该文件号的进程
+d<目录>       列出目录下被打开的文件
+D<目录>       递归列出目录下被打开的文件
-n<目录>       列出使用NFS的文件
-i<条件>       列出符合条件的进程。(ip4/ip6协议、端口、 @ip )
-u            列出UID号进程详情

lsof 各项指标解释

# lsof
command  PID USER   FD   type   DEVICE     SIZE     NODE  NAME
init       1 root  txt   REG       8,2    43496  6121706 /sbin/init---------各项指标解析-----------------------
COMMAND  进程的名称 
PID      进程标识符 
USER     进程所有者 
FD       文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 
TYPE     文件类型,如DIR、REG等 
DEVICE   指定磁盘的名称 
SIZE     文件的大小 
NODE     索引节点(文件在磁盘上的标识) 
NAME     打开文件的确切名称

lsof 示例

~~ 显示所有打开80端口的进程
# lsof -i:80       
~~ 那个进程在占用/etc/passwd
# lsof /etc/passwd 
~~ 显示使用fd为1211的进程
# lsof -d 1211     
~~ 显示那些文件被pid为 1211 的进程打开
# lsof -p 1211     
~~ 查看sendmail进程的文件使用情况
# lsof -c sendmail

pidof

pidof 是linux系统中用来查找正在运行进程的进程号(pid)的工具。如果我们提前知道进程名,则可以根据进程名查找pid,命令格式:pidof [] 进程名称

options 选项参数-s: 仅返回一个进程号;
-c: 仅显示具有相同“root”目录的进程
-x: 显示由脚本开启的进程
-o: 指定不显示的进程ID

pidof 示例

# pidof -s nginx
1211

top

top 命令是用来监控Linux系统状况,比如cpu、内存,进程等资源使用情况。命令格式:top [-]

options 选项参数-i<时间>    设置刷新间隔时间
-u<用户名>    指定用户名
-p<进程号>    指定进程
-H           开启线程查看

top 各项输出指标解释

# top
top - 18:20:27 up 26 days,  8:30,  2 users,  load average: 0.04, 0.09, 0.13
Tasks: 168 total,   1 running, 167 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.5 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:  32762356 total, 14675196 used, 18087160 free,      884 buffers
KiB Swap:  2103292 total,        0 used,  2103292 free.  6580028 cached MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                
1260 root      20   0 7933492 1.173g  14004 S 0.333 3.753  58:20.74 java                       
1503 root      20   0   69172   2240   1412 S 0.333 0.007   0:48.05 httpd                       
1520 daemon    20   0  358140   3980    776 S 0.333 0.012   6:19.55 httpd                       
2323 mysql     20   0 19.918g 4.538g   9404 S 0.333 14.52 352:51.44 mysqld                     
.......
---------各项指标解析---------------------------------------------------
第一行统计信息区18:20:27                     当前时间up 25 days, 17:29             系统运行时间,格式为时:分1 user                     当前登录用户数load average: 0.04, 0.09, 0.13  系统负载,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值Tasks:进程相关信息running   正在运行的进程数sleeping  睡眠的进程数stopped   停止的进程数zombie    僵尸进程数
Cpu(s):CPU相关信息%us:表示用户空间程序的cpu使用率(没有通过nice调度)%sy:表示系统空间的cpu使用率,主要是内核程序%ni:表示用户空间且通过nice调度过的程序的cpu使用率%id:空闲cpu%wa:cpu运行时在等待io的时间%hi:cpu处理硬中断的数量%si:cpu处理软中断的数量%st:被虚拟机偷走的cpu
Mem  内存信息  total 物理内存总量used 使用的物理内存总量free 空闲内存总量buffers 用作内核缓存的内存量
Swap 内存信息  total 交换区总量used 使用的交换区总量free 空闲交换区总量cached 缓冲的交换区总量~~ 常用的指标
PID 进程id
PPID 父进程id
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S       进程状态; 相关枚举值解释查看 ps -ef S 项解释
COMMAND 进程启动执行的命令行

top 命令下,查看信息常用快捷键

h    显示快捷键帮助
k    终止一个进程
i    开/关忽略闲置和僵死进程
q    退出程序
r    重新安排一个进程的优先级别
S     切换到累计模式
s    更改刷新间隔时间,单位秒
f,F    从当前显示中添加或者删除项目
o,O    改变显示项目的顺序
l    切换显示平均负载和启动时间信息
m     切换显示内存信息
t    切换显示进程和CPU状态信息
c    切换显示命令名称和完整命令行
M     根据内存使用大小排序
P    根据CPU使用率进行排序 (默认排序)
T    根据时间/累计时间进行排序
1    展开多核cpu显示
H       线程查看模式切换为开或关

free

free 可查看系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。命令格式:free [-bkmg][-hlot][s delay][-c count]

free 选项参数-b,-k,-m,-g  表示输出显示的单位为 bytes,KB,MB,or GB,不添加选项的话默认以 KB 为单位显示-h          以人类可读的方式显示,即后边会自动带上单位-l          显示详细的低内存和高内存统计信息(增加了 Low 和 High 这两行显示)-o          使用旧的格式显示(不显示 -/+buffers/cache 这一行)-t          增加显示 Total 行,Total = Mem + Swap-s delay    每 delay 秒重复打印一次,delay 为具体的秒数-c count    循环打印 count 次后退出,count 为具体的次数。需要配合 -s delay 使用

free 示例

# free -mtotal       used       free     shared    buffers     cached
Mem:         32107      30414       1692          0       1962       8489
-/+ buffers/cache:      19962      12144
Swap:            0          0          0
------各项指标解释-------------------------------------------------
Mem 表示物理内存统计:total   物理内存总量,total = used + freeused    总使用缓存的数量(包含 buffers 与 cache),但其中可能部分缓存并未实际使用free    未被分配的内存shared  共享内存,一般系统不会用到,总是0buffers  系统分配但未被使用的 buffers 数量cached  系统分配但未被使用的 cache 数量-/+ buffers/cache:used    实际使用内存,等于第一行的 used - buffers - cachedfree    实际可用内存,等于第一行的 free + buffers + cachedSwap表示交换区的使用情况,也就是我们通常所说的虚拟内存total   总量虚拟内存used    使用的虚拟内存free    空闲的虚拟内存

是 的缩写,可以查看多核心的 cpu 中每个计算核心的统计数据。命令格式: [-P {cpu|ALL}] [delay [count]]

-P {cpu|ALL}  表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
delay          相邻的两次采样的间隔时间
count          采样的次数,count只能和delay一起使用

示例

# mpstat  -P ALL 2
Linux 3.10.0-862.el7.x86_64 (8f57ec39327b)      07/11/2021      _x86_64_        (6 CPU)07:19:07 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
07:19:09 PM  all   21.43    3.36    6.54    6.45    0.00    1.29    0.00    0.00    0.00   60.93
07:19:09 PM    0   20.41    3.57    7.14    4.08    0.00    1.53    0.00    0.00    0.00   63.27
07:19:09 PM    1   22.45    3.06    6.12    5.10    0.00    1.53    0.00    0.00    0.00   61.73
---------各项输出指标解释----------------------------------------------
CPU 处理器ID 
%usr 在 delay 时间段里,用户态的 cpu 时间(%)
%nice 
%sys 在 delay 时间段里,核心时间(%) 
%iowait 在 delay 时间段里,硬盘IO等待时间(%) 
%irq 在 delay 时间段里,硬中断时间(%) 
%soft 在 delay 时间段里,软中断时间(%) 
%steal 虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 
%guest 显示运行虚拟处理器时 CPU 花费时间的百分比 
%gnice  gnice/total*100
%idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%)

主要用于输出 CPU 和磁盘 I/O 相关的统计信息,命令格式: [] [delay [count]]

options 选项参数-c      只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果
-d      单独输出Device结果,不包括cpu结果
-k/-m   输出结果以kB/mB为单位,而不是以扇区数为单位
-x      输出更详细的io设备统计信息
delay   每次输出间隔时间
count   表示输出次数,不带count表示循环输出

默认命令的各项指标解析

# iostat
Linux 4.4.73-5-default        2021年07月08日  _x86_64_        (40 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle2.50    0.41    0.94    0.02    0.00   96.13Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              12.09        27.80       507.24   57343492 1046298308
sdb              17.95        30.91       647.84   63751096 1336305974
------各项指标解析-----------------------------------------------------------
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值%user      用户空间的CPU使用率%nice      CPU处在带NICE值的用户模式下的时间百分比%system    内核空间的CPU使用率%iowait    CPU等待IO的百分比 %steal     虚拟机的虚拟机CPU使用的CPU%idle      空闲的CPU   Device: 各磁盘设备的IO统计信息。各列含义如下:tps        每秒进程下发的IO读、写请求数量KB_read/s  每秒从驱动器读入的数据量,单位为K。KB_wrtn/s  每秒从驱动器写入的数据量,单位为K。KB_read    读入数据总量,单位为K。KB_wrtn    写入数据总量,单位为K

-x -k -d 1 2 的各项指标解析

# iostat -x -k -d 1 1
Linux 4.4.73-5-default (ceshi44)        2021年07月08日  _x86_64_        (40 CPU)Device:  rrqm/s   wrqm/s  r/s    w/s    rkB/s   wkB/s  avgrq-sz avgqu-sz await r_await w_await  svctm  %util
sda      0.08     2.48    0.37   11.71  27.80   507.24  88.53   0.02     1.34   14.96    0.90   0.09   0.10
sdb      0.00     1.20    1.28   16.67  30.91   647.83  75.61   0.17     9.51    9.40    9.52   0.32   0.57
------各项指标解析----------------------------------------------------------
rrqm/s:   每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s:   每秒对该设备的写请求被合并次数
r/s:      每秒完成的读次数
w/s:      每秒完成的写次数
rkB/s:    每秒读数据量(kB为单位)
wkB/s:    每秒写数据量(kB为单位)
avgrq-sz: 平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await:    平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm:    平均每次IO请求的处理时间(毫秒为单位)
%util:    采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

命令用于显示各种网络相关信息,如网络连接,路由表,网络连接状态。命令格式: [-]

options 参数解析-a (all)显示所有选项,默认不显示 Listen 相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令

各项输出指标解析

# netstat -pt 
Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name  
tcp        0      0 localhost:30037 *:*              LISTEN  2109/firefox
....
------各项指标解析----------------------------------------
Proto           协议
Recv-Q          接收队列 ,一般都应该是0。如果不是则表示软件包正在队列中堆积
Send-Q          发送队列,一般都应该是0。如果不是则表示软件包正在队列中堆积
Local Address   本地地址+port
Foreign Address 远端地址+port
State           状态
PID             进程pid
Program name    进程名

常用命令示例

# netstat -anp
# netstat -tnlp

(虚拟内存统计)可对操作系统的内存、进程、CPU,磁盘进行监控。相比top,可以看到整个机器的CPU、内存、IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)

命令格式

// -a:显示活跃和非活跃内存 -n:只在开始时显示一次各字段名称
# vmstat [-a] [-n] [delay [count]]
// f:总的fork进程 s:内存使用的详细信息 d:磁盘的读/写 m:系统的slab信息
# vmstat [-fsdm] 
// 查看指定磁盘分区统计信息
# vmstat [-p disk partition]

示例

$ vmstat 2 1
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 3498472 315836 3819540  0  0    0   1   2    0  3  1  96  0 0------各项指标解析----------------------------------------
Procs(进程)r:     运行队列中进程数量,当这个值超过了CPU数目,就会出现CPU瓶颈了b:    等待IO的进程数量Memory(内存):swpd:  使用虚拟内存大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了free:  可用内存大小buff:  用作缓冲的内存大小cache: 用作缓存的内存大Swap:si:    每秒从交换区写到内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉so:    每秒写入交换区的内存大小IO:(现在的Linux版本块的大小为1024bytes)bi:    每秒读取的块数bo:    每秒写入的块数,bi和bo一般都要接近0,不然就是IO过于频繁,需要调整系统in:    每秒中断数,包括时钟中断cs:    每秒上下文切换数,调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好CPU(以百分比表示):us:    用户进程执行时间 sy:    系统进程执行时间 id:    空闲时间(包括IO等待时间),中央处理器的空闲时间wa:    等待 IO 时间  st:    虚拟机的虚拟机CPU使用的CPU

dstat

vmstat 是对系统的整体情况进行统计,无法对某个进程进行深入分析,所以推荐下 dstat。dstat 是一个可以取代vmstat、iostat、netstat 这些命令的多功能命令工具,执行 dstat 命令,默认情况它会收集-cpu-、-disk-、-net-、-paging-、-system-的数据,一秒钟收集一次。命令格式:`dstat [options] [delay [count]]`,其中使用 -p pid 选项可针对某一进程进行统计监控

options 常用参数解析-l         显示负载统计量
-c         开启cpu统计
-C    选项跟着 cpu 的编号,显示该cpu 的统计
-d         开启 disk 统计
-g         开启分页统计
-y         开启系统统计,包括中断和上下文切换
-i         开启中断统计
-s     开启 swap 统计,包括used, free
-m         显示内存使用率(包括used,buffer,cache,free值)
-n         开启网络读写统计
–socket    显示网络统计数据
–tcp       显示常用的TCP统计
-N    选项跟着网络设备名,多个用逗号隔开,进行网络统计
-p         开启对进程统计,runnable, uninterruptible, new
-r         io开启请求统计,包括read requests, write requests--output文件  此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中
-–disk-util   显示某一时间磁盘的忙碌状况
-–freespace   显示当前磁盘空间使用率
-–proc-count  显示正在运行的程序数量
--top-bio-adv 指出块I/O最大的进程
--top-cputime 耗费CPU时间最多的进程名和耗费时间
--top-cpu-adv 显示CPU占用最大的进程
-–top-io      显示正常I/O最大的进程
-–top-mem     显示占用最多内存的进程

输出指标解析

# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 29   7  57   6   0   1|  85k 1457k|   0     0 |   0     0 |8350    67k30   9  54   6   0   1|   0  1290k| 857B  568B|   0     0 |  33k   75k
...------各项指标解析-----------------------------------
CPU的使用率usr   显示了用户占比sys   系统占比idl   空闲占比wai   等待占比hiq   硬中断siq   软中断情况磁盘的读写read  磁盘的读总数writ  磁盘的写总数网络设备发送和接受的数据recv  网络收数据总数send  网络发数据总数系统的分页活动in    内存页换入out   内存页换出系统统计  int   统计中断csw   上下文切换

指定展示各个网卡的收发状态

# dstat -n -N eth0,total
--net/eth0---net/total-recv  send: recv  send0     0 :   0     0 140B  140B: 140B  140B18k 6570B:  18k 6570B

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了