购物网站建设信息,公司页面图片,wordpress 定制缩略图,视觉冲击力的网站设计第一、基础知识MBR引导--内核--内核程序--》协调其它程序一般内核运行在硬件之上#xff0c;各应用也在硬件之前1)OS的基本功能#xff1a;文件系统、网络功能、进程管理、内存管理、驱动程序、安全功能以上为通用目的设置的程序。#xff0c;程序指令数据#xff0c;程序运…第一、基础知识MBR引导--内核--内核程序--》协调其它程序一般内核运行在硬件之上各应用也在硬件之前1)OS的基本功能文件系统、网络功能、进程管理、内存管理、驱动程序、安全功能以上为通用目的设置的程序。程序指令数据程序运行在内存当中。这个内存由物理内存映射逻辑空间左则表示二个框分别表示指令和数据。物理内存划分固定大小的页框称为pageframe。右则下面的方框表示物理内存。每个进程在右则上面的方框中这部分为假的内存空间称为线性地址空间。2)CPU指令 四个级别ring0ring1,ring2,ring3ring0特权敏感指使ring3环境中为普通指令加减乘除等控制内存及磁盘数据读取的为特权指令。特权指令 普通指令3)程序执行环境内核模式运行内核级指令用户模式运行普通指令4)应用程序运行在内核代码或应用程序代码运行普通指令直接运行于CPU运行特权指令通过system call5)内存8bits, 1byte32bit巡址空间s, 2^32, 0-2^32-1, 2^10*2^10*2^10*2^2 bytes 2^10*2^10*2^2 kilo bytes 2^10*2^2 MB 4GB64bits, 2^64, 4billions 4G32位 4G: 1G, kernel 每个应用程序假设自己拥有线性地址空间为4G地址空间可用包括自己以及系统内核。1G内核使用3G为线性地址空间使用。3G, app6)ROMRAMROM, RAM7)地址空间物理地址空间线性地址空间8)IPC: Inter Process Communication同一主机signalsemerphorshm (shared memory)不同主机rpc: remote procedure callsocket:9) 进程调度进程运行程序是程序的一部分多任务多进程同时运行抢占式多任务10)进程分类CPU bound: CPU密集型 (类似高清视频)I/O bound: IO密集型(编辑器等频繁IO操作)11)进程优先级1400-1391-99实时优先级数字越大优先级越高100-139数字越小优先级越高静态优先级 (进程运行时默认自己拥有优先级)动态优先级(进程运行时平衡优先级)Linux准备140队列0优先级在0队列中1优先级在1队列中以此类推。当运行时从队列首部开始选择优先级高的运行。如下图每个进程运行的时间不同。Linux支持抢占式多任务当一个低先级的程序在运行这时有一个高优先级的运行。过一段时间后这里高优先级优先提前运行。算法时间复杂度Big O (衡量标准算法)O(1) 恒定的无论优先级消耗时间相同;(最好的)O(logn) 每次调度调度程序需要从树中找出优先级最高的进程O(n) 线性的O(n^2) 抛物线机制O(2^n) 随队列深度增长12)进程创建请求发出者进程 (由fork进行创建为系统调用)任何子进程parent—为子进行发起一个fork调用—child这里child(task struct)与父进行相同。包括进程ID,父进程ID进程fork(), clone()两者的虚拟空间不同但其对应的物理空间是同一个示例父进程P1创建P2子程序复制P1的正文段数据段堆栈这四个部分让P2的正文段指向P1的正文段块数据段P2自己的数据段块(为其分配对应的块)堆P2自己的堆块栈P2自己的栈块。如下图所示同左到右大的方向箭头表示复制内容COW: Copy On Writing 写时复制内核只为新生成的子进程创建虚拟空间结构它们来复制于父进程的虚拟究竟结构但是不为这些段分配物理内存它们共享父进程的物理空间当父子进程中有更改相应段的行为发生时再为子进程相应的段分配物理空间。关闭进行调用destroy(销毁某个进行13)进程的状态运行态running睡眠态sleeping可中断睡眠interruptible (中断过程中时可随时唤醒)不可中断睡眠: uninterruptible (被IO阻塞的进程)就绪态runnable停止态stopped不可被调度为运行状态僵死态zombie(父进程处理子进程关闭后的状态如父进程意外关闭后子进程处于孤立的状态。这时当子进程停止后为僵死进程)。当父进程关闭前后利用init systemd(centos 7)进程指定为子进程新的父进程。14)进程管理task struct: 用于保存每个进程元数据信息例如pid, ppid, memory, thread, filestask list: 用一种称作“链表”的数据结构来保存每个进程的task struct.进程退出前会将其状态和结果保存到自己的自己的task struct中下次运行中直接从tasks struct这种称为挂起状态进程切换context switch保存现场恢复现场OS: 提供虚拟的计算机进而能够将有限资源借助于“保护”机制分配多个同时运行的程序即“进程”使用从而实现了所谓的多任务15) 并行处理机制现代编程采用多线程模型每个线程单独的功能。单独的执行流进程 方块中代表4个内核4条线条件4个单独线程。并行执行。该种方式运行在程序独立、相互干扰少的情况下。 线程tread共享进程的资源如父进程、打开文件等更轻量的、可被单独调度的运行单元LWPLight Weight Process(Linux是轻量级处理过程Linux是线程即进程进程即线程)第二、进程命令Linux进程查看及管理工具top, pstree, ps, pidof, pgrep, pkill, htop,glances, pmap, vmstat, dstat, iostat, sar, kill, job, bg, fgLinux系统上除init以外的所有子进程都是由其父进程fork()自身而来遵循COW机制进程展现为“进程树”;1) pstree命令进程树查看-p: 显示各进程的PIDcentps 7父为systemd centos 6为init pstree –p 显示进程及id2)ps: process state显示的是ps命令执行时系统上当前进程状态信息的快照 为静态结果Linux运行中的内核的相关信息是通过/proc伪文件系统输出的各进程都有一个以其PID命名的子目录每个子目录中有许多文件存储了进程的相关状态信息proc目录下包括进程ID的目录(为正在运行的进程创建该目录)说其是伪文件系统是因为它是一个映射。每个目录下都包括相应的文件。 ps相关命令都是调用该目录下的相关文件。支持众多选项BSD风格 (不需要减号 -SysV风格 (需要都减号 - 引用)根据进程启动时是否是通过终端上的用户接×××互式启动的进程可分为两类与终端相关的进程: a与终端无关的进程: x以用户为中心组织进程状态信息显示uAA常用选项组合1axu (在centos 7中可用-aux或aux 结果相同)命令解释与用户终端相关或无关的进程。USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER表示进程的属主那个身份在运行。pid为进程号%CPU CPU比例%MEM 内存百分比VSZ: Virtual memory Size 线性地址空间占用的空间大小RSS常用驻内存集指不可以被交换至swap空间的数据占据空间大小tty 终端那个终端启动的此进程 表示不知道那个STAT进程状态R: running运行状态Sinterruptible sleeping可中断睡眠Duniterruptible sleeping, 不可中断睡眠T: stoppedZ: zombies: session leader (一般为执行命令的bash): 前台进程占据着某终端l: 多线程进程:N: 低优先级进程START: 启动时间TIME: 占据CPU累积时长COMMAND: 启动当前进程或线程的命令行程序[]表示为内核线程BB常用选项组合2: -ef -e: 显示所有进程 (相当前aux)-f: 显示丰富格式信息fullformatCC常用选项组合3-eFH-F: 显示额外信息-H: 以层级形式显示进程间关系DD:自定义需要显示的信息axo (a代表与终端相关 ,x与终端无关o可选项)ps axo pid,command,psr,pri,nipsr: 当前进程运行的CPU编号pri: 当前进程的优先级ni: 当前进程的nice值(与进程调整相关)-20, 19ppid代表父进程3)pgrep: 用于过程进程语法格式pgrep [OPTIONS] PATTERN-U UID仅显示以指定用户身份运行的进程-G GID-l: 显示PID和进程名示例显示postfix的用户进程号和名称4)pidof:pidof PROGRAMPROGRAM: 给定命令行程序显示与程序sshd相关进程id信息5)top命令第1)-4)为静态状态命令后为动态命令(定时刷新)有许多交互式的子命令第一行top显示当前系统负载信息。与uptime执行结果相同说明启动时间 运行时长 当前登陆用户数量 过去负载状态0.00,0.001,0.05 代表过1分钟、5分钟、15分钟的负载)(以上并不是CPU资源的百分比是队列的长度多个队列等待运行)第二行tasks说明多个个进程 运行数量 sleeping数量 stop数量 僵死态数量第三行 CPU百分比Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stus: user spacesy: system (kernel space)ni: niceid: idlewa: wait io 等待IO的百分比hi: hardware interruptsi: software interruptst: stolen, 被虚拟机“偷走”的百分比1平均或单独显示CPU的负载状态第四行内存KiB Mem : 1877664 total, 1150304 free, 351380 used, 375980 buff/cache总物理内存 剩余内存 使用的 buffer内存第五行交换swapKiB Swap: 5242876 total, 5242876 free, 0 used. 1337264 avail Mem交换内存所有空间 空闲空间 已用空间 可用空间第五行pid 用户 优先级 nice值 虚拟内存级 常驻内存级 共享内存 状态占CPU百分比占内存百分比 累计运行时间启动运行的命令显示排序黑CPU百分比进行(默认)P以占据的CPU百分比大小排序M以占据Memory空间大小排序TCPU累积占用时间排序l: 是否显示系统负载行(第一行)队列长度的合理区间CPU颗数*0.7t: 是否显示进程摘要信息及CPU负载状态m: 是否显示内存相关的状态信息s: 修改延迟时长k: 终止指定进程q: 退出命令s: 修改延迟时长 k: 终止指定进程top命令的选项-b: batch批次显示-n #: 显示的批次数量示例:top –b –n 2 显示二批-d #: 指明延迟时长示例:top –d 1 表示1秒刷新一次6)uptime命令: 显示当前系统时间运行时长登录用户数及系统平均负载命令总结pstree, ps, pgrep, top, uptime, pidof7)htop:需要在epel源当中安装在/etc/yum.repos.d目录下创建epel.repo文件内容如下利用yum install htop进行安装 交互式命令u: 过滤仅显示选定用户的进程(先U再选择用户) s: 跟踪选定的进程所发起的系统调用l: 显示选定进程所打开的文件t: 显示进程的层次结构a: 设定进程的cpu亲缘性(将选定的进程绑定在指定的CPU上)选项-d #: 延迟时长-u USERNAME: 仅显示指定用户的进程-s COLUMN: 根据指定的字段进行排序8)vmstat命令 状态查看用法vmsate [delay [count]] 每隔2秒显示6次退出 procs: 进程相关状态r: 运行队列的长度有数字时等待运行的进程的个数(队列长度)b阻塞队列长度有数字是表示处理不可中断睡眠状态的进程的个数(即IO阻塞队列长度) 单个CPU core 不能大于3基本正常memoryswpd: 交换内存使用量free: 空间的物理内存量buffer: 用于buffer的内存总量cache: 用于cache的内存总量swapsi: 数据进入swap中的速率(kb/s) 物理放到交换内存so: 数据离开swap的速率(kb/s) 交换内存至物理内存iobi: 从块设备读入数据到系统的速率(kb/s)bo: 保存数据至块设备的速率(kb/s)systemin: 中断速率cs: 进程切换的速率cpuus: eser spacesy: system sy高说明程序有问题太多系统调用id: idlewa: waitting wait过高表示磁盘速率慢st: steal选项-s显示内存的状态统计数据 9)/proc/#接口 (针对proc目录相应进程号下面的文件)10)pmap: 查看指定进程的内存映射关系pmap [OPTIONS] pid...-x: 显示扩展信息也可通过cat /proc/#/maps 查看 11)glances: (需要epel源)使用python开发glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port][-P password] [--password] [-t refresh] [-f file] [-o output]常用选项-b: 以Byte/s为单位显示网卡设备数据交换速率-d: 关闭磁盘I/O功能模块-f /PATH/TO/SOMEFILE设置输出文件的位置及格式-o {HTML|CSV}:-m: 关闭mount功能模块-n: 关闭网络功能模块-r: 关闭进程列表功能模块-t #: 指定延迟时长默认为3秒-1单独显示每颗CPU相关负载数据信息glances支持远程模式即可以以C/S模式工作Server: 以监听模式启动glancesClient: 以远程模式启动glances远程连入指定服务器并Server上的相关性能数据服务模式glances -s -B IPADDR-B: 用于指明监听的本地地址客户端模式glances -c IPADDR-c: 用于连入的服务器的地址12)dstat: 整合了vmstat, iostat, netstat and ifstat四款工具的功能 dstat [-afv] [options..] [delay [count]]示例 dstat 2 5 #每2秒刷新 显示5次第6次退出sysmte下面的 int 是中断 csw指切换上下文-c: 显示cpu性能指标相关的统计数据-d: 显示disk相关的速率数据-g: 显示page相关的速率数据-i: 显示interrupt相关的速率数据-l: 显示load average相关的统计数据-m: 显示memory相关的统计数据-n: 显示网络收发数据的速率-p: 显示进程相关的统计数据-r: io请求的速率-s: 显示swap的相关数据-y: 显示系统相关的数据包括中断和进程切换--top-cpu显示最占用CPU的进程 --top-bio显示最消耗block io的进程--top-io最占用io的进程--top-mem显示最占用内存的进程--ipc: 显示进程间通信相关的速率数据 --raw: 显示raw套接的相关的数据--tcp: 显示tcp套接字的相关数据 --udp: 显示udp套接字的相关数据--unix: 显示unix sock接口相关的统计数据--socket:-a: -cdngyIPC: 进程间通信常见形式msg( message queue) (消息队列)sem( semerphore) (旗语很短小的消息)shm(shared memory) (共享内存)signal (标签)13) signal: 传递给进程的短小信息Linux主机支持的进程间可用到的信息(1) kill -l(2) man 7 signal 向进程发信号kill [-SIGNAL] PID默认的信号为SIGTERM信号表示方式(1) 完整名称例如SIGINT(2) 简写名称例如INT(3) 数据代称例如2常用信号SIGHUP: 1, 通知进程重读其配置文件以让新的配置生效但不用重新启动进程SIGINT2, 打断正在运行中的进程相当于键盘组合键CtrlcSIGKILL9, 强行中止正在运行中的进程SIGTERM 15, 安全中止正在运行中的进程SIGSTOP 19, 暂停进程SIGCONT 18, 继续运行指定进程kill相似的一组进程killall [-SIGNAL] PROGRAM示例启用httpd service httpd start查看http的进程号kill默认是15(安装终止正在运行的进程)示例:利用数字 kill –9 进程号示例kill httpd 命令总结htop, vmstat, glances, dstat, kill, killall第三、作业管理1)定义作业是定义的一组具有相同功能的一组进程或程序称为作业。通过是否通过终端启动分为前台作业通过终端启动并且在停止之前也会一直占据终端后台作业作业启动之时与终端无关或者是在前台启动但启动后转为与终端无关模式运行 (不是所有命令适合在终端上运行)如何让作业运行于后台1、对于已经启动并处于运行中的作业CtrlzNote: 作业被送往后台后默认处于stopped状态示例运行后使用htop命令controlz后为stop状态 2、对于尚未启动的作业COMMAND 示例 vmstat 1 将送到后台注意: 此两类方式相关作业仍然与终端相关这意味着终端终止将会导致与此终端相关的所有作业被终止 与session leader分离剥离进程与终端的关系# nohup COMMAND 3、守护进程自动运行在后台作业查看jobs命令作业号、作业状态、启动命令行程序 作业控制命令fg [[%]job_num]把指定的作业调回前台 示例fg %2 表示调后2号作业。或%百分号也可 bg [[%]job_num]把调往后台的指定的作业启动起来让其后台默默运行但此作业必须支持运行于后台kill [%job_num]终止指定的作业 kill的作业号的百分号%i不能够省略。4、 进程优先级调整AA定义优先级级别从0-139 1-99为实时优先级 数字越大优先级越高。100-139为静态优先级数字越小优先级越高内核针对静态优先级进行调整动态优先级动态调整静态优先级BB手动调整优先级利用nice值调整时只能够调大nice值通过指定进程的nice值来调整其优先级用户 空间运行的进程一般都有其nice值nice值 -20, 19优先级 100, 139默认启动进程时其nice值为0, 其优先级为120(1) 对于尚未启动的进程# nice -n N COMMAND(2) 对于已经启动并处于运行中的进程# renice -n N PID示例:ps axo pid,command,pri,ni(查看进程号、名称、nice、优先级)nice -n -5 httpd 调整nice值为-5输出为针对已运行的使用renice 注意普通用户仅能够调大nice调低优先级第四其它命令整理1)sar :收集、报告用户信息sar [ options ] [ [ ] ]Options:-B 所有page信息-A 所有信息相当于-b io速率示例 sar -u 2 5 CPU利用率sar -r -n DEV -f /var/log/sa/sa16显示内存及网络并保存到/var/log/sa/sa16目录 2) iostat,显示CPU、device及分区信息iostat [ options ] [ [ ] ]Options:-c 显示 CPU -d 显示设备示例iostat 2 5示例iostat –c / iostat –d3)ifstat显示网络接口信息ifstat [OPTION] [ PATTERN [ PATTERN ] ]-e erros错误信息-r reset示例4) tsar作业命令总结jobs, fg, bg, nice, renice博客作业进程管理工具htop/glances/dstat的使用;