进程管理

进程概念

内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

Process(进程):运行中的程序的一个副本,是被载入内存的一个指令集合

进程ID Process ID PID )号码被用来标记各个进程

UIDGID、和SELinux语境决定对文件系统的存取和访问权限

通常从执行进程的用户来继承

存在生命周期

task struct Linux 内核存储进程信息的数据结构格式

task list :多个任务的的task struct 组成的链表

进程创建:

init :第一个进程

父子关系

进程:都由其父进程创建,CoW

fork(), clone() 

进程优先级

系统优先级: 数字越小,优先级越高

0-139 CentOS4,5

各有140 个运行队列和过期队列

0-98 99 CentOS6

实时优先级: 99-0 :值最大优先级最高

nice值:-2019,对应 系统优先级100-139 99

Big O :时间复杂度,用时和规模的关系

O(1), O(logn), O(n) 线性, O(n^2) 抛物线, O(2^n)

 

进程相关概念

进程内存:

Page Frame:  页框,用存储页面数据,存储Page 4k

LRULeast Recently Used  近期最少使用算法, 释放内存物理地址空间和线性地址空间

MMUMemory Management Unit 负责转换线性和物理地址

TLB:Translation Lookaside Buffer  翻译后备缓冲器, 用于保存虚拟地址和物理地址映射关系的缓存

IPC: Inter Process Communication

同一主机: signal: 信号

shm: shared memory

semaphore: 信号量,一种计数器

不同主机:rpc: remote procedure call

socket: IP和端口号

 

LRU算法

假设序列为 4 3 4 2 3 1 4 2

物理块有3个,则第14调入内存 423调入内存 3 434调入内存 4 342调入内存 2 4 353调入内存 3 2 4, 61调入内存 1 3 2, 74调入内存 4 1 382调入内存 2 4 1

进程管理

进程状态

Linux 内核:抢占式多任务

进程类型:

守护进程: daemon, 在系统引导过程中启动的进程,和终端无关进程

前台进程:跟终端相关,通过终端启动的进程

注意:两者可相互转化

        进程状态:

运行态:running

就绪态:ready

睡眠态:可中断:interruptable

不可中断:uninterruptable

停止态:stopped, 暂停于内存,但不会被调度,除非手动启动

僵死态:zombie,结束进程,父进程结束前,子进程不关闭

 

系统管理工具

进程的分类:

CPU-Bound CPU 密集型,非交互

IO-Bound IO 密集型,交互

Linux 系统状态的查看及管理工具:pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat,dstat, kill,pkill, job, bg, fg, nohup

pstree 命令:

pstree – display a tree of processes 显示进程树

ps: process state 进程状态

ps – report a snapshot of the current processes 报告当前进程

Linux系统各进程的相关信息均保存在/proc/PID 目录下的各文件中

[root@localhost ~]# pstree
init─┬─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─bonobo-activati───{bonobo-activat}
     ├─certmonger
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─2*[dbus-daemon───{dbus-daemon}]

进程ps

适用ps 来查看进程信息

ps [OPTION]…

[root@localhost ~]# ps
   PID TTY          TIME CMD
  2389 pts/0    00:00:00 bash
  2410 pts/0    00:00:00 ps

支持三种选项:

UNIX 选项如-A -e

BSD 选项如a

GUN 选项如–help

默认显示当前终端中的进程

a 选项包括所有终端中的进程

[root@localhost ~]# ps a
PID TTY      STAT   TIME COMMAND
2175 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2
2177 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3
2179 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4
2182 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5
2184 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6
2226 tty1     Ssl+   0:00 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/
2389 pts/0    Ss     0:00 -bash
2409 pts/0    R+     0:00 ps a

x 选项包括不链接终端的进程

[root@localhost ~]# ps x
PID TTY    STAT   TIME      COMMAND
1 ?        Ss     0:01 /sbin/init
2 ?        S      0:00 [kthreadd]
3 ?        S      0:00 [migration/0]
4 ?        S      0:00 [ksoftirqd/0]
5 ?        S      0:00 [stopper/0]
6 ?        S      0:00  [watchdog/0]

u 选项显示进程所有者的信息

[root@localhost ~]# ps u
USER     PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2175  0.0  0.0   4064   540 tty2     Ss+  May07   0:00 /sbin/mingetty /
root      2177  0.0  0.0   4064   540 tty3     Ss+  May07   0:00 /sbin/mingetty /
root      2179  0.0  0.0   4064   544 tty4     Ss+  May07   0:00 /sbin/mingetty /
root      2182  0.0  0.0   4064   540 tty5     Ss+  May07   0:00 /sbin/mingetty /
root      2184  0.0  0.0   4064   536 tty6     Ss+  May07   0:00 /sbin/mingetty /
root      2226  0.0  1.1 207056 21528 tty1     Ssl+ May07   0:01 /usr/bin/Xorg :0
root      6750  0.0  0.0 108484  1860 pts/0    Ss   08:03   0:00 -bash
root      6799  0.0  0.0 110244  1148 pts/0    R+   08:11   0:00 ps u

f 选项显示进程的父进程

[root@localhost ~]# ps f
PID TTY      STAT   TIME COMMAND
6750 pts/0    Ss     0:00 -bash
6801 pts/0    R+     0:00  \_ ps f
2226 tty1     Ssl+   0:01 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/
2184 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6
2182 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5
2179 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4
2177 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3
2175 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2

o 属性…  选项显示定制的信息:pidcomm%cpu%memstatettyeuserruser

[root@localhost ~]# ps axo pid,%cpu,cmd
PIDpid,COMMAND         pu,cmd
1pid,init               pu,cmd
2pid,kthreadd        pu,cmd
3pid,migration/0        pu,cmd
4pid,ksoftirqd/0        pu,cmd
5pid,stopper/0       pu,cmd
6pid,watchdog/0         pu,cmd
7pid,migration/1        pu,cmd

进程管理工具

VSZ: Virtual memory SiZe ,虚拟内存集,线性内存

RSS: ReSident Size,  常驻内存集

STAT:进程状态

R:running 运行

S: interruptable sleeping 可中断休眠

D: uninterruptable sleeping 不可中断休眠

T: stopped 休眠状态

Z: zombie 僵尸状态

+:前台进程

l:多线程进程

L:内存分页并带锁

N:低优先级进程

<:高优先级进程

s: session leader,会话(子进程)发起者

[root@localhost ~]# ps aux
USER     PID  %CPU  %MEM    VSZ   RSS TTY   STAT   START   TIME  COMMAND
root       1   0.0   0.0  19348  1544 ?        Ss     May07   0:01  /sbin/init
root      21   0.0   0.0      0     0 ?        R      May07   0:01  [events/2]
root      74   0.0   0.0      0     0 ?        SN     May07   0:00  [ksmd]
root     1664  0.0   0.0  27596   848 ?        S<sl   May07   0:00  auditd
root     2175  0.0   0.0   4064   540 tty2     Ss+    May07   0:00  /sbin/mingetty /

常用组合:-ef

-e:显示所有进程

-f:显示完整格式程序信息

[root@localhost ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 May07 ?        00:00:01 /sbin/init
root          2      0  0 May07 ?        00:00:00 [kthreadd]
root          3      2  0 May07 ?        00:00:00 [migration/0]
root          4      2  0 May07 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 May07 ?        00:00:00 [stopper/0]
root          6      2  0 May07 ?        00:00:00 [watchdog/0]

常用组合:-eFH

-F:显示更完整格式的进程信息

-H:以进程层级格式显示进程相关信息

[root@localhost ~]# ps -eFH
UID      PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root      1      0  0  4837  1544   0 May07 ?        00:00:01 /sbin/init
root     612      1  0  2819  1396   1 May07 ?        00:00:00   /sbin/udevd -d
root    2193    612  0  3129  2844   2 May07 ?      00:00:00     /sbin/udevd -d
root    2194    612  0  3129  2844   0 May07 ?      00:00:00     /sbin/udevd -d
root    1602      1  0  2280  1052   3 May07 ?    00:00:00   /sbin/dhclient -H localh
root    1664      1  0  6899   848   2 May07 ?        00:00:00   auditd
root   1698     1  0 62288  1696   0 May07 ?        00:00:00   /sbin/rsyslogd -i /var/r

常用组合:自定义

-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

ni:nice

pri: priority优先级

psr: processor CPU编号

rtprio:实时优先级

示例:

ps axo pid,cmd,psr,ni,pri,rtprio

[root@localhost ~]# ps xao pid,cmd,ni,rtprio,pri
   PID CMD                          NI RTPRIO PRI
     1 /sbin/init                    0      -  19
     2 [kthreadd]                    0      -  19
     3 [migration/0]                 -     99 139
     4 [ksoftirqd/0]                 0      -  19
     5 [stopper/0]                   -     99 139
     6 [watchdog/0]                  -     99 139

进程优先级

进程优先级调整:

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120

只有根用户才能降低nice值(提高优先性)

nice命令:

nice [OPTION] [COMMAND [ARG]…]

查看:

ps axo pid,comm,ni

[root@localhost ~]# ps xao pid,cmd,ni,rtprio,pri
2505 watch -n 1 free -m            0      -  19
[root@localhost ~]# nice -n 10 watch -n 1 free -m
[root@localhost ~]# ps xao pid,cmd,ni,rtprio,pri
2615 watch -n 1 free -m           10      -   9
renice 命令:
renice [-n] priority pid...
[root@localhost ~]# ps xao pid,cmd,ni,rtprio,pri
2615 watch -n 1 free -m           10      -   9
[root@localhost ~]# renice -n 0 2615
2615: old priority 1, new priority 0
[root@localhost ~]# ps xao pid,cmd,ni,rtprio,pri
2615 watch -n 1 free -m            0      -  19

搜索进程

最灵活:ps选项 | 其它命令

按预定义的模式:pgrep

pgrep [options] pattern

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal:  与指定终端相关的进程

-l:显示进程名

-a:显示完整格式的进程名

-P pid:显示指定进程的子进程

按确切的程序名称:/sbin/pidof

pidof bash

[root@localhost ~]# ps aux | grep '\<dd\>'
root   3718 99.7  0.0 105184   660 pts/1  R+  23:48  1:06   dd if=/dev/zero of=/dev/null
[root@localhost ~]# pgrep -t pts/1 -l
2483 bash
2505 watch
3718 dd

系统工具

uptime

显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1510分钟的平均负载,一般不会超过1

[root@localhost ~]# uptime
 00:32:28   up  1:30,    2 users,   load average: 1.00, 1.00, 0.91

当前时间 启动总时间 用户登录数 平均负载

系统平均负载:

指在特定时间间隔内运行队列中的平均进程数

通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题

如果linux 主机是1 个双核CPU,当Load Average 6的时候说明机器已经被充分使用。

进程管理工具

top:有许多内置命令:           

排序:

P:以占据的CPU 百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU 时长,TIME+

首部信息显示:

uptime信息:l 命令

taskscpu 信息:t 命令

cpu分别显示:1 ( 数字)

memory 信息:m 命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

top 命令

栏位信息简介

us:用户空间

sy:内核空间

ni:调整nice 时间

id:空闲

wa:等待IO 时间

hi:硬中断

si:软中断(模式切换)

st:虚拟机偷走的时间

[root@localhost ~]# top
top - 00:40:20 up  1:38,  2 users,  load average: 1.00, 1.00, 0.91
Tasks: 168 total,   2 running, 163 sleeping,   3 stopped,   0 zombie
Cpu(s):  4.8%us, 20.2%sy,  0.0%ni, 74.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1906252k total,   366932k used,  1539320k free,    41580k buffers
Swap:  2097148k total,        0k used,  2097148k free,   119648k cached
 
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                      
  3718 root      20   0  102m  660  556 R 100.0  0.0  52:21.78 dd                           
    20 root      20   0     0    0    0 S  0.3  0.0   0:02.82 events/1                      
  2401 root      20   0 99.7m 4120 3112 S  0.3  0.2   0:00.67 sshd                          
  3953 root      20   0 15032 1272  936 R  0.3  0.1   0:00.05 top                           
     1 root      20   0 19344 1540 1228 S  0.0  0.1   0:02.35 init                          
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.05 kthreadd                      
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/0                   
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                   
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0

选项:

-d #:指定刷新时间间隔,默认为3

-b:以批次方式

-n #:显示多少批次

htop命令:需从Fedora-EPEL 源安装

http://172.16.0.1/fedora-epel/7/x86_64

选项:

-d #:指定延迟时间;

-u UserName: 仅显示指定用户的进程

-s COLUME: 以指定字段进行排序

子命令:

s:跟踪选定进程的系统调用

l:显示选定进程打开的文件列表

a:将选定的进程绑定至某指定CPU 核心

t:显示进程树

 

内存工具

vmstat 命令:虚拟内存信息

vmstat [options] [delay [count]]

vmstat 2 5

procs:

r:等待运行的进程的个数,和核心数有关

b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory

swpd: 交换内存的使用总量

free:空闲物理内存总量

buffer:用于buffer的内存总量

cache:用于cache的内存总量

swap:

si:从磁盘交换进内存的数据速率(kb/s)

so:从内存交换至磁盘的数据速率(kb/s)

io

bi:从块设备读入数据到系统的速率(kb/s)

bo:保存数据至块设备的速率

system

in: interrupts, 中断速率,包括时钟

cs: context switch,进程切换速率

cpu

us:Time spent running non-kernel code

sy: Time spent running kernel code

id: Time spent idle. Linux 2.5.41 , 包括IO-wait time.

wa: Time spent waiting for IO. 2.5.41 前,包括in idle.

st: Time stolen from a virtual machine. 2.6.11 , unknown.

选项:

-s:显示内存的统计数据

iostat: 统计CPU和设备IO信息

示例:iostat  1  10

[root@localhost ~]# iostat 1
Linux 2.6.32-696.el6.x86_64 (localhost.localdomain) 05/09/2017 _x86_64_ (4 CPU)
 
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           3.39    0.00   13.53    0.46    0.00   82.63
 
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.96        38.00         3.76     324686      32122
sdb               0.03         0.26         0.00       2256          0
sdc               0.23         0.87         0.00       7469          0
scd0              0.01         0.04         0.00        360          0

pmap 命令:进程对应的内存映射

pmap [options] pid […]

-x:  显示详细格式的信息

示例:pmap 1

[root@localhost ~]# pmap -x 1
1:   /sbin/init
Address           Kbytes     RSS   Dirty Mode   Mapping
00007f8db296f000      52      20       0 r-x--  libnss_files-2.12.so
00007f8db297c000    2044       0       0 -----  libnss_files-2.12.so
00007f8db2b7b000       4       4       4 r----  libnss_files-2.12.so
00007f8db2b7c000       4       4       4 rw---  libnss_files-2.12.so
00007f8db2b7d000    1576     548       0 r-x--  libc-2.12.so
00007f8db2d07000    2048       0       0 -----  libc-2.12.so

另外一种实现:

cat /proc/PID/maps

 

系统监控工具

glances 命令:EPEL

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-Ppassword] [–password] [-t refresh] [-f file] [-o output]

内建命令:

a Sort processes automatically         自动排序过程

l Show/hide logs                           l显示/隐藏日志

c Sort processes by CPU%             按CPU%排序进程

b Bytes or bits for network I/O       用于网络I/O的字节或比特

m Sort processes by MEM%            排序过程

w Delete warning logs                    删除警告日志

p Sort processes by name               按名称排序进程

x Delete warning and critical logs      删除警告和关键日志

i Sort processes by I/O rate             按I/O速率排序进程

1 Global CPU or per-CPU stats          全局CPU或每个CPU统计

d Show/hide disk I/O stats              显示/隐藏磁盘I/O统计

h Show/hide this help screen           显示/隐藏此帮助屏幕

f Show/hide file system stats           显示/隐藏文件系统统计

t View network I/O as combination   将网络I/O视为组合

n Show/hide network stats             显示/隐藏网络统计

u View cumulative network I/O        查看累积网络输入输出

s Show/hide sensors stats q             显示/隐藏传感器统计Q

Quit (Esc and Ctrl-C also work)         退出(ESCCtrl-C

y Show/hide hddtemp stats Y          显示/隐藏hddtemp统计

常用选项:

-b:Byte为单位显示网卡数据速率

-d:关闭磁盘I/O模块

-f /path/to/somefile:设定输入文件位置

-o {HTML|CSV}:输出格式

-m:禁用mount 模块

-n:禁用网络模块

-t #:延迟时间间隔

-1:每个CPU

C/S模式下运行glances 命令

服务器模式:

glances -s -B IPADDR

IPADDR:指明监听的本机哪个地址

客户端模式:

glances -c IPADDR

IPADDR:要连入的服务器端地址

dstat 命令:系统资源统计, 代替vmstat,iostat

dstat [-afv] [options..] [delay [count]]

-c:显示cpu相关信息

-C #,#,…,total

-d:显示disk 相关信息

-D total,sda,sdb,…

-g:显示page相关统计数据

-m:显示memory相关统计数据

-n:显示network相关统计数据

-p:显示process相关统计数据

-r:显示io请求相关的统计数据

-s:显示swapped

–tcp

–udp

–unix

–raw

–socket

–ipc

–top-cpu:显示最占用CPU 的进程

–top-io:显示最占用io 的进程

–top-mem:显示最占用内存的进程

–top-latency: 显示延迟最大的进程

 

进程管理工具

kill命令:

向进程发送控制信号,以实现对进程管理, 每个信号对应一个数字,信号名称以SIG 开头(可省略 ),不区分大小写,一般检查一个进程

显示当前系统可用信号:kill l,trap -l

[root@localhost ~]# pidof ping
6623
[root@localhost ~]# kill -0 6623
[root@localhost ~]# echo $?
0
 
[root@localhost ~]# kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

常用信号:man 7 signal

1) SIGHUP:  无须关闭进程而让其重读配置文件

2) SIGINT:  中止正在运行的进程;相当于Ctrl+c

3) SIGQUIT: 相当于ctrl+\

9) SIGKILL:  强制杀死正在运行的进程

15) SIGTERM:终止正在运行的进程

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠

指定信号的方法:

(1)信号的数字标识:1, 2, 9

(2)信号完整名称:SIGHUP

(3)信号的简写名称:HUP

PID kill [-SIGNAL] pid

kill n SIGNAL pid;kill s SIGNAL pid

按名称:killall [-SIGNAL] comm

可杀死多个进程

按模式:pkill [options] pattern

-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal:与指定终端相关的进程

-l:显示进程名(pgrep 可用)

-a:显示完整格式的进程名(pgrep 可用)

-P pid:显示指定进程的子进程

 

作业管理

Linux 的作业控制

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)

让作业运行于后台

(1)运行中的作业:Ctrl+z

(2)尚未启动的作业:# COMMAND &

ping 127.0.0.1 &

后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系

# nohup COMMAND &

#screen;COMMAND

查看所有作业:

# jobs  可查看编号

[1]+  Running                 ping 127.0.0.1 &

作业控制:

# fg [[%]JOB_NUM] :把指定的后台作业调回前台

如果编号为1fg 1

# bg [[%]JOB_NUM] :让送往后台的作业在后台继续运行

如果编号为1bg 1

# kill [%JOB_NUM] :终止指定的作业

如果编号为1Kill % 1,即可停止

并行运行

同时运行多个进程,提高效率

方法1

vi all.sh

f1.sh&

f2.sh&

f3.sh&

方法2

(f1.sh&);(f2.sh&);(f3.sh&)

方法3

{ f1.sh& f2.sh& f3.sh& }

 

原创文章,作者:Linux.rookie,如若转载,请注明出处:http://www.178linux.com/75133

(0)
上一篇 2017-05-09 17:55
下一篇 2017-05-09 22:21

相关推荐

  • keepalived实现lvs的高可用

    lvs可以做到内核级别的四层负载均衡,具有非常强悍的负载均衡能力。但是,当我们构建lvs的负载均衡集群的时候也会面临一些很严重的问题: lvs的单点故障:当lvs负载均衡器出现故障的时候,那么后端所有的服务器都将无法访问; lvs对后台服务器没有健康监测机制:当后台服务器宕机之后lvs还是会调度服务到后台的服务器; 所以我们就需要一款工具来解决以上问题。 k…

    2017-07-03
  • tree命令 -P选项的用法探讨

         tree命令是以树状图的形式来列出目标文件夹的目录结构,包括所有路径和所有文件名,如图1所示。                               &n…

    2017-05-29
  • Linux的终端类型

    1、串行端口终端(/dev/ttySn):       串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev…

    Linux干货 2016-10-14
  • 马哥教育网络班22期+第12周作业

    week11 1、请描述一次完整的http请求处理过程; 2、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。 3、源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装、配置、测试过程。 4、建立httpd服务器(基于编译的方式进行),要求:      提供两个基于名称的虚拟主…

    Linux干货 2016-10-31
  • 恐怖的C++语言

    Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Lin…

    Linux干货 2015-04-03
  • 马哥教育网络班20期 第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:工作于数据链路层,实现多个lan之间数据的转发,隔离冲突域,类似二层交换机。 集线器:工作于物理层,实现设备的接入,数据信号放大、中转,共享信道。把一个端口接收的所有信号向所有端口分发出去 二层交换机:工作于数据链路层,可连接多个lan,根据帧的mac来转发数据,隔离冲突域…

    Linux干货 2016-08-15