Linux系统基础管理
1.内核的功用:进程管理(进程的创建比如mkdir、销毁 )
、文件系统、网络功能、内存管理、驱动程序、安全功能2. process进程:运行中的程序的一个副本。存在生命周期3.Linux内核存储进程选项的固定格式:task struct任务结构体 多个任务的task struct组件的链表:task list......4.进程类型
守护进程:在系统引导过程中启动的进程,跟终端无关的进程 前台进程:跟终端相关,通过终端启动的进程 注意:也可把在前台启动的进程送往后台,以守护模式进行5.进程状态 运行态:running 就绪态:ready 睡眠态: 可中断:interruptable 不可中断:uninterruptable 停止态:暂停于内存中,但不会被调度,除非手动启动;stopped 僵死态:zombie6.进程的分类 CPU-Bound IO-Bound
进程管理常用命令
1.各系统上的第一个进程centos5:sysV initcentos6:upstartcentos7:systemd2.进程管理常用命令
(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 COMMANDroot 1 0.0 0.0 19344 1544 ? Ss 06:07 0:02 /sbin/initroot 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):常驻内存集(常驻内存占用的大小)TTYSTAT:当前进程的状态 R:running 运行状态 S:interruptable sleeping可中断睡眠状态 D:uninterruptable sleeping 不可中断睡眠状态 T:stopped 停止状态 Z:zombie 僵死状态*:前台进程
l:多线进程 N:低优先级进程 <:高优先级进程 s:session leaderSTART TIME:当前进程所用时间的总和 COMMAND -e:显示所有进程-f:显示完整格式的进程信息常用组合之二
~]# ps -ef(常用组合)UID PID PPID C STIME TTY TIME CMDroot 1 0 0 06:07 ? 00:00:02 /sbin/initroot 2 0 0 06:07 ? 00:00:00 [kthreadd]PPID:父进程号
C:CPU的占用百分比 cpu utilization(占用率):cpu的利用率CMD:启动此进程的命令 -F:显示所有进程(与小f基本相同) ~]# ps -eFUID PID PPID C SZ RSS PSR STIME TTY TIME CMDroot 1 0 0 4836 1544 3 06:07 ? 00:00:02 /sbin/initroot 2 0 0 0 0 2 06:07 ? 00:00:00 [kthreadd]SZ:即上述的VSZ
PSR: processor(处理器) 当前进程运行在哪个CPU上-H(hierarchy):以层级结构显示进程的相关信息
常用组合之三:#ps -eFho:自定义要显示的字段列表,以逗号分隔
常用的字段: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 postfix26993208-u uid:effecive user
-U uid:read user-t TERMINAL:与指定的终端相关的进程-l:显示进程名-a:显示完成格式的进程名-P pid:显示此进程的子进程(4)pidof命令:根据进程名,取其pid
eg:查看sshd进程的进程号 ~]# pidof sshd3269 2507(5)top命令: - display Linux processes显示进程信息
~]# toptop - 07:56:27 up 1:49, 2 users, load average: 0.12, 0.10, 0.10Tasks: 188 total, 1 running, 187 sleeping, 0 stopped, 0 zombieCpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 1906280k total, 649564k used, 1256716k free, 46348k buffersSwap: 4095996k total, 0k used, 4095996k free, 287304k cachedPID 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 kthreadd07: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:centos7: centos6上建一个epel源指向仓库#vim /etc/yum.repos.d/epel.repo[epel]name=Fedora EPELbaseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/gpgcheck=0 centos7上建一个epel源指向仓库#vim /etc/yum.repos.d/epel.repo[epel]name=Fedora EPELbaseurl=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 2procs -----------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 0procs:
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 15.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 vimroot 15218 0.0 0.2 151184 4884 pts/0 T 16:19 0:00 vim /etc/abc.txtroot 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服务)