Linux系统基础管理
Linux系统基础管理
1.内核的功用:进程管理(进程的创建比如mkdir、销毁 )
、文件系统、网络功能、内存管理、驱动程序、安全功能
2. process进程:运行中的程序的一个副本。存在生命周期
3.Linux内核存储进程选项的固定格式:task struct任务结构体
多个任务的task struct组件的链表:task list
......
4.进程类型
守护进程:在系统引导过程中启动的进程,跟终端无关的进程
前台进程:跟终端相关,通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式进行
5.进程状态
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动;stopped
僵死态:zombie
6.进程的分类
CPU-Bound
IO-Bound
进程管理常用命令
1.各系统上的第一个进程
centos5:sysV init
centos6:upstart
centos7:systemd
2.进程管理常用命令
(1)pstree命令:查看进程树
(2)ps命令
/proc/:内核中的状态信息
内核参数:
可设置其值从而调整内核运行特性的参数:/proc/sys
状态变量:其用于输出内核中统计信息或状态信息,仅用于查看
参数:模拟成文件系统类型
系统启动的方式
a.系统启动过程中自动启动:与终端无关的进程
b.用户通过终端启动:与终端相关的进程
ps定义: ps - report a snapshot of the current processes
ps选项的三种风格
1 UNIX options, which may be grouped and must be preceded by a dash(连接号 破折号).选项只能带一个杠号
2 BSD options, which may be grouped and must not be used with a dash. 选项一个杠号都不能带
3 GNU long options, which are preceded by two dashes. 选项必须带两个杠号
选项:
a:所有与终端相关的进程
x:所有与终端无关的进程
u(user):以用户为中心组织进程状态信息显示
常用组合之一:
~]# ps aux(通常这三个选项一起使用)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 19344 1544 ? Ss 06:07 0:02 /sbin/init
root 2 0.0 0.0 0 0 ? S 06:07 0:00 [kthreadd]
USER:进程所属用户
PID:进程号
%CPU:累计CPU所使用的时间
%MEM:占整个内存的比例
VSZ(virtual memory size):占用的虚拟内存大小(虚拟内存集)
RSS(resident居民 驻地 size):常驻内存集(常驻内存占用的大小)
TTY
STAT:当前进程的状态
R:running 运行状态
S:interruptable sleeping可中断睡眠状态
D:uninterruptable sleeping 不可中断睡眠状态
T:stopped 停止状态
Z:zombie 僵死状态
*:前台进程
l:多线进程
N:低优先级进程
<:高优先级进程
s:session leader
START
TIME:当前进程所用时间的总和
COMMAND
-e:显示所有进程
-f:显示完整格式的进程信息
常用组合之二
~]# ps -ef(常用组合)
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 06:07 ? 00:00:02 /sbin/init
root 2 0 0 06:07 ? 00:00:00 [kthreadd]
PPID:父进程号
C:CPU的占用百分比 cpu utilization(占用率):cpu的利用率
CMD:启动此进程的命令
-F:显示所有进程(与小f基本相同)
~]# ps -eF
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 4836 1544 3 06:07 ? 00:00:02 /sbin/init
root 2 0 0 0 0 2 06:07 ? 00:00:00 [kthreadd]
SZ:即上述的VSZ
PSR: processor(处理器) 当前进程运行在哪个CPU上
-H(hierarchy):以层级结构显示进程的相关信息
常用组合之三:
#ps -eFh
o:自定义要显示的字段列表,以逗号分隔
常用的字段:pid,ni(nice值),pri,psr,pcpu,stat,comm,tty,ppid,rtprio
ni(nice值):每一个进程都可以优雅的把优先级让给别人,nice值越小,优先级越高
pri:priority优先级
rtpri:real time priority实时优先级
常用组合之四:
#ps -eo 或 #ps axo (o必须写在后面,因为o是带参数的)
eg: ~]# ps axo pid,command
PID COMMAND
1 /sbin/init
2 [kthreadd]
(3)pgrep,pkill命令
eg:显示postfix这个用户的进程
~]# pgrep -U postfix
2699
3208
-u uid:effecive user
-U uid:read user
-t TERMINAL:与指定的终端相关的进程
-l:显示进程名
-a:显示完成格式的进程名
-P pid:显示此进程的子进程
(4)pidof命令:根据进程名,取其pid
eg:查看sshd进程的进程号
~]# pidof sshd
3269 2507
(5)top命令: - display Linux processes显示进程信息
~]# top
top - 07:56:27 up 1:49, 2 users, load average: 0.12, 0.10, 0.10
Tasks: 188 total, 1 running, 187 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1906280k total, 649564k used, 1256716k free, 46348k buffers
Swap: 4095996k total, 0k used, 4095996k free, 287304k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3825 root 20 0 15032 1296 936 R 0.3 0.1 0:00.33 top
1 root 20 0 19344 1544 1228 S 0.0 0.1 0:02.39 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
07:56:27:当前时间
1:49:运行时长
2 users:登录当前系统的用户数
load average:平均负载(cpu上进程队列的等待长度)
Tasks:任务,一共运行有多少个进程,后面分别表示各状态的进程数量
Cpu(s):cpu占用的百分比 0.0%us:userspace用户空间进程所占用的百分比
0.2%sy:system,内核空间所占用的百分比 0.0%ni:nice值,调整优先级所占用的时间
99.8%id:空闲时间所占用的百分比 0.0%wa:wait,等待IO完成所占用的时间
0.0%hi:处理硬件中断所占用的 0.0%si:处理软硬件所占用的 0.0%st:stolen被偷走的时间所占的百分比
SHR:共享空间
上述PID USER...一行中默认使用的是%CPU的大小来排序的,此进程中,
可用过敲大写的M(MEM)、T(TIME+)...来改变排序。P(CPU)默认的以所占cpu百分比排序
uptimeml命令:显示第一行的信息,包括系统时间、运行时长即平均
负载。 平均负载:过去1分钟、5分钟和15分钟的平均负载,cpu上等待运行的进程排列的长度。
~]# uptime
08:02:26 up 1:55, 2 users, load average: 0.14, 0.12, 0.11
进程管理常用命令
1.epel源
centos6:http://172.16.0.1/fedora-epel/
centos7: http://172.16.0.1/fedora-epel/
http://172.16.0.1/fedora-epel/
centos6上建一个epel源指向仓库
#vim /etc/yum.repos.d/epel.repo
[epel]
name=Fedora EPEL
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
gpgcheck=0
centos7上建一个epel源指向仓库
#vim /etc/yum.repos.d/epel.repo
[epel]
name=Fedora EPEL
baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
gpgcheck=0
2.htop命令
选项:
-d #:指定延迟时间间隔
-u Username:显示指定用户的进程
子命令:
l:显示选定的进程打开的文件列表
s:跟踪选定的进程的系统调用
t:以层级关系显示各进程状态
a:将选定的进程绑定至某指定的CPU核心
3.vmstat(virtual memory )命令
(1)定义:- Report virtual memory statistics
(2)语法:vmstat [options] [delay [count]]
eg:#vmstat 2(延迟2秒刷新一次)
~]# vmstat 2
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 545680 972 793792 0 0 3 1 20 25 0 0 100 0 0
0 0 0 545664 972 793792 0 0 0 0 109 113 0 0 100 0 0
procs:
r(running):等待运行的进程的个数;即COU上等待运行的任务的队列长度。
b(blocked阻塞的):处于不可中断睡眠的进程个数;即被阻塞的任务队列长度。
momery:
swpd:交换内存使用总量
free:空闲的物理内存总量
buffer(缓冲):用于buffer的内存总量
cache(缓存):用于cache 内存总量
swap:
si:数据进入swap中的数据速率(kb/s)
so: 数据离开swap的速率(kb/s)
io:
bi:从块设备度读入数据到系统的速率(kb/s)
bo:保存数据至块设备的速率(kb/s)
system:
in:interrupts 中断速率
cs:context switch上下文切换的速率(进程被内核调度的速率)
cpu:
us:userspace(用户空间程序占据cpu的百分比)
sy:system(系统空间程序占据cpu的百分比)
id(空闲的):idie怠速
wa:wait 等待io时间的百分比
st:stolen
选项:
-s:显示内存统计数据
4.pmap命令
(1)定义:- report memory map of a process
打印指定进程的内存映射表
eg:打印第一个进程的内存映射表
#pmap 1(进程号pid)
(2)语法: pmap [options] pid [...]
-x(extend):显示详细格式的信息
eg:#pmap -x 1
5.glances命令,功能和上述类似
eg:#glances
内建命令,h查看内建命令
(1)常用选项
-b:以byte为单位显示网上数据速率
-d:关闭磁盘I/O模块
-m:关闭mount模块
-n:关闭network模块
-t #:刷新时间间隔
-1(是1不是L) :每个cpu的相关数据单独显示
-o{HTML|CSV}:输出格式
-f/PATH/TO/SOMEDIR:设定输出文件的位置
C/S模式下运行glances命令:
服务模式:
glances -s -B IPADDR(本机的某地主,用于监听)
客户端模式:
glances -c IPADDR (远程服务器的地址)
6.dstat命令(前面5个进程监控命令的功能dstat几乎都包含)
eg:~]# dstat 2 5 延迟2两秒显示,只显示5次就结束
(1)语法:dstat [-afv] [options..] [delay [count]]
(2)常用选项
-c 或 --cpu:显示cpu的信息
-C #,#,...total
-d 或 --disk:显示磁盘的相关信息
-D sda,sdb,...total
-g:显示page相关的速率数据(从磁盘读入内存,从内存写入磁盘)
-m:memory的相关统计数据
-n:interface的相关统计数据
-p:显示process的相关统计数据
-r:显示io请求的相关的统计数据
-s:显示swapped的相关统计数据
7.kill命令
(1)定义: - terminate(终止 结束) a process
终端terminal
用于向进程发送信号,以实现对进程的管理
(2)显示当前系统的信号
kill -l [signal]
(3)每个信号的表示方法有三种
eg:对48599这个进程发送信号1,有三种方式
第一种:信号的数字标识 #kill -1 48599
第二种:信号的简写名称 #kill -HUP 48599
第三种:信号的完整名称 #kill -s SIGHUP 48599
(4)向进程发信号
kill [-s signal | SIGNAL] pid...
常用信号:
1 SIGHUP:无须关闭进程而让其重读配置文件
2 SIGINT:终止正在运行的进程,相当于Ctrl+c
9 SIGKILL:杀死运行中的进程(9和15的区别 9残暴杀害15人道毁灭)
15 SIGTERM:终止运行中的程序
18 SIGCONT(continue):
19 SIGSTOP: 将一个进程送到后台,让其处于停止状态
eg:进程送入后台、再恢复操作
#vim /etc/abc.txt
abc.txt
new.line
第一步:此时写到一半,进入命令行模式,使用Ctrl+z,进入以下停止状态
~]# vim /etc/abc.txt
[1]+ Stopped vim /etc/abc.txt
第二步:查看此进程的状态 T(stop),处于停止状态
~]# ps aux|grep vim
root 15218 0.0 0.2 151184 4884 pts/0 T 16:19 0:00 vim /etc/abc.txt
root 15276 0.0 0.0 112648 960 pts/0 S+ 16:23 0:00 grep --color=auto vim
第三步:发送18号信息,让其恢复
~]# kill -18 15218
[1]+ Stopped vim /etc/abc.txt
第四步:使用 #fg 让其从后台回来
Ctrl+z 让其再回到后台
使用上述方法:当再vim进行编辑临时有其他操作时不需要将其
关掉,将其送到后台,处理完其他操作,再将其调到前台来进行
操作,方便工作。
(5)killall 一个服务有很多子进程,一次性全部杀死
定义:- kill processes by name
语法:killall [-SIGNAL] program (program 节目 程序)
信号 进程名
eg:#killall httpd(httpd服务)