内核的功用:内核管理、文件系统、网络功能、内存管理、内存管理、驱动程序、安全功能
Process:运行中的程序的一个副本:
存在生命周期
linux内核存储进程信息的固定格式:task stract
多个任务的task struct组件的链表:task list
进程创建:
init
父子关系
进程:都由起父进程创建
fork(), clone()
进程优先级:
0-139:
1-99实时优先级
100-139:静态优先级
数字越小,优先级越高:获得更多的cpu运行时间,更优先获得运行的机会
Nice值:优雅的,友好的
-20,19(100-139)
普通用户只能提供自己进程的nice值
Big O
O(1),O(logn), O(n) ,O(n^2) , O(2^n)
进程内存:
Page Frame :页框,用存储页面数据
存储page
MMU:memory Management Unit
IPC: Inter Process COmmunication
同一主机上:
signal
shm: shared memory
semerphor
不同主机上:
rpc: remote procecure call
socket:
Linux内核:抢占式多任务
进程类型:
守护进程:daemon,在系统引导过程中启动的进程
前台进程:根终端相关,通过终端启动的进程
注意:也可把在天天启动的进程送往后台,以守护模式运行
进程状态:
运行态:running
就绪态:ready
睡眠态:sleep
可中断:interrunptable
不可中断:uninterruptable
停止态:stopped
暂停于内存中,但不会被调度,除非手动启动之:
僵死态:zombie
进程的分类:
CPU-Bound
IO-Bound
Linux系统上的进程查看及管理工具:pstree ps pidof pgrep top htop glances pman vmastat dstat kill pkill job bg fg nohup nice renice killall
Centos 5: sysV init
Centos 6: upstart
Centos 7: systemd
pstree命令:
pstree - display a tree of processes
ps命令:Process State
/proc/:内核中的状态信息;
内核参数:可设置其值从而调整内核运行特性参数;
状态变量:其用于输出内核中统计信息或状态信息,仅用于查看
参数:模拟成文件系统类型:
进程:
/proc/#:
#:pid
ps - report a snapshot of the current processes.
ps [options]
选项有三种风格:
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:以用户为中心组织进程状态信息显示
常用组合之一:aux
VSZ:虚拟内存集
RSS:Resldent Size,常驻内存集
STAT:
R:running 运行或就绪
S:interruptable sleeping 可中断的睡眠
D:uninterruptable sleeping 不可中断的睡眠
T:stopped 停止
Z:zomble 僵死
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:sesslon leader 会话进程首进程
-e:显示所有进程
-f:显示完整格式的进程信息
常用组合之二:-ef
-F:显示完整格式的进程信息
C:cpu utilization cpu占用cpu%
PSR:运行于哪颗cpu之上
-H:以层级结构显示进程的相关信息
-l:
常用组合之三:-eFH
常用组合之四:
o field1,field2,....自定义要显示的字段列表,以逗号分开
常用的field: pid ,ni ,pri ,psr ,pcpu, stat ,comm, tty ,ppid
ni: nice值
pri: priority,优先级
rtprio: real time priority,实时优先级
-eo
axo
pgrep, pkill命令:
- look up or signal processes based on name and other attributes
pgrep[options] pattern
-u uid: effective user
-U uid: read user
-t :TERMINAL: 与指定的终端相关的进程
-l :显示进程名称
-a :显示完整格式的进程名
-P pid: 显示此进程的子进程
pidof命令:
根据进程名,取其pid
top命令:
- display Linux tasks
排序:
P:以占据cpu百分比排序
M:以占据内存百分比排序
T:累积占用cpu时间排序
首部信息:
uptime信息:l命令
tasks及cpu信息:t命令
内存信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定的进程:k
选项:
-d #:指定刷新时间间隔,默认3秒
-b: 以批次方式显示
-n #:显示多少批次
uptime命令:显示系统时间,运行时长,平均负载
过去1分钟,5分钟和15分钟的平均负载
等待运行的进程队列长度;
htop命令:
选项:
-d #:指定延迟时间
-u UserName:仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令:
l: 显示选定的进程打开的文件列表
s: 跟踪选定的进程的系统调用
t: 以层级关系显示各进程状态
a: 将选定的进程绑定至某个cpu核心
vmast命令:
- Report virtual memory statistics
vmstat [options] [delay [ count]]
procs:
r: 等待运行进程的个数;cpu上等待运行的任务的队列长度;
b: 处于不可中断睡眠态的进程个数;被阻塞的任务队列长度;
memory:
swpd:交换内存使用总量;
free: 空闲的物理内存总量;
buffer:用于缓冲的内存总量
cache:用于缓存的内存总量
swap:
si:数据进入swap中的数据速率(kb/s)
so:数据离开swap的速率(kb/s)
io:
bi:从块设备读入数据到系统的速度(kb/s)
bo:保存数据至块设备的速度()
system:
in:interrupts,中断速率
cs:context switch ,上下文 切换的速率
cpu:
us :用户进程消耗的CPU时间百分比
sy :内核进程消耗CPU时间百分比
id :CPU处在空闲状态的时间百分比wa:IO等待所占的CPU时间百分比
st:虚拟机占用的时间百分比
选项:
-s:显示内存统计数据
pmap命令:
- report memory map of a process(查看进程的内存映像信息)
pmap [options] pid [... ]
-x : extended 显示详细格式信息:
另一种查看方式:cat /proc/PID/maps
glances命令:
- A cross-platform curses-based monitoring tool
内建命令:
常用选项:
-b: 以byte为单位显示网上数据速率
-d: 关闭磁盘I/O模块
-m: 关闭mount模块
-n: 关闭network模块
-t #:刷新时间间隔
-1: 每个cpu的相关数据单独显示
-o: {HTML|csv}: 输出格式
-f /PATH/TO/SOMEDIR: 设定输出文件的位置
C/S模式下运行glancs命令:
服务模式:
glances -s -B IPaddr
ipaddr: 本机某地址,用于监听
客户端模式:
glances -c IPaddr
ipaddr:是远程服务器的ip地址
dstat命令:
- versatile tool for generating system resource statistics
dstat [-afv] [options..] [delay [count]]
常用选项:
-c, --cpu:显示cpu相关信息;
-C #,#,...,total
-d, --disk:显示磁盘的相关信息
-D sda,sdb,...,total
-g:显示page相关的速率数据
-m:Memory相关统计数据
-n:Interface的相关统计数据
-p:显示process相关统计数据
-r:显示io请求的相关统计数据
-s:显示swapped的相关统计数据
--tcp
--udp
--raw
--socket
--ipc
--top-cpu:显示最占用cpu的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-lantency:延迟最大的进程
kill命令:
- terminate a process
用于向进程发送信号,以实现对进程的管理;
显示当前系统可用信号:
kill -l [signal]
每个信号的标识方法有三种
信号的数字标识
信号的完整名称
信号的简写名称
向进程发信号:
kill [-s signal|-p] [--] pid...
常用信号:
1)SIGHUP: 无须关闭进程而让其重读配置文件;
2)SIGINT: 终止正在运行的进程,相当于ctrl+c;
9)SIGKILL: 杀死运行中的进程;
15)SIGTERM: 终止运行中的进程;
18)SIGCONT:
19)SIGSTOP:
指定一个信号:
信号号码:kill -l
信号名称:kill -SIGKILL
信号名称简写:kill -KILL
killall命令:
- kill processes by name
killall [-SIGNAL] program
Linux系统作业控制:
job:
前台作业(foreground):通过终端启动,且启动后会一直占据终端;
后台作业(background):可以通过终端启动,但启动后即转入后台运行(释放终端)
如何让作业运行于后台?
(1)运行中的作业
Ctrl+z
注意:送往后台后,作业为转为停止态
(2)尚未启动的作业
#COMMAND &
注意:此类作业虽然被送往后台,但其依然与终端相关,如果希望把送往后台的作业剥离与终端的关系;
# nohup COMMAND &
查看所有的作业:
# jobs
可实现走也控制的常用命令
fg [[%]JOB_NUM] :把指定的作业调回前台
bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行
kill %JOB_NUM:终止指定的作业
调整进程优先级:
可通过nice值调整的优先级范围:100-139
分别对应于:-20,19
进程启动时,其nice值默认为0,其优先级是120
nice命令:
以指定的nice值启动并运行命令
nice [OPTION] [COMMAND [ARGU]..]
选项:
-n NICE
注意:仅管理员可调低nice值;
renice命令:
renice [-n] NICE PID..
查看NICE值和优先级:
ps axo pid,ni,priority,comm
未涉及到的命令:sar,tsar,lostat,iftop ,nethog
网络配置
linux:网络术语内核的功能
网卡命名方式:
RHEL5:/etc/modprobe.conf
alias
RHEL6:编辑/etc/udev/rules.d/70-persistent-net.rules
ifconfig [ethx]命令:
-a:显示所有网卡接口的配置信息
ifconfig ethx IP/MASK [up|down]
配置的地址立即生效,但重启网络服务或主机,都失效
网络服务:
RHEL5:/etc/init.d/network {start|stop|restart|status}
RHEL6:/etc/init.d/NetworkManager {start|stop|restart|status}
网关:
route
add:添加
-host:
-net
-net 0.0.0.0 添加默认路由
route add -net|-host DEST gw NEXTHOP
route add default gw NEXTHOP
del:删除
-host
-net
route del -net 10.0.0.0/8
route del -net 0.0.0.0route del default
注意:所做出的改动重启网络服务或主机后失效
route -n:以数字方式显示各主机或端口等相关信息
网络配置文件:
/etc/sysconfig/network
网络接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=:关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}:引导协议:要使用静态地址,使用static或none;dhcp表示使用DHCP服务器获取地址。
IPADDR=:IP地址
NETMASK=:子网掩码
GATEWAY=:设置默认网关
ONBOOT=:开机时是否自动激活此网络接口
HWADDR=:硬件地址,要与硬件中的地址保持一致;可省略
USERCTL={yes|no}:是否允许普通用户控制此接口
PEERDNS={yes|no}:是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址
注意:不会立即生效,但重启网络服务或主机都会生效
路由:
/etc/sysconfig/network-scripts/route-ethx
添加格式一:
DEST VIA NEXTHOP
添加格式二:
ADDRESS0=目标地址
NETMASK0=掩码
GETEWAY0=下一跳地址
DNS服务器指定方法只有一种:
/etc/resolv.conf
nameserver DNS1
nameserver DNS2
指定本地解析:
/etc/host
主机ip 主机名 主机别名
配置主机名:
/etc/syconfig/network
HOSTNAME=
ip命令:
link:配置网络接口属性
show
ip -s link show
set
ip link set DEV up|down
addr:协议地址
add
ip addr add ADDRESS dev DEV
del
ip addr del ADDRESS dev DEV
show
ip addr show dev DEV to PREFIX
flush
ip addr flush dev DEV to PREFIX
route:路由
一块网卡可以使用多个地址:
网络设备可以别名:
eth0
ethx:x , eth0:0, eht1:1, ...
配置方法:
ifconfig ethx:x IP/NETMASK
etc/sysconfig/network-scripts/ifcfg-ethx:x
DEVICE=ethx:x
注意:非主要地址不能使用DHCP动态获取
网络客户端工具:
ping/lftp/ftp/lftpget/wget等;
ping命令:
- send ICMP ECHO_REQUEST to network hosts
ICMP:Internet control message protocol
ping [OPTION] destination
-c #: 发送的ping包次数
-w #:ping命令超时时长
-W #:一次ping操作中,等待对方响应的超时间长
-s #: 指明ping 包报文大小
hping命令:(package:hping3)
- send (almost) arbitrary TCP/IP packets to network hosts
--fast
--flood
--faster
-i uX :发送UDP包 -i u1000
traceroute命令:
- print the route packets trace to network host
跟踪从源主机到目标主机直接经过的网关;
ftp命令:
ftp: File Transfer Protocol
ftp服务命令行客户端工具:
lftp命令:
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
get,mget
put,mput
rm,mrm
lftpget命令:
lftpget [-c] [-d] [-v] URL [URL...]
-c:继续此前的下载
wget命令:
The non-interactive network downloader
wget [option]... [URL]...
-b:在后台执行下载操作
-q:静默模式,不显示下载进度
-O file:下载的文件的保存位置
-c:续传
--limit-rate=amount:以指定的速率传输文件
2016年10月6日 上午11:56 沙发
月黑风高夜,访问博客时!