Linux系统管理---进程管理(查看进程、终止进程、更改进程优先级)

查看进程

ps

  • ps aux

查看所有进程,使用BSD操作系统格式

  • ps -le

查看系统所有进程,使用Linux标准命令格式


参数
- a :显示一个终端的所有进程,
- u :显示进程的归属用户及内存的使用情况
- x :显示没有控制终端的进程
- -l :长格式显示。显示更加详细的信息
- -e :显示所有进程,和-A作用一致

输出:

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19348  1616 ?        Ss   Aug01   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Aug01   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Aug01   0:00 [migration/0
root          4  0.0  0.0      0     0 ?        S    Aug01   0:00 [ksoftirqd/0
root          5  0.0  0.0      0     0 ?        S    Aug01   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S    Aug01   0:00 [watchdog/0]
root          7  0.1  0.0      0     0 ?        S    Aug01   0:37 [events/0]
root          8  0.0  0.0      0     0 ?        S    Aug01   0:00 [events/0]
...
参数含义
USER该进程是由哪个用户产生的
PID进程的ID号
%CPU改进程占用的CPU资源的百分比,占用越高,进程越耗费资源
%MEM该进程占用的物理内存的百分比,占用越高,进程越耗费资源
VSZ该进程占用的虚拟内存大小,单位是KB
RSS该进程占用的物理内存大小,单位是KB
TTY该进程是在哪个终端中运行的。tty1-tty7表示本地控制台,pts/0-255表示虚拟终端
STAT进程状态。常见状态有 R:运行 S:睡眠 T:停止状态 s:包含子进程 +:位于后台
START该进程的启动时间
TIME该进程占用CPU的运算时间,不是系统时间
COMMAND产生此进程的命令名

pstree 命令

显示进程树

  • -p:显示进程的PID
  • -u:显示进程的所属用户

执行结果如下:

[root@localhost ~]# pstree -up
init(1)─┬─NetworkManager(1581)─┬─dhclient(3561)
        │                      └─{NetworkManager}(1645)
        ├─abrtd(1960)
        ├─acpid(1680)
        ├─atd(1987)
        ├─auditd(1462)───{auditd}(1463)
        ├─automount(1767)─┬─{automount}(1768)
        │                 ├─{automount}(1769)
        │                 ├─{automount}(1772)
        │                 └─{automount}(1775)
        ├─certmonger(2003)
        ├─console-kit-dae(2584)─┬─{console-kit-da}(2585)
        │                       ├─{console-kit-da}(2586)
        │                       ├─{console-kit-da}(2587)
        │                       ├─{console-kit-da}(2588)
        │                       ├─{console-kit-da}(2589)
        │                       ├─{console-kit-da}(2590)
        │                       ├─{console-kit-da}(2591)
        │                       ├─{console-kit-da}(2592)
        ├─crond(1972)
        ├─cupsd(1647)
        ├─dbus-daemon(1567,dbus)───{dbus-daemon}(1570)
        ├─hald(1692,haldaemon)─┬─hald-runner(1693,root)─┬─hald-addon-acpi(1738,haldaemon)
        │                      │                        └─hald-addon-inpu(1737)
        │                      └─{hald}(1694)
        ├─login(3126)───bash(3166)
        ├─master(1931)─┬─pickup(21672,postfix)
        │              └─qmgr(1942,postfix)
        ├─mingetty(2050)
        ├─mingetty(2052)
        ├─mingetty(2054)
        ├─mingetty(2056)
        ├─mingetty(2064)
        ├─modem-manager(1588)
        ├─polkitd(2720)
        ├─rpc.statd(1604,rpcuser)
        ├─rpcbind(1547,rpc)
        ├─rsyslogd(1496)─┬─{rsyslogd}(1497)
        │                ├─{rsyslogd}(1498)
        │                └─{rsyslogd}(1499)
        ├─sshd(1835)───sshd(21691)───bash(21695)───pstree(21739)
        ├─udevd(548)─┬─udevd(2062)
        │            └─udevd(2063)
        └─wpa_supplicant(1648)

top 命令

查看系统健康状态

参数
- -d: 秒数:指定top命令每隔几秒更新。默认3秒
- -b: 使用批处理模式输出,一般和 - n合用
- -n: 次数:指定top命令执行的次数。一般和-b合用

交互命令:
- ?或h:显示帮助信息
- P:以CPU使用率排序,默认是此选项
- M:以内存使用率排序
- N:以PID排序
- q:退出top

[root@localhost ~]# top
top - 02:42:13 up  9:01,  2 users,  load average: 0.06, 0.04, 0.05
Tasks:  97 total,   1 running,  96 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.4%sy,  0.0%ni, 99.0%id,  0.4%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   1004136k total,   824820k used,   179316k free,    39408k buffers
Swap:  2031612k total,        0k used,  2031612k free,   596492k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND              
     7 root      20   0     0    0    0 S  2.0  0.0   0:39.59 events/0              
     1 root      20   0 19348 1616 1304 S  0.0  0.2   0:02.90 init                  
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd              
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0           
     4 root      20   0     0    0    0 S  0.0  0.0   0:00.12 ksoftirqd/0           
     5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0             
     6 root      RT   0     0    0    0 S  0.0  0.0   0:00.12 watchdog/0            
     8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0              
     9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0         
    10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef       
    11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                
    12 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper               
    13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                 
    14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr             
    15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                    
    16 root      20   0     0    0    0 S  0.0  0.0   0:00.27 sync_supers           
    17 root      20   0     0    0    0 S  0.0  0.0   0:00.25 bdi-default           
    18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0

第一行

内容说明
02:42:13系统当前时间
up 9:01系统的运行时间
2 users当前用户数
load average: 0.06, 0.04, 0.05系统在之前1分钟、5分钟、15分钟的平均负载。

第二行

内容说明
Tasks: 97 total系统中的进程总数
1 running正在运行的进程数
96 sleeping睡眠的进程数
0 stopped正在停止的进程数
0 zombie僵尸进程

第三行

内容说明
Cpu(s): 0.2%us用户模式占用的CPU百分比
0.4%sy系统模式占用的CPU百分比
0.0%ni改变过优先级的用户进程占用的CPU百分比
99.0%id 空闲的CPU百分比
0.4%wa等该输入/输出的进程占用百分比
0.0%hi硬中断请求服务占用的CPU百分比
0.1%si软中断请求服务占用的CPU百分比
0.0%stst(Steal time)虚拟时间百分比,就是当有虚拟机时,虚拟机CPU等待实际CPU的时间百分比

第四行

内容说明
Mem: 1004136k total物理内存的总量,单位KB
824820k used已经使用的物理内存数量
179316k free空闲的物理内存数量
39408k buffers作为缓冲区的内存数量

第五行

内容说明
Swap: 2031612k total交换分区(虚拟内存)的总大小
824820k used已经使用的交换分区的大小
0k used已经使用的交换分区的大小
2031612k free空闲交换分区的大小
596492k cached作为环迅的交换分区的大小

终止进程

kill -l 命令

  • kill -[信号] pid
    根据进程id杀死单一进程

常见信号如下:

信号代码信号名称说明
1SIGHUP平滑重启,关闭进程,重新读取配置文件后重启
9SIGNKILL进程法伤问题时,强制结束进程
15SIGTERM正常结束的金浩,kill命令的默认信号

杀死pid为14942的进程:

kill -1 14942
kill -HUP 14942 

killall 命令

  • killall [信号] [选项] 进程名
    按照进程名杀死进程

选项:
- -i 交互式。询问是否要杀死某个进程
- -I 忽略进程名的大小写

杀死tomcat进程:

killall -9 -I java

pkill 命令

  • pkill [信号] [选项] 进程名
    按照进程名杀死进程

该命令的作用与killall类似,只是多出了一个按照终端号结束用户终端的功能
- -t 终端号: 按照终端号踢出用户。 只有root用户可以操作

w命令查看当前用户。可知有一个本地终端和两个远程终端。WHAT表示该终端正在执行的命令。pts/1是当前终端的终端号。

[root@localhost bin]# w
 17:10:02 up 50 min,  3 users,  load average: 0.71, 0.21, 0.07
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                16:24   41:19   0.15s  0.15s -bash
twilight pts/0    192.168.226.1    16:27   42:17   0.08s  0.08s -bash
root     pts/1    192.168.226.1    16:29    0.00s  0.33s  0.05s w

根据终端号杀死pts/0用户的终端:

pkill -9 -t pts/0

修改进程优先级

ps -le可以查看所有进程的信息,其中包括进程的优先级。PRI表示priority,NI表示nice。两个都是有点急,数字越小代表优先级越高。

注意事项:
- NI的范围是-20 到 19
- 普通用户调整NI值得范围是0~19,而且只能调整自己的进程
- 普通用户只能调高NI值,而不能降低
- root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
- PRI(最终值) = PRI(原始值) + NI
- 用户只能修改NI的值,不能直接修改PRI

nice 命令

  • nice [选项] 命令
    nice可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值。

选项:
- -n NI值: 给命令赋予NI值

例如:

nice -n -5 service httpd start

renice 命令

  • renice [优先级] PID
    修改已经存在的进程的NI值的命令

例如:

renice -10 2125
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程概念 什么是线程 LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) 进程:独立地址空间,拥有PCB 线程:也有PCB,但没有独立的地址空间(共享) 区别:在于是否共享地址空间。 独居(进程);合租(线程)。 Linux下: 线程:最小的执行单位 进程:最小分配资源单位,可看成是只有一个线程的进程Linux内核线程实现原理 类Unix系统中,早期是没有“线程”概念的,80年代才引入,借助进程机制实现出了线程的概念。因此在这类系统中,进程和线程关系密切。 1. 轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone 2. 从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表是相同的 3. 进程可以蜕变成线程 4. 线程可看做寄存器和栈的集合 5. 在linux下,线程最是小的执行单位;进程是最小的分配资源单位 察看LWP号:ps –Lf pid 查看指定线程的lwp号。 三级映射:进程PCB --> 页目录(可看成数组,首地址位于PCB中) --> 页表 --> 物理页面 --> 内存单元 参考:《Linux内核源代码情景分析》 ----毛德操 对于进程来说,相同的地址(同一个虚拟地址)在不同的进程中,反复使用而不冲突。原因是他们虽虚拟址一样,但,页目录、页表、物理页面各不相同。相同的虚拟址,映射到不同的物理页面内存单元,最终访问不同的物理页面。 但!线程不同!两个线程具有各自独立的PCB,但共享同一个页目录,也就共享同一个页表和物理页面。所以两个PCB共享一个地址空间。 实际上,无论是创建进程的fork,还是创建线程的pthread_create,底层实现都是调用同一个内核函数clone。 如果复制对方的地址空间,那么就产出一个“进程”;如果共享对方的地址空间,就产生一个“线程”。 因此:Linux内核是不区分进程和线程的。只在用户层面上进行区分。所以,线程所有操作函数 pthread_* 是库函数,而非系统调用。 线程共享资源 1.文件描述符表 2.每种信号的处理方式 3.当前工作目录 4.用户ID和组ID 5.内存地址空间 (.text/.data/.bss/heap/共享库) 线程非共享资源 1.线程id 2.处理器现场和栈指针(内核栈) 3.独立的栈空间(用户空间栈) 4.errno变量 5.信号屏蔽字 6.调度优先级 线程优、缺点 优点: 1. 提高程序并发性 2. 开销小 3. 数据通信、共享数据方便 缺点: 1. 库函数,不稳定 2. 调试、编写困难、gdb不支持 3. 对信号支持不好 优点相对突出,缺点均不是硬伤。Linux下由于实现方法导致进程、线程差别不是很大。 线程控制原语 pthread_self函数 获取线程ID。其作用对应进程中 getpid() 函数。 pthread_t pthread_self(void); 返回值:成功:0; 失败:无! 线程ID:pthread_t类型,本质:在Linux下为无符号整数(%lu),其他系统中可能是结构体实现 线程ID是进程内部,识别标志。(两个进程间,线程ID允许相同) 注意:不应使用全局变量 pthread_t tid,在子线程中通过pthread_create传出参数来获取线程ID,而应使用pthread_self。 pthread_create函数 创建一个新线程。 其作用,对应进程中fork() 函数。 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 返回值:成功:0; 失败:错误号 -----Linux环境下,所有线程特点,失败均直接返回错误号。 参数: pthread_t:当前Linux中可理解为:typedef unsigned long int pthread_t; 参数1:传出参数,保存系统为我们分配好的线程ID 参数2:通常传NULL,表示使用线程默认属性。若想使用具体属性也可以修改该参数。 参数3:函数指针,指向线程主函数(线程体),该函数运行结束,则线程结束。 参数4:线程主函数执行期间所使用的参数。 在一个线程中调用pthread_create()创建新的线程后,当前线程从pthread_create()返回继续往下执行,而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。star
第一章 概论 ..................................................................................................................1 1.1 网络的历史.......................................................................................................1 1.2 OSI 模型...........................................................................................................3 1.3 Internet 体系模型..............................................................................................4 1.4 客户/服务器模型...............................................................................................5 1.4 UNIX 的历史 ...................................................................................................7 1.4.1 Unix 诞生前的故事 .................................................................................7 1.4.2 UNIX 的诞生..........................................................................................8 1.4.3 1979 – UNIX 第七版 ............................................................................. 10 1.4.4 UNIX 仅仅是历史吗?............................................................................. 11 1.5 Linux 的发展.................................................................................................. 11 1.5.1 Linux 的发展历史 .................................................................................. 12 1.5.2 什么叫 GNU? ...................................................................................... 12 1.5.3 Linux 的特色 ........................................................................................ 13 1.5.4 硬件需求............................................................................................... 14 1.5.5 Linux 可用的软件 ................................................................................. 14 1.5.6 为什么选择 Linux ? ............................................................................ 15 1.6 Linux 和 Unix 的发展 .................................................................................... 15 第二章 UNIX/Linux 模型...............................................................................................17 2.1 UNIX/Linux 基本结构.......................................................................................17 2.2 输入和输出......................................................................................................19 2.2.1 UNIX/Linux 文件系统简介 ......................................................................19 2.2.2 流和标准 I/O 库......................................................................................20 2.3 进程 ................................................................................................................21 第三章 进程控制 ..........................................................................................................22 3.1 进程的建立与运行 ...........................................................................................22 3.1.1 进程的概念 ............................................................................................22 3.1.2 进程的建立 ............................................................................................22 3.1.3 进程的运行 ............................................................................................24 3.1.4 数据和文件描述符的继承 .......................................................................29 3.2 进程的控制操作...............................................................................................31 3.2.1 进程终止 ............................................................................................31 3.2.2 进程的同步 ............................................................................................32 3.2.3 进程终止的特殊情况 ..............................................................................33 3.2.4 进程控制的实例 .....................................................................................33 3.3 进程的属性......................................................................................................38 3.3.1 进程标识符 ............................................................................................38 3.3.2 进程的组标识符 .....................................................................................39 3.3.3 进程环境................................................................................................40 3.3.4 进程的当前目录 .....................................................................................42 3.3.5 进程的有效标识符..................................................................................43 3.3.6 进程的资源 ............................................................................................44 3.3.7 进程优先级.........................................................................................45 3.4 守护进程 .........................................................................................................46 3.4.1 简介.......................................................................................................46 3.4.2 守护进程的启动 ............................................................................................46 3.4.3 守护进程的错误输出 ..............................................................................46 3.4.4 守护进程的建立 .....................................................................................48 3.5 本章小结 .........................................................................................................49 第四章 进程间通信.......................................................................................................50 4.1 进程间通信的一些基本概念 .............................................................................50 4.2 信号 ................................................................................................................50 4.2.1 信号的处理 ............................................................................................52 4.2.2 信号与系统调用的关系...........................................................................54 4.2.3 信号的复位 ............................................................................................55 4.2.4 在进程间发送信号..................................................................................56 4.2.5 系统调用 alarm()和 pause()......................................................................58 4.2.6 系统调用 setjmp()和 longjmp().................................................................62 4.3 管道 ................................................................................................................63 4.3.1 用 C 来建立、使用管道 ..........................................................................65 4.3.2 需要注意的问题 .....................................................................................72 4.4 有名管道 .........................................................................................................72 4.4.1 有名管道的创建 .....................................................................................72 4.4.2 有名管道的 I/O 使用...............................................................................73 4.4.3 未提到的关于有名管道的一些注意 .........................................................75 4.5 文件和记录锁定...............................................................................................75 4.5.1 实例程序及其说明..................................................................................75 4.5.2 锁定中的几个概念..................................................................................78 4.5.3 System V 的咨询锁定..............................................................................78 4.5.4 BSD 的咨询式锁定 .................................................................................79 4.5.5 前面两种锁定方式的比较 .......................................................................81 4.5.6 Linux 的其它上锁技术 ............................................................................81 4.6 System V IPC ...................................................................................................84 4.6.1 ipcs 命令 ................................................................................................85 4.6.2 ipcrm 命令..............................................................................................86 4.7 消息队列( Message Queues) ...........................................................................86 4.7.1 有关的数据结构 .....................................................................................86 4.7.2 有关的函数 ............................................................................................89 4.7.3 消息队列实例—— msgtool,一个交互式的消息队列使用工具 ..................94 4.8 信号量(Semaphores) .........................................................................................97 4.8.1 有关的数据结构 .....................................................................................98 4.8.2 有关的函数 ............................................................................................99 4.8.3 信号量的实例—— semtool,交互式的信号量使用工具...........................103 4.9 共享内存(Shared Memory) ..............................................................................109 4.9.1 有关的数据结构 ...................................................................................109 4.9.2 有关的函数 .......................................................................................... 110 4.9.3 共享内存应用举例—— shmtool,交互式的共享内存使用工具................... 112 4.9.4 共享内存与信号量的结合使用 .............................................................. 114 第五章 通信协议简介 .................................................................................................120 5.1 引言 ..............................................................................................................120 5.2 XNS( Xerox Network Systems)概述..............................................................120 5.2.1 XNS 分层结构......................................................................................120 5.3 IPX/SPX 协议概述........................................................................................122 5.3.1 网际包交换( IPX) .............................................................................122 5.3.2 排序包交换( SPX) .............................................................................124 5.4 Net BIOS 概述................................................................................................124 5.5 Apple Talk 概述 ..............................................................................................125 5.6 TCP/IP 概述...................................................................................................126 5.6.1 TCP/IP 结构模型 ..................................................................................126 5.6.2 Internet 协议( IP) ...............................................................................127 5.6.3 传输控制协议( TCP) .........................................................................132 5.6.4 用户数据报文协议................................................................................134 5.7 小结 ..............................................................................................................135 第六章 Berkeley 套接字 ............................................................................................. 136 6.1 引言 ............................................................................................................. 136 6.2 概述 ............................................................................................................. 136 6.2.1 Socket 的历史...................................................................................... 136 6.2.2 Socket 的功能...................................................................................... 136 6.2.3 套接字的三种类型............................................................................... 138 6.3 Linux 支配的网络协议................................................................................... 141 6.3.1 什么是 TCP/IP? ................................................................................... 141 6.4 套接字地址................................................................................................... 142 6.4.1 什么是 Socket? .................................................................................. 142 6.4.2 Socket 描述符...................................................................................... 142 6.4.3 一个套接字是怎样在网络上传输数据的? ............................................ 143 6.5 套接字的一些基本知识 ................................................................................. 144 6.5.1 基本结构............................................................................................. 144 6.5.2 基本转换函数...................................................................................... 145 6.6 基本套接字调用............................................................................................ 147 6.6.1 socket() 函数....................................................................................... 147 6.6.2 bind() 函数 ......................................................................................... 148 6.6.3 connect()函数 ...................................................................................... 150 6.6.4 listen() 函数........................................................................................ 151 6.6.5 accept()函数 ........................................................................................ 152 6.6.6 send()、 recv()函数 ............................................................................... 154 6.6.7 sendto() 和 recvfrom() 函数 ................................................................. 155 6.6.8 close()和 shutdown()函数...................................................................... 156 6.6.9 setsockopt() 和 getsockopt() 函数 ......................................................... 157 6.6.10 getpeername()函数.............................................................................. 157 6.6.11 gethostname()函数.............................................................................. 158 6.7 DNS 的操作.................................................................................................. 158 6.7.1 理解 DNS............................................................................................ 158 6.7.2 和 DNS 有关的函数和结构 .................................................................. 158 6.7.3 DNS 例程............................................................................................ 159 6.8 套接字的 Client/Server 结构实现的例子.......................................................... 160 6.8.1 简单的流服务器 .................................................................................. 161 6.8.2 简单的流式套接字客户端程序 ............................................................. 163 6.8.3 数据报套接字例程( DatagramSockets) ............................................... 165 6.9 保留端口 ...................................................................................................... 169 6.9.1 简介.................................................................................................... 169 6.9.2 保留端口............................................................................................. 170 6.10 五种 I/O 模式................................................................................................. 179 6.10.1 阻塞 I/O 模式 .................................................................................... 179 6.10.2 非阻塞模式 I/O.................................................................................. 180 6.10.3 I/O 多路复用 ..................................................................................... 181 6.10.4 信号驱动 I/O 模式 ............................................................................. 182 6.10.5 异步 I/O 模式 .................................................................................... 185 6.10.6 几种 I/O 模式的比较.......................................................................... 186 6.10.7 fcntl()函数 ......................................................................................... 186 6.10.8 套接字选择项 select()函数.................................................................. 187 6.11 带外数据..................................................................................................... 190 6.11.1 TCP 的带外数据 ................................................................................ 190 6.11.2 OOB 传输套接字例程(服务器代码 Server.c) ................................... 193 6.11.3 OOB 传输套接字例程(客户端代码 Client.c) .................................... 196 6.11.4 编译例子 ........................................................................................... 199 6.12 使用 Inetd( Internet 超级服务器) ............................................................... 199 6.12.1 简介.................................................................................................. 199 6.12.2 一个简单的 inetd 使用的服务器程序 hello inet service.......................... 199 6.12.3 /etc/services 和 /etc/inetd.conf 文件 ..................................................... 200 6.12.4 一个复杂一些的 inetd 服务器程序 ...................................................... 201 6.12.5 一个更加复杂的 inetd 服务器程序 ...................................................... 203 6.12.6 程序必须遵守的安全性准则............................................................... 205 6.12.7 小结.................................................................................................. 205 6.13 本章总结 .................................................................................................... 205 第七章 网络安全性.....................................................................................................206 7.1 网络安全简介 ................................................................................................206 7.1.1 网络安全的重要性................................................................................206 7.1.2 信息系统安全的脆弱性.........................................................................207 7.2 Linux 网络不安全的因素 ................................................................................209 7.3 Linux 程序员安全........................................................................................... 211 7.3.1 系统子程序 ..........................................................................................212 7.3.2 标准 C 函数库.......................................................................................214 7.3.3 书写安全的 C 程序................................................................................216 7.3.4 SUID/SGID 程序指导准则......................................................................217 7.3.5 root 程序的设计....................................................................................218 7.4 小结 ..............................................................................................................219 第八章 Ping 例程 .......................................................................................................220 8.1 Ping 命令简介 ................................................................................................220 8.2 Ping 的基本原理.............................................................................................220 8.3 小结 ..............................................................................................................221 第九章 tftp 例程.........................................................................................................222 9.1 tftp 协议简介..................................................................................................222 9.2 tftp 的使用 .....................................................................................................222 9.3 tftp 的原理 .....................................................................................................223 9.3 tftp 的基本结构 ..............................................................................................223 9.4 小节 ..............................................................................................................225 第十章 远程命令执行 .................................................................................................226 10.1 引言 ............................................................................................................226 10.2 rcmd 函数和 rshd 服务器...............................................................................227 10.3 rexec 函数和 rexecd 服务器...........................................................................233 第十一章 远程注册.....................................................................................................235 11.1 简介.............................................................................................................235 11.2 终端行律和伪终端........................................................................................235 11.3 终端方式字和控制终端.................................................................................239 11.4 rlogin 概述....................................................................................................242 11.5 窗口环境......................................................................................................242 11.6 流控制与伪终端方式字.................................................................................243 11.7 rlogin 客户程序.............................................................................................245 11.8 rlogin 服务器 ................................................................................................246 第十二章 远程过程调用..............................................................................................249 12.1 引言 ............................................................................................................249 12.2 远程过程调用模型 .......................................................................................249 12.3 传统过程调用和远程过程调用的比较 ...........................................................250 12.4 远程过程调用的定义....................................................................................252 12.5 远程过程调用的有关问题.............................................................................252 12.5.1 远程过程调用传送协议.......................................................................253 12.5.2 Sun RPC ...........................................................................................254 12.5.3 Xerox Courier ....................................................................................254 12.5.4 Apollo RPC........................................................................................255 12.6 stub 过程简介...............................................................................................256 12.7 rpcgen 简介 ..................................................................................................256 12.8 分布式程序生成的例子 ................................................................................257 12.8.1 我们如何能够构造出一个分布式应用程序...........................................257 12.9 小结 ............................................................................................................283 第十三章 远程磁带的访问 ..........................................................................................284 13.1 简介 ............................................................................................................284 13.2 Linux 磁带驱动器的处理 ..............................................................................285 13.3 rmt 协议.......................................................................................................285 13.4 rmt 服务器设计分析 .....................................................................................286 第十四章 WWW 上 HTTP 协议.................................................................................. 290 14.1 引言............................................................................................................ 290 14.2 HTTP 客户请求........................................................................................... 290 14.2.1 客户端 .............................................................................................. 290 14.2.2 服务器端........................................................................................... 290 14.2.3 Web 请求简介.................................................................................... 291 14.2.4 HTTP – HyperText Transfer Protocol 超文本传输协议 ........................... 295 14.3 Web 编程 .................................................................................................... 297 14.4 小结 ........................................................................................................... 301 附录 A 有关网络通信的服务和网络库函数...................................................................302 附录 B Vi 使用简介.....................................................................................................319 B.1 Vi 基本观念...................................................................................................319 B.1.1 进入与离开..........................................................................................319 B.1.2 Vi 输入模式 .........................................................................................319 B.2 Vi 基本编辑...................................................................................................320 B.2.1 删除与修改..........................................................................................320 B.3 Vi 进阶应用...................................................................................................320 B.3.1 移动光标 .............................................................................................320 B.3.2 进阶编辑命令 ......................................................................................322 B.3.3 文件命令 .............................................................................................322 附录 C Linux 下 C 语言使用与调试简介 ......................................................................324 C.1 C 语言编程 ...................................................................................................324 C.2 什么是 C? .....................................................................................................324 C.3 GNU C 编译器...............................................................................................324 C.3.1 使用 GCC............................................................................................324 C.3.2 GCC 选项 ............................................................................................325 C.3.3 优化选项 .............................................................................................325 C.3.4 调试和剖析选项...................................................................................325 C.3.5 用 gdb 调试 GCC 程序..........................................................................326 C.4 另外的 C 编程工具 ........................................................................................330 C.4.1 Xxgdb..................................................................................................330 C.4.2 Calls ....................................................................................................331 C.4.3 cproto ..................................................................................................332 C.4.4 Indent ..................................................................................................333 C.4.5 Gprof...................................................................................................334 C.4.6 f2c 和 p2c ............................................................................................335 附录 D Ping 源码 ........................................................................................................336 附录 E TFTP 服务器程序源码 .....................................................................................362

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值