tips:紧接上一篇,Linux常用命令指南【上】

2.4 文件解压缩

2.4.1 官宣的linux压缩工具:tar

tar的基本命令格式为

tar [参数选项] [文件或目录]

我们前面学的命令凡是参数选项都要加-,tar命令有点特殊,加不加都可以,如 tar -z 可以写成 tar z。

tar常用命令:

tar -zcvf [压缩包名] [待打包文件或目录]
# [压缩包名] 一般为 tar.gz 后缀
# z :通过gzip压缩或解压
# c :创建新的tar包
# v :显示命令执行过程
# f :指定压缩文件的名字
# t : 不解压查看tar包内容 tar tvf [压缩包]
# 不解压查看压缩包内容 tar zxvf [压缩包] -C [解压路径]
# 将压缩参数的c换成x,便是解压
# -C:指定解压路径,不加-C解压到当前目录

常用命令示例:

# 先来准备点数据

cd ~
# 返回用户根目录 mkdir -p /var/www/yaojiaxiaoyuan/html
# 创建多级目录 touch /var/www/yaojiaxiaoyuan/html/yaomaomao{01..10}.html
# 在上面的目录中批量创建多个文件 tar zcvf www.tar.gz /var/www/yaojiaxiaoyuan/html
# 将目录/var/www/yaojiaxiaoyuan/html打包为www的tar包



mkdir /var/www/yaojiaxiaoyuan/html/test

find /var/www/yaojiaxiaoyuan/html ! -type d| xargs tar zcvf www2.tar.gz
# 查找/var/www/yaojiaxiaoyuan/html下不是目录的文件,将其打包为www2.tar.gz
# 根据之前find学到的命令,组合打包
# tar命令的--exclude参数也有排除打包的功能,自行研究,不再赘述。 tar -tvf www2.tar.gz
# 不解压查看压缩包www2.tar.gz中文件

mkdir ./yao/ yao2

tar zxvf www.tar.gz -C ./yao/
# 解压www.tar.gz 到yao目录下
# 可以看到连var这个目录打打包进来了

如果不想打包那么多层级怎么办,直接cd到需要打包的目录进行打包。

2.4.2 gzip

gzip只能打包文件,不能打包目录。

gzip打包文件后会将源文件删除。

gzip参数:

gzip 【参数选项】 【待压缩文件或压缩包】

# -d :解压
# -v :显示解压过程
# -l : 列出压缩文件内容信息
# -c : 不改变原始文件
# -r :递归压缩目录下所有文件
# -t :检查压缩文件完整性
# -数字<1-9> :指定压缩率,值越大压缩率越高,默认为6

gzip常用命令示例:

cd /var/www/yaojiaxiaoyuan/html 

gzip *.html
# 打包所有html文件,可以看到html压缩成gz文件后不见了。

gzip -l *.gz
# 不解压展示压缩包内信息 gzip -dv *.gz
# 解压gz文件

可以发现,解压后gz包也不见了。那怎么保留源文件?

echo  '试试' >> yaomaomao01.html
# 先在yaomaomao01.html文件中添加点内容,echo在这里的作用与sed类似 gzip -c yaomaomao01.html > 01.gz
# 使用-c + 重定向符号,将yaomaomao01.html压缩为01.gz,并且不删除源文件,解压也是一样的操作

gzip -dc 01.gz > 01.html
# 将01.gz解压为01.html,可以看到源文件01.gz还存在

扩展:可以使用zcat、zgrep、zless、zdiff等扩展组件查看压缩文件,与cat、grep、less和diff等命令一样,如图:

zcat 01.gz

gz不能压缩目录,这个开头说了,报错如下:

gzip test

# ==>> gzip: test is a directory -- ignored

2.4.3 zip/unzip
2.4.3.1 zip

zip压缩格式,windows、linux、mac上都是通用的压缩格式,并且跟tar一样,可以压缩目录。

zip yao.zip *
# 压缩当前目录下所有文件

但是这样打包并不能压缩子目录下文件,只能压缩子目录本身,如图:

cd test

touch test01.txt

cd ../

zip yao2.zip *

如同其他命令样,zip也有个-r参数,可以递归压缩

 zip -r yao2.zip *
# ==>> adding: test/test01.txt (stored 0%)

当前目录下已经有压缩包,想打包本目录的时候不将上个压缩包打进去,排除掉,怎么打包?使用-x参数:

zip -r  yao3.zip * -x yao2.zip

小结,zip几种打包方式,并有三个参数:

zip yao2.zip *
# 普通打包 zip -r yao3.zip *
# 递归打包 zip -r yao3.zip * -x yao2.zip
# 递归打包,排除某文件 zip -rq yao4.zip *
# 递归打包,不显示压缩信息 # 无参数,普通压缩
# -r :递归压缩
# -x :排除某个文件压缩
# -q :不显示压缩信息
2.4.3.2 unzip

unzip可以解压zip命令打包的或其他例如windows上的rar、360压缩等软件打包的zip格式文件。

不解压查看压缩文件:

unzip -l yao.zip

指定目录解压:

unzip -d yao01 yao.zip
# 解压到test文件夹下
# -d : 指定目录,无此目录则创建一个,解压的部分信息===>> creating: yao01/test/
# 没有-d参数则默认解压到当前文件夹
# -o : 解压时不提示是否覆盖文件;如果我们现在解压到当前目录就会提示是否覆盖,因为已经有此文件了,使用-o可以直接覆盖
# -v :展示解压时的详细信息

2.4.4 7za

7z也是一种高效率的压缩文件格式,7z常用命令如下。

压缩:

7za a -r yao.7z *.html
# 压缩所有html到yao.7z包中
# a :添加文件、目录
# -r :递归

不解压查看文件内部信息:

7za l yao.7z
# l :不解压查看

解压:

7za x yao.7z -r -oyao7z
# x : 解压,x换成e也可以解压;但是一般用x,x解压全路径,用e会将所有文件解压到一个目录中
# -r :递归解压子目录
# -o :指定解压目录,注意的是,-o参数与目录间没有空格,这是比较奇特的一点

2.5 用户、文件与权限

2.5.1 权限升级:su与sudo

提到用户与权限,则首先得说说一个不能避过的命令:su与sudo。

su与sudo的共同点是,都可以用另一个用户权限执行命令。

不同点是:su要切换成另一个用户,sudo不需要。

切换用户,su的常用命令:

whoami
# 查看自己是哪个用户,我们这里可以看到是root登录的 su yao
# root用户切换为普通用户不需要输入密码 su root
# 普通用户切换回root用户需要输入密码
# 小知识: su root == su,su切换root不需要输入root用户名
# 注意:这种切换虽然可以成功,但是环境变量还是原用户的,所以要用下面的命令切换 su - yao
# su - [用户名],这种切换方式可以切换到相应用户,还能将登陆后的环境变量一并切换

其实su也可以不用切换过去就能执行命令,只需要加一个参数-c就行:

su - yao -c 'pwd'
# 使用yao执行pwd命令

可以看到,其实是执行成功了,正确返回了yao的home路径。

但是这种方式毕竟没有sudo来的方便,接下来看看不用切换用户的sudo:

su - yao
# 切换为普通用户登录 whoami
# 查看切换成功了没 ls /root
# 访问root文件夹

可以看到,没权限。怎么办?sudo呀。

sudo ls /root
# 访问root目录,输入yao用户的登录密码就行了

所有用户都可以使用sudo吗?当然不是了,我们可以查看下赋予sudo权限的用户:

sudo -l
# 查看当前用户被授权的sudo权限

怎么赋予sudo权限?

在/etc/sudoers文件中添加用户就行了

sudo cat /etc/sudoers

用vi还是sed都可以,但是最好使用visudo。

sudo visudo
# root用户不用sudo

visudo是专门来编辑/etc/sudoers文件的,它还有语法检查作用,赶快添加你的sudo用户吧。

2.5.2 用户增删改:useradd、usermod、userdel
2.5.2.1 用户新增:useradd、passwd

最常用,不带任何参数的添加用户:

useradd wfy
# 新增用户wfy passwd wfy
# 设置密码,密码一般为大小写加数字和一个特殊字符

passwd 小技巧,一条命令设置用户密码:

echo "123456" | passwd --stdin wfy
# --stdin :可从标准输入获取密码
# 批量修改密码时,此命令比较有用
# 此外,还有个chpasswd命令也可以批量修改密码

passwd 密码到期提醒策略:

passwd -n 7 -x 60 -w 10 -i 30 wfy
# 7天内不能修改密码,60天以后必须修改密码,过期前10天通知用户,过期后30天禁止用户登录
# -n : 7 表示不能修改密码天数
# -x :60 表示必须修改密码天数
# -w :10 表示过期前10天通知
# -i : 30 表示过期后30天禁止登录

useradd不带任何参数时,系统会先读取/etc/login.defs(用户定义)、/etc/deault/useradd(用户默认配置)文件,然后根据其中所设置的规则添加用户同时向/etc/passwd(密码文件)、/etc/group(用户组)文件添加新用户和新用户组记录。

建好了之后,可以到/home目录下看下,已经创建了属于此用户的家目录。

cd /home/wfy

chage -l wfy
# 查看用户的有效期

查看用户所属信息:

id wfy
# 这个信息其实就在/etc/passwd中,可以用grep wfy /etc/passwd 查看比对下
# uid : 用户id
# gid :用户组id

后续说道group的时候再来看看gid的作用。

禁止登陆用户创建:

useradd -s /sbin/nologin ftp_ymm
# -s :指定用户登录的shell,/sbin/nologin表示禁止登陆,部署ftp等中间件会经常用到 useradd -M -s /sbin/nologin nginx_wfy
# 部署nginx、mysql等中间件会经常用到
# -M : 不创建家目录

其他参数:

useradd -u 806 -s /bin/sh -c "这是测试用户" -G root -e "2019/12/21" -f 2 -d /tmp/wfy test_wfy
# -u :指定uid
# -c :用户说明
# -G :设置用户组
# -e : 设置过期时间
# -f :2表示过期两天停权
# -d :用户每次登录时的家目录 tail -1 /etc/passwd
# 查看passwd文件最后一行,可以看到刚才添加的用户信息 tail -1 /etc/shadow
# 查看/etc/shadow文件最后一行,可以看到刚才-f添加的参数2

拓展:使用useradd -D 参数就是修改用户的初始配置文件:/etc/deault/useradd,来看下这个文件有什么。

[root@VM_0_3_centos wfy]# cat /etc/default/useradd

# useradd defaults file
GROUP=100
# 依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制
HOME=/home
# 把用户的家目录建在/home中
INACTIVE=-1
# 是否启用用户国企停权,-1表示不启用
EXPIRE=
# 用户终止日期,不设置表示不启用
SHELL=/bin/bash
# 新用户默认所用的shell类型
SKEL=/etc/skel
# 家目录默认文件存放路径,新增用户时,从这个配置目录拷贝过去
CREATE_MAIL_SPOOL=yes
# 创建mail文件

用useradd -D来修改下看看,当然,先做好备份:

cp /etc/default/useradd{,.bak}
# 做个备份 cd /etc/default
# 可以看到创建useradd.bak文件 useradd -D -s /bin/sh
# -D :改变/etc/default/useradd文件
# -s :改变默认shell
# -b : 定义家目录
# -e :设置用户过期日期
# -f :过期后几日停权
# -g :设置用户组 diff /etc/default/useradd{,.bak}

可以看到前后对比的效果
2.5.2.2 用户修改:usermod

usermod的参数大部分与useradd相同,无非一个新增一个修改而已。不同的参数如下:

usermod -l  wfy2 wfy
# 将wfy这个用户的登录名改为wfy2
# -l :修改用户名称
# -L :lock,锁定用户密码
# -U :unlock,解除密码锁定
# -a :追加用户组,与-G参数连用

将useradd替换为usermod,其他参数不变,来修改下用户信息

usermod -u 806 -s /bin/sh -c "修改了测试用户" -G root -e "2019/12/21" -f 2 -d /tmp/wfy test_wfy

grep test_wfy /etc/passwd

grep test_wfy /etc/shadow

2.5.2.3 用户删除:userdel
userdel -r test_wfy
# -r : 删除用户及家目录
# -f : 强制删除用户,即使用户登录了
# 不加-r参数删除不会删除家目录

注意:实际工作中,一般不使用userdel,而是去/etc/passwd中将用户信息注释。

2.5.3 用户查看:id、w、who、whoami、last

id,查看用户id信息:

id wfy
# 显示wfy的uid及gid信息

w,最常用,查看已登录用户信息:

w
# 展示所有已登录用户信息
# 展示字段含义如下
# USER : 用户
# TTY : 用户tty名称
# FROM : 从哪登录的
# LOGIN : 登录时间
# IDLE :终端空闲时间
# JCPU : 终端上所有进程及子进程使用系统的总时间
# PCPU :活动进程使用的系统时间
# WHAT :当前用户执行的进程

who 查看所有已登录用户信息:

who
# 显示已登录用户信息,与w略有不同

users 查看所有已登录用户名:

users
# 只显示用户

whoami 查看当前登录用户信息:

whoami
# 查看当前登录的用户名

last:

last
# 显示用户登录列表,读取/var/log/wtmp last -10
# 显示最近10次的登录信息 last root -10
# 显示root用户的最近10次登录信息 lastb
# 展示用户登录失败信息,读取/var/log/btmp lastb -10
# 展示最近10条用户登录失败信息 lastb root -10
# 展示root用户登录失败信息,最近10条 lastlog
# 展示所有用户最近一次登录记录,读取/var/log/lastlog
2.5.4 文件权限:chown 、chmod
2.5.4.1 改变文件用户组:chown

chown常用命令如下:

cd ~
# 返回root家目录 chown wfy wfy.txt
# 更改wfy.txt的所属用户为wfy

chown wfy:wfy wfy2.txt
# 将wfy2.txt的所属用户更改为wfy,用户组从root更改为wfy

chown -R wfy:wfy yao
# 将yao这个目录及其子目录全都赋权给wfy
# 可以看到yao下的var目录页赋权给了wfy这个用户及用户组

2.5.4.2 改变文件权限范围:chmod

chmod可以改变文件及目录的权限范围,它有两种赋权模式:1)使用权限字母 + 操作符;2)使用数字。

常用命令示例:

chmod 777 wfy.txt
# 更改wfy.txt权限为所有人可访问

修改前:

修改后:

7代表rwx,777所代表的9位字符权限为rwxrwxrwx。

  1. "r" = 4, 可读权限;目录、子目录及其文件都可被访问。
  2. "w" = 2,可写权限;可修改文件内容、目录名称。
  3. "x" = 1,可执行权限;目录没有x权限无法进入,sh脚本文件没有x无法执行。
  4. "-" = 0,无权限。

赋予目录只读权限:

chmod -R 555 yao
# 5 = 4 + 0 +1,即r-x,可读与可执行权限,但是不能被修改。执行下看看效果,是否与预期一样。

可以看到第一位字符是d,d代表目录,后续9位字符为r-x(属主权限位)、r-x(属组权限位)、r-x(其他用户权限位)。

此外还有一种常用的赋权模式,为+x,赋予文件可执行权限,一般用来执行shell脚本:

chmod +x [脚本名].sh

shell脚本一般有四种执行方式,最常用的为+x赋权后使用下面命令执行:

./脚本名.sh

其他三种方式:

. /脚本名.sh
# .后有空格 source 脚本名.sh sh 脚本名.sh

当然,也可以用来执行txt文件,示例如下:

. wfy.txt

source

sh wfy.txt

可以看到我们的wfy.txt文件并不是一个shell文件,没有找到响应的命令去执行,后续的shell入门会说下.sh的脚本文件是怎样编写的。

注意:普通用户还需有r权限才能执行,root则不需要。

2.6 资源监控与管理

2.6.1 虚拟文件管理系统:proc

说到资源管理这块,/proc文件夹是linux上不得不说的一个目录。

ls /proc

可以看到红框/proc目录下红框圈的那一片数字文件夹,这其实就是我们linux系统中所有进程文件存放的地方。每生成一个进程,就会在这里有个对应的文件夹,也就是我们以后会经常打交道的pid。

有很多的inux命令都是调用此目录中的文件来显示系统相关信息。例如内存、cpu等信息。

为什么proc下面的文件能存放内存、进程、cpu这些跟磁盘文件没任何关系的东西呢?

因为proc实际是一个伪文件系统,或者说虚拟文件系统。我们在文章开头就说了,linux中的一切都是以文件形式存在的,就是proc做到的。

对于用户、应用程序,它们是从proc中得到系统的一些信息,甚至可以改变内核的某些参数。

而proc中的文件内容并不是全然不变的,它们会随着系统进程的变化而变化,当用户读取它们时,proc文件系统就动态地从系统内核中读出所需要的信息并提交。

一些我们常用的命令会用到下面的一些文件,如磁盘、cpu、内存相关的。

--------------- -------------
/proc/cmdline 内核命令行,核心启动参数
/proc/cpuinfo cpu的相关信息
/proc/devices 挂载设备
/proc/Loadavg 负载均衡
/proc/meminfo 内存信息
/proc/mounts 加载文件系统
/proc/stat 全面统计状态表
/proc/swaps 交换空间表
/proc/version 内核版本
/proc/uptime 系统正常运行时间

关于/proc目录的详解可以参考这篇文章https://www.cnblogs.com/aofo/p/6151266.html

关于proc也不用深究,知道这么个东西就行了。

接下来看看关于磁盘、网络、cpu、内存的一些基本命令。

2.6.2 磁盘空间监视器:df

df命令可以说linux上最常用的命令之一,因为一旦磁盘空间不够就会出现各种故障,数据库、应用都可能会处于瘫痪状态。

常用命令示例:

[root@VM_0_3_centos ~]# df -h
# 以适合人类阅读的方式展示磁盘空间大小 文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 50G 43G 4.3G 91% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 10G 666M 9.4G 7% /dev/shm
tmpfs 1.9G 324K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 380M 0 380M 0% /run/user/1005
tmpfs 380M 0 380M 0% /run/user/0 [root@VM_0_3_centos ~]# df -i
# -i : 显示inode的使用情况
# linux文件有个inode的文件数量限制,一旦无可用inode,则无法再产生新的文件,会在磁盘空间未满的情况下报“No space left on device”,解决方案是删除无用(多天前)的小文件或者log文件 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/vda1 3276800 215486 3061314 7% /
devtmpfs 482932 308 482624 1% /dev
tmpfs 485254 258 484996 1% /dev/shm
tmpfs 485254 354 484900 1% /run
tmpfs 485254 16 485238 1% /sys/fs/cgroup
tmpfs 485254 1 485253 1% /run/user/1005
tmpfs 485254 1 485253 1% /run/user/0 [root@VM_0_3_centos ~]# df -Th
# -T:查看文件系统类型
# 本机展示的挂载盘/dev/vda1文件系统类型为ext3 文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/vda1 ext3 50G 43G 4.3G 91% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 10G 666M 9.4G 7% /dev/shm
tmpfs tmpfs 1.9G 324K 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs tmpfs 380M 0 380M 0% /run/user/1005
tmpfs tmpfs 380M 0 380M 0% /run/user/0
2.6.2 内存空间监视器:free

一台电脑、服务器,内存、存储(磁盘)、处理器(cpu)、操作系统是最基本的组成。

free就是用来监视linux系统使用内存的命令。

常用命令示例:

[root@VM_0_3_centos ~]# free -h
# 以人类可读方式展示内存使用情况,根据实际大小自动转换为KB、MB、GB total used free shared buff/cache available
Mem: 3.7G 275M 144M 48M 3.3G 3.1G
Swap: 2.0G 658M 1.4G

Mem为物理内存使用情况,Swap为虚拟内存使用情况(一般是划分一部分磁盘空间作为虚拟内存)。

total :总内存;3.7G一般为4G内存机器。

used :已使用内存。

free :自由内存。

shared : 共享内存。

buff/cache : 缓存,3.3G。

available : 可用内存。

在以前没有available这个展示字段的时候,我们通常是将 free + buff/cache 的总量作为可用内存。

linux系统的特性就是将不用的物理内存缓存起来,因为千万以为free的144M内存就是真实的系统剩余内存了。所以当前可用内存为available:3.1G。

常用命令之二:定时查询内存

free -hs 5
# 每5秒显示内存使用情况,ctrl + c 终端
# -s:根据指定间隔显示内存使用情况,单位为秒 [root@localhost ca_ga]# free -hs 5
total used free shared buff/cache available
Mem: 62G 27G 359M 65M 34G 34G
Swap: 31G 6.7G 25G total used free shared buff/cache available
Mem: 62G 27G 348M 65M 34G 34G
Swap: 31G 6.7G 25G total used free shared buff/cache available
Mem: 62G 27G 354M 65M 34G 34G
Swap: 31G 6.7G 25G ^C
2.6.3 网络探测器:ping

ping命令与windows下用cmd打出的ping命令相似,都是用来探测主机之间网络是否通畅。

常用命令示例:

ping www.baidu.com
# ping域名或ip,会一直显示ping结果,ctrl + c 中断
# 不同于windows的是,windos上ping -t才会一直显示ping结果 [root@VM_0_3_centos ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=54 time=3.97 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=54 time=4.01 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=54 time=3.97 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=54 time=4.03 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=5 ttl=54 time=3.97 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 3.971/3.993/4.031/0.024 ms

从结果行第一行可以看到,baidu的域名被转换成了www.a.shifen.com,发送了56字节的数据。

而从第二行开始,是目标返回信息。目标受到的字节是64,icmp_seq就是受到包的序列号,ttl是数据包的生存周期,time是延时,3.97毫秒。

最后三行是统计结果信息,发送了5个包,接收了5个包,一个包没有丢失,总共用时4004毫秒。min/avg/max/mdev 为最小/平均/最大/平均偏差(Mean Deviation) 延时。

ttl为time to life,即icmp包在网络上的存活时间。

常用ping命令示例:

ping -c 3 -i 3 -s 1024 -t 255 www.csdn.com
# -c :固定ping次数,本次为3次
# -i :发送间隔,本次为3秒
# -s :数据包大小,单位字节,本次1024为1KB
# -t :255,ttl值 [root@VM_0_3_centos ~]# ping -c 3 -i 3 -s 1024 -t 255 www.csdn.com
PING www.csdn.com (47.95.164.112) 1024(1052) bytes of data.
1032 bytes from 47.95.164.112 (47.95.164.112): icmp_seq=1 ttl=250 time=38.4 ms
1032 bytes from 47.95.164.112 (47.95.164.112): icmp_seq=2 ttl=250 time=38.3 ms
1032 bytes from 47.95.164.112 (47.95.164.112): icmp_seq=3 ttl=250 time=38.4 ms --- www.csdn.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6006ms
rtt min/avg/max/mdev = 38.334/38.402/38.447/0.167 ms

ping失败案例:

ping -c 3 -i 3 -s 1024 -t 255 www.yaojiaxiaoyuan.com
PING www.yaojiaxiaoyuan.com.qiniudns.com (1.1.1.1) 1024(1052) bytes of data. --- www.yaojiaxiaoyuan.com.qiniudns.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 5999ms

可以看到,因为我的网站www.yaojiaxiaoyuan.com备案过期了,所以探测的时候发送3个包都丢失了,丢失率100%。

ping只能探测ip及域名,但是没法探测端口,下期的进阶命令会说道telnet,可以远程探测端口。

2.6.4 cpu、进程及内存监视器:top

top命令可以用于实时监控cpu的状态,显示系统中各个进程的资源占用情况。

常用命令示例:

top
# 对,无参数的top命令是最长用的资源监控命令。
# 再往下会说些常用的交互命令。 [root@VM_0_3_centos ~]# top
top - 23:03:23 up 127 days, 13:56, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 79 total, 1 running, 78 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.7 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3882032 total, 145996 free, 283752 used, 3452284 buff/cache
KiB Swap: 2097148 total, 1422392 free, 674756 used. 3218052 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
964 redis 20 0 142960 7244 988 S 0.3 0.2 168:01.87 redis-server
15515 root 20 0 260068 123108 3988 S 0.3 3.2 20:12.97 YDService
30378 root 20 0 155536 2132 1540 R 0.3 0.1 0:00.06 top …………
# 后面还有很多,省略了

因为域名已经被注销了,目前没法截图,所以只能复制文字出来了。

结果第一行,为uptime命令的执行结果。后面进阶命令会说道,大家感兴趣可以自行执行下。

23:03:23  # 当前系统时间
up 127 days, 13:56 # 系统已运行127天13小时56分

2 users # 两个用户在登录

load average: 0.00, 0.01, 0.05 # 最近1分钟、5分钟、15分钟的负载情况

第二行,进程信息。共79个进程,1个运行,78个睡眠,停止的0个,僵死的0个。

第三行,cpu状态信息。

0.2 us # 用户空间占比
0.0 sy # 内核空间占比
0.0 ni # 改变过优先级的进程占用比
99.7 id # 空闲CPU百分比
0.2 wa # I/O等待占用cpu百分比
0.0 hi # 硬中断占用cpu百分比
0.0 si # 软中断占用cpu百分比
0.0 st # 虚拟机占用比

第四行、第五行,分别是物理内存状态及虚拟内存状态。

total # 内存总量
free # 空闲内存
used # 已用内存
buff/cache # 缓存

第六行为空行,第七行以后就是系统中各进程的监控状态。

PID  # 进程id
USER # 用户,进程所有者
PR # 优先级
NI # nice值,负值高优先
VIRT # 进程使用的虚拟内存总量,KB
RES # 所用物理内存大小,KB
SHR # 共享内存大小
S # 进程状态。S=睡眠sleep,R=运行running,D=不可终端的休眠状态,T=stopped,Z=zombie僵尸进程
%CPU # 占用CPU百分比
%MEM # 占用物理内存百分比
TIME+ # 进程使用CPU时间统计
COMMAND # 进程名

其他常用命令示例:

top -c
# 第七行后进程信息显示进程全路径 top -n 2
# -n : 指定更新次数两次不再刷新,无参数会一直刷新

top的交互模式:

按1可以显示多核CPU的信息。

按b可以高亮选中某列,再使用符号"<"或“>”来向左或向右降序排序。

关于资源监控还有许多很实用的工具:如iostat、mpstat、iftop、vmstat、iotop、sar等工具,有兴趣可以自行研究,或者等下一篇linux进阶命令出来再看一看。

三、结束语

这篇文断断续续写了一个多月,终于在今天完结了,下一篇是linux核心命令进阶及shell入门。

本来在大纲里已经把shell入门放进这篇来了,但是想想,还是放到下篇吧。就这样吧,linux的命令实在太多了,但是常用的其实本篇大部分都囊括了。

可能还有些一些涉及文件上传、下载、安装的常用命令如curl、wget、yum、rpm、ssh、scp等等,还有系统管理、网络管理等等命令都放在下篇了。

最后,感谢老婆给了我这么大动力。感谢。

撒花,结束,退场。

公众号注册的比较晚,没有评论功能,所以一般用来发长文。

知识星球相当于技术朋友圈,有问题大家可以提问,讨论。

欢迎关注我的公众号:姚毛毛的博客

欢迎加入我的知识星球,目前免费哦。

知识星球:姚毛毛的私密花园

公众号注册的比较晚,没有评论功能,所以一般用来发长文。

知识星球相当于技术朋友圈,有问题大家可以提问,讨论。

欢迎关注我的公众号:姚毛毛的博客

欢迎加入我的知识星球,目前免费哦。

知识星球:姚毛毛的私密花园

![知识星球]

教老婆学Linux运维(二)Linux常用命令指南【下】的更多相关文章

  1. 【Linux 运维】Linux 目录

    目录 [Linux 运维]Centos7初始化网络配置 [Linux 运维]linux系统修改主机名 [Linux 运维]linux系统关机.重启.注销命令 [Linux 运维]linux系统查看版本 ...

  2. Linux内存运维操作及常用命令

    Linux内存运维操作及常用命令 1.问题诊断 1.1 什么是 Linux 服务器 Load Average? 1.2如何查看 Linux 服务器负载? 1.3服务器负载高怎么办? 1.4如何查看服务 ...

  3. 【Linux 运维】linux系统关机、重启、注销命令

    linux 关机.重启.注销命令: 关机命令: shutdown -h now 立刻关机(生产常用) shutdown -h  +1  一分钟后关机      (    shutdown -c 可以将 ...

  4. Linux运维二:CentOS6.6系统安装后的基本配置与优化

    CentOS6.6系统安装完成后还需要做一些配置与优化: 一:Linux内核版本号介绍 查看内核版本: [root@Gin scripts]# uname -r 2.6.32-504.el6.x86_ ...

  5. 【linux运维】linux系统上忘记密码如何操作

    目录 红帽系统忘记密码操作 红帽系统设置ip,主机名 centos系统忘记密码操作 一.红帽系统忘记密码操作 1)再出现以下界面后按键盘e键 2)进入以下界面后,再次按e键 3)使用上下键选择第2项或 ...

  6. 【linux运维】Linux服务器玩转vsftpd安装与配置

    Linux服务器搭建ftp详细教程. 前言 本文,主要以vsftp软件为主进行讲解,版本为3.0.2.以介绍设置虚拟用户.权限验证为主,linux权限知识默认大家都有所了解.vsftpd设置有两种模式 ...

  7. linux 运维必备150个命令

    线上查询及帮助命令(1个) man 目录操作命令(6个) ls tree pwd mkdir rmdir cd 文件操作命令(7个) touch cp mv rm ln find rename 文件查 ...

  8. Linux运维人员最常用166个命令汇总

    引用自“菜鸟博客” 命令 功能说明 线上查询.帮助命令(2个) man 查看命令帮助,命令词典,更复杂还有info,但不常用. help 查看Linux内置命令的帮助,比如cd等命令. 文件.目录操作 ...

  9. Linux运维人员最常用 150 个命令汇总

    linux 命令是对 Linux 系统进行管理的命令.对于 Linux 系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件, Linux 系统管理的命令是它正常运行的核心,与 ...

  10. 互联网公司linux运维生产场景常用软件工具一览

    linux的世界真的很精彩,还没入门的朋友赶紧进来吧! 操作系统:Centos※,Freebsd,Ubuntu,Redhat linux,suse linux网站服务:apache※,nginx※,l ...

随机推荐

  1. java实现查找PDF关键字所在页码及其坐标

    1.因为最近有这方面的需求,用过之后记录一下. 2.此功能跟PDF中Ctrl+F性质一样,如果PDF中为图片形式的不支持定位到关键字. import com.itextpdf.awt.geom.Rec ...

  2. Mac下搭建go和beego开发环境

     go安装 首先到golang的官网下载 直接双击安装包,安装 ,下一步,下一步....完成既可 验证安装是否成功 打开终端执行 输出 go version go1.11.5 darwin/amd64 ...

  3. Solr7.0搭建过程

    小李经过Elasticsearch和solr之我为什么选择solr之后决定使用使用Solr作为项目的搜索引擎,然后和同事们开始讨论细节问题. 小李:虽然我会solr4.7版本的搭建,但是人总要有点梦想 ...

  4. 洛谷 题解 P3871 【[TJOI2010]中位数】

    这题先定义一个大根堆(maxn)维护mid(n为奇数mid+1)的元素.再定义一个小根堆(minn)维护mid(n为奇数mid+1)到n的元素.然后对于插入元素的情况进行分类讨论. 当add x时 一 ...

  5. 字符串的api (基础)

    一.基础 1.字符串.charAt(index) 根据下标获取字符串的某一个字符 应用: 判断字符串的首字母是否大写 任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数 2.字符串.inde ...

  6. 【Offer】[10-2] 【青蛙跳阶问题】

    题目描述 思路分析 Java代码 代码链接 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路分析 其实就是斐波那契 ...

  7. 使用FreePBX和第三方线路对接

    首先搭建好相关环境 在FreePBX的web-gui控制界面进行操作. 通信接口连接--->中继  先创建一条中继线路: 创建中继 设置这条线路 优先级为0 中继名: 设置一个名字 Outgoi ...

  8. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...

  9. 解决The mysql extension is deprecated and will be removed

    今天打开网站突然发现报错:“PHP Deprecated:  mysql_connect(): The mysql extension is deprecated and will be remove ...

  10. Nacos配置服务原理

    Nacos Client配置机制 spring加载远程配置 在了解NACOS客户端配置之前,我们先看看spring怎么样加载远程配置的.spring 提供了加载远程配置的扩展接口 PropertySo ...