系统检测和维护
常用命令
fdisk -l 查看当前磁盘的详细信息(结合lsblk)
结果解释:
在Linux 是通过hd*x 或 sd*x 表示的,其中 * 表示的是a、b、c …… …… x表示的数字 1、 2、3 …… …… hd大多是IDE硬盘;sd大多是SCSI或移动存储
磁盘大小= 磁头->柱面->扇面->每个扇区固定大小512bytes
df 显示文件系统磁盘空间的使用情况
df 默认显示所有当前已挂载文件系统的磁盘空间使用情况
df -h 以人类可读方式显示
df -h /bin 显示某一个文件夹所在磁盘的使用情况
du 显示指定的文件(目录)已使用的磁盘空间的总
-h文件大小以K,M,G为单位显示(human-readable)
-s只显示各档案大小的总合(summarize)
free 显示当前内存和交换空间的使用情况
netstat 是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
yum install net-tools -y
-a 显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
netstat -a | grep 52 根据查询结果集筛选想要的结果
netstat -t | grep 52
ip addr 网卡网络配置详解
lo 是回环地址,经常被分配到127.0.0.1地址上,用于本机通信,经过内核处理后直接返回,不会在任何网络中出现。
ens33:网卡名
<BROADCAST,,MULTICAST,UP,LOWER_UP> 这个叫作net_device flags,网络设备状态标识。
UP 表示网卡处于启动的状态;
BROADCAST 表示这个网可以发送广播包;
MULTICAST 表示网卡可以发送多播;
LOWER_UP表示网线插着;
MTU1500是指最大传输单元 MTU 为 1500,这是以太网的默认值。MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。正文里面有 IP 的头、TCP、HTTP的头。如果放不下,就需要分片来传输。
qdisc 全称是queueing discipline,中文叫排队规则。内核如果需要通过某个网络接口发送数据包,它都需要按照为这个接口配置的 qdisc ( 排队规则 ) 把数据包加入 队列。 最简单的 qdisc 是 pfifo,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。pfifo_fast 稍微复杂一些,它的队列包括三个波段 ( band ) 。在每个波段里面,使用先进先出 规则。 三个波段 ( band ) 的优先级也不相同。band 0 的优先级最高,band 2 的最低。如果 band 0 里面 有数据包,系统就不会处理 band 1 里面的数据包,band 1 和 band 2之间也是一样。 数据包是按照服务类型 ( Type of Service,TOS ) 被分配多三个波段 ( band ) 里面的。TOS 是 IP 头 里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。 然而这里是mq,还木有搞懂是什么样的队列处理方式。 lo中的fq_codel是多队列处理,每一个数据流都有一个队列处理。
link/ether:这个是MAC地址,唯一的,一块网卡一个MAC。
进程与服务
进程概念
(a)进程是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。
(b)很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。
Linux中的三种进程
(1)交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
(2)批处理进程和终端没有联系,是一个进程序列。
(3)监控进程(也称系统守护进程) Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。
进程相关命令
top
显示当前系统中耗费资源最多的进程
用途: 可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高
信息解读
前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果。
13:01:49 当前时间
up 13 min 系统运行时间
1 user 当前登录用户数
load average: 0.00, 0.03, 0.06 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks:
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s):
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi 硬中断(Hardware IRQ)占用CPU的百分比
si 软中断(Software Interrupts)占用CPU的百分比
st (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。
最后两行为内存信息。内容如下:
Mem:
total 物理内存总量
used 使用的物理内存总量
free 空闲内存总量
buffers 用作内核缓存的内存量
Swap:
total 交换区总量
used 使用的交换区总量
free 空闲交换区总量
cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
ps
report a snapshot of the current processes 显示瞬间的进程状态
-e /-A 显示所有进程,环境变量
-f 全格式
ps –ef | grep java #表示查看所有进程里 CMD 是 java 的进程信息;
启动3个会话窗口:
man ls 第一个会话窗口
man ps 第2个会话窗口
ps -ef |grep man |grep -v grep 第3个会话窗口 看到两个帮助进程 看到含有man帮助的两个进程,并且 不包含grep自身在内
ps -ef|grep结果详解
UID :程序被该 UID 所拥有
PID :就是这个程序的 ID
PPID :则是其上级父程序的ID
C :CPU使用的资源百分比
STIME :系统启动时间
TTY :登入者的终端机位置
TIME :使用掉的CPU时间。
CMD :所下达的是什么指令
ps -ef | grep 关键字
ps -ef |grep sshd
ps -ef|grep sshd|grep -v grep 排除grep本身进程,显示含有sshd的
ps -e --no-header|grep -v ps|wc -l
kill
杀死一个进程
背景,当程序出错造成死锁,或者内存消耗过大造成卡机,杀;
格式: kill -9 PID
示例:kill -9 324,
使用后一般使用下面命令释放内存:#free
kill命令的改进killall
(1) Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,
例如:# killall -9 NAME
(2)使用后一般使用下面命令释放内存:#free
启动3个会话窗口:
ping www.baidu.com 第一个会话窗口
ping localhost 第2个会话窗口
ps -ef |grep ping |grep -v grep 第3个会话窗口 看到两个ping进程 看到含有ping的两个进程,并且 不包含grep自身在内
可以看到pid
kill -9 pid pid 动态的
定时任务
第一步,查看cron服务是否开启
service crond status
或者
systemctl status crond
第二步 ,查看当前的定时任务
crontab -l
第三步 ,编辑 crontab -e
第四步 ,检查效果
取消定时任务 crontab -r
定时任务格式:
分0-59 小时0-23 日1-31 月1-12 星期0-6 命令
“*”代表取值范围内的数字 ,
“/”代表”每隔”,
“-”代表从某个数字到某个数字, 10-15 * * * * 每一小时的10到15分钟
“,”分开几个离散的数字 10,12,15 * * * * 每一小时的第10,12,15执行
*/5 * * * * ls 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令
[注:0表示星期天,1表示星期1, 以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]
50 7 * * * root run-parts 每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件 /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。
示例:
crontab -e 编辑定时器
* * * * * date>>aaa.log 每分钟把当前时间追加到aaa.log一次
*/3 * * * * ls / >>bbb.log 每隔3分钟 把ls /的执行结果追加到bbb.log中
5,10,15,20 10-20 * * * ls /var>>ccc.log 每天10:05 10:10 10:15,10:20, 11:05 11:10 11:15,11:20, ... 20:05 20:10 20:15,20:20 定时任务可以执行一次
crontab -r 取消定时任务
完结撒花,see you娜拉