FreeBSD进程管理

 在系统shell提示下,使用者可以输入各种命令来执行相应的工作。每个命令通常从终端键盘中获取输入,将输出打印到终端屏幕上,Unix使用标准输入stdio和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统缺省与终端设备相联系在一起,但是也可以使用管道的概念将它们重新定向,从一个文件或另一个命令中获取输入,输出到另外的文件中或作为另一个命令的输入等。 $ ls > ls.out
$ cat < ls.out
$ ls -l | grep mbox

  FreeBSD可以同时运行多个进程,在shell下直接输入命令十,shell将进程放到前台执行。如果要将进程放到后台执行,需要在命令行的结尾加上一个 “&” 符号。下面的命令从后台执行,从ftp.isc. org下载文件。

$ wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &

  当程序已经在前台执行的时候,可以使用^Z将这个程序挂起,暂停执行。然后可以使用bg命令将这个挂起的程序放到后台执行,或者使用fg将某个在后台或挂起的进程放到前台执行。

  当在后台运行了程序的时候,可以用jobs命令来查看后台作业的状态。在有多个后台程序时,要使用来参数的fg 命令将不同序号的后台作业切换到前台上运行。

$ jobs
[1]+ Running  wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &
$ fg %1
wget ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz

  在启动了多个程序之后,可以使用ps命令来查看这些进程及其状态。

$ ps
 PID TT STAT   TIME COMMAND
 501 p2 Ss   0:00.24 -bash (bash)
 988 p2 R+   0:00.00 ps
 765 p3 Is+  0:00.28 -bash (bash)
 230 v0 Is+  0:00.14 -bash (bash)

  显示的结果包括进程的标识号PID,控制终端TT(p0表示控制终端为ttyp0),进程的状态STAT,进程使用的处理器时间TIME和具体的命令。

 

可以给ps命令加上参数,来获得更多的输出内容,以下命令将输出系统中所有的进程:$ ps waux
USER   PID %CPU %MEM  VSZ RSS TT STAT STARTED   TIME COMMAND
wb    989 0.0 0.4  400 236 p2 R+  5:48PM  0:00.00 ps -aux
root    1 0.0 0.1  496  72 ?? Is  10:12PM  0:00.02 /sbin/init --
root    2 0.0 0.0   0  0 ?? DL  10:12PM  0:07.05 (pagedaemon)
root    3 0.0 0.0   0  0 ?? DL  10:12PM  0:00.20 (vmdaemon)
root    4 0.0 0.0   0  0 ?? DL  10:12PM  0:04.27 (syncer)
root   27 0.0 0.0  204  0 ?? IWs -     0:00.00 (adjkerntz)
root   91 0.0 0.5  820 328 ?? Is  2:12PM  0:00.82 syslogd
daemon  100 0.0 0.0  792  0 ?? IWs -     0:00.00 (portmap)
root   131 0.0 0.3  864 164 ?? Is  2:12PM  0:00.06 inetd
root   134 0.0 0.3  980 192 ?? Is  2:12PM  0:00.11 cron
root   138 0.0 0.6 1252 380 ?? Is  2:12PM  0:00.11 sendmail: accepti
wb    230 0.0 1.1 1540 668 v0 Is+  2:12PM  0:00.14 -bash (bash)
root   231 0.0 0.0  824  0 v1 IWs+ -     0:00.00 (getty)
root   232 0.0 0.0  824  0 v2 IWs+ -     0:00.00 (getty)
root   500 0.0 0.9  876 524 ?? Ss  4:19PM  0:01.78 telnetd
wb    501 0.0 1.4 1540 888 p2 Ss  4:19PM  0:00.24 -bash (bash)
root   698 0.0 1.5 1644 900 ?? Is  4:49PM  0:00.02 /usr/local/sbin/s
root   700 0.0 1.2 1308 748 ?? Ss  4:49PM  0:00.22 /usr/local/sbin/n
root   702 0.0 3.4 2900 2112 ?? S   4:49PM  0:00.32 /usr/local/sbin/s
root   764 0.0 0.9  880 540 ?? Is  5:10PM  0:00.22 telnetd
wb    765 0.0 1.7 1536 1052 p3 Is+  5:10PM  0:00.28 -bash (bash)
root    0 0.0 0.0   0  0 ?? DLs 10:12PM  0:00.02 (swapper)

  当用户启动一个进程的时候,这个进程是运行在前台,使用与相应控制终端相联系的标准输入、输出进行输入和输出。即使将进程的输入输出重定向,并将进程放在后台执行,进程仍然和当前终端设备有关系。正因为如此,在当前的登录会话结束时,控制终端设备将和登录进程相脱离,那么系统就向所有与这个终端相联系的进程发送SIGHUP的信号,通知进程线路已经挂起了,如果程序没有接管这个信号的处理,那么缺省的反应是进程结束。因此普通的程序并不能真正脱离登录会话而运行进程,为了使得在系统登录后还可以正常执行,只有使用命令nohup来启动相应程序。

 

从上面的ps的输出结果可以看出,有些程序没有控制终端,这些程序通常是一些后台进程。使用命令nohup当然可以启动这样的程序,但nohup启动的程序在进程执行完毕就退出,而常见的一些服务进程通常永久的运行在后台,不向屏幕输出结果。在Unix中这些永久的后台进程称为守护进程(daemon)。守护进程通常从系统启动时自动开始执行,系统关闭时才停止。如果偶然某个守护进程消失了,那么它提供的服务将不再能被使用。

  在守护进程中,最重要的一个是超级守护进程inetd,这个进程接管了大部分网络服务,但并不是对每个服务都自己进行处理,而是依据连接请求,启动不同的服务程序与客户机打交道。inetd支持网络服务种类在它的设置文件 /etc/inet.conf中定义。inet.conf文件中的每一行就对应一个端口地址,当inetd接受到连接这个端口的连接请求时,就启动相应的进程进行处理。使用inetd的好处是系统不必启动很多守护进程,从而节约了系统资源,然而使用inetd启动守护进程相应反应会迟缓一些,不适合用于被密集访问的服务进程。

  当用户希望要停止一个进程时,如果进程在前台运行并接收输入的条件下,可以输入^D,告诉进程输入结束,通常这意味着需要进程进行的处理要结束了,从而通知进程结束。对于有些不以文件输入结束作为结束标志的进程,那么就可以使用^C来向进程发送信号中断进程。

  如果上述方式均无效,或者进程运行在后台或者是一个守护进程,则需要手工向进程发送信号,这可以通过kill 命令来做到。使用 “kill PID” 来向进程发送终止信号SIGTERM,这个信号告诉进程需要退出。但是这些发送的信号都能被程序通过编程的手段捕获并对其进行处理,一旦程序在这个处理过程中没有退出,而是忽略这个信号的情况下,就无法杀死进程。这时只能使用 “kill -9 PID” 向PID代表的进程发送SIGKILL信号,这个信号不能被进程本身捕获,从而无条件杀死进程。但是最好先首先发送SIGTERM信号终止进程。而很多守护进程能够捕获 SIGHUP挂线信号,会根据这个信号进行处理,例如重新读入配置文件,重新刷新进程本身等,因此可以再更改进程的配置文件之后,使用 “kill -HUP pid” 刷新进程的配置。

 

 

 kill命令需要使用进程的标识号PID,因此需要首先运行ps以得到这个标识号。而FreeBSD下可以使用程序的名字来给进程发送信号,这个命令为killall,对于大部分情况,它使用起来更为方便。

  • 查看系统状态

  FreeBSD下提供了相当丰富的工具可以用来查看系统的状态,使用者可以通过它们来了解系统状态,从而优化系统性能。这些工具通常读取/dev/mem、/dev/kmem来获得内存中的系统信息,使用/kernel将这些信息中的变量转换为名字。最基本的查看系统状态的命令为ps,用于报告当前系统中运行的进程的状态。

  pstat能显示系统中打开的文件数量、交换设备的使用率等系统信息。pstat缺省使用/dev/mem设备文件,从系统内存中读取这些数据,或者可以指定一个core文件,那么pstat从这个文件中读取数据。还需要给pstat 一个参数来告诉pstat应该显示那种系统信息,通常使用 “pstat -f” 显示出当前打开文件的列表, “pstat -s” 显示交换设备的当前状态, “pstat -t” 显示当前使用的终端设备文件的状态, “pstat -v” 显示激活的v节点的当前状态。 “pstat -T” 显示这几个系统表的状态,包括当前使用的和可以利用的系统表空间,因此可以用来检查系统在当前负载下是使用多大的系统表,帮助进行优化系统性能。

$ pstat -T
69/8232 files
4M/137M swap space

  vmstat报告内核的统计信息,包括进程、虚存、处理器、磁盘等。可以使用 “-w” 参数指定每隔几秒时间,报告一次系统状态。

$ vmstat
procs   memory   page          disks    faults   cpu
r b w   avm  fre flt re pi po fr sr wd0 wd1 fd0  in  sy cs us sy id
0 0 0  3752 30476 643  0  0  0 19 43  0  0  0 262 2599 85 56 3 41

  其他与vmstat类似的命令还有,fstat报告系统中打开文件的信息,可以使用文件名、进程号、用户名,以及指定文件所在的文件系统来限制要显示的文件。iostat报告内核的输入输出统计信息,包括磁盘、终端等设备的I/O 状态。netstat报告网络的有关统计信息。nfsstat显示NFS的统计信息。

 

  除此之外,systat以全屏幕方式显示各种系统统计信息,缺省情况下systat是报告处理器的使用率,包括总利用状态、空闲使用率和各个进程的使用率。通过指定参数,systat也能进行I/O的统计、虚存的统计、网络的统计等,这些参数包括-iostat, -vmstat, -mbufs, -netstat, -ip, -icmp, -tcp, -swap等。

/0  /1  /2  /3  /4  /5  /6  /7  /8  /9  /10
   Load Average  ||
    /0  /10 /20 /30 /40 /50 /60 /70 /80 /90 /100
       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root   XF86_S3.cx XXXXXXX
wb      kpanel XXX
wb       kfm XX
wb     kbgndwm XX
wb    kblankscrn
wb     krootwm
wb       kwm

  除了这些系统提供的命令之外,FreeBSD也提供多种有效的系统工具,如综合ps、systat和vmst at功能的top等。这些软件通常可以在多种Unix系统中使用,也是十分常用的工具。也可以在FreeBSD系统中安装网络管理代理snmpd,然后使用网络管理系统通过网络来获得FreeBSD主机的各种系统信息。

第1章 引言 FreeBSD的起源 Unix的历史发展 FreeBSD的起源和发展 当前FreeBSD的版本 FreeBSD的功能特点 FreeBSD的特点和应用范围 使用FreeBSD的实例 其他相关系统和组织 GNU’s Not Unix GNU/Linux 其他BSD系统 FreeBSD的相关资源 联机文档 出版物 Internet资源 商业服务和支持 第2章 安装与配置 安装之前的准备 硬件设备 安装介质 准备硬盘和软盘 安装FreeBSD 启动安装程序 安装系统 基本系统配置 设置网络 其他安装问题 第3章 系统管理和维护 系统的启动与关闭 系统启动过程 系统启动脚本 系统登录与退出 关闭系统 用户管理 增加用户 超级用户root 登录类别 shell设置 文件系统与磁盘操作 文件的属性 设备文件 安装文件系统 软盘操作 维护文件系统 检查硬盘 调整文件系统的目录结构 建立文件系统 管理交换设备 调整系统设置 调整控制台设置 配置系统时间 进程管理 查看系统状态 定时执行程序 进程的权限 安装应用软件 应用软件的类别 Packages Collection 打印机配置 系统结构 配置打印机 系统日志与备份 系统日志 系统备份 第4章 网络配置与使用 DOD参考模型 基本网络设置 手工配置网络 拨号网络 串口和modem PPP协议 DNS服务 DNS的体系结构 配置缓冲或转发方式的named 定义自己的名字服务 电子邮件 邮件服务器 在FreeBSD上查看邮件 网络文件系统(NFS) NFS客户支持 NFS服务器 第5章 设置和使用X Window 安装和设置X服务器 X Free86的硬件要求 安装XFree86 使用XF86Setup配置X服务器 使用xf86config配置X服务器 使用和配置X Window X Window的基本概念 进入X Window 定制X Window的基本方法 X Window下的中文环境 中文X应用软件 外挂式中文显示与输入软件 中文X服务器 配置文件XF86Config 第6章 定制应用软件与系统内核 编译应用软件 Ports Collection 手工编译安装程序 可执行程序格式 配置FreeBSD内核 为编译内核准备源代码 编译安装新内核 缺省内核配置选项 其他内核设置选项 升级系统 第7章 与Windows系统集成 集成Unix和Windows的方式 NetBIOS与SMB/CIFS协议 NetBIOS名字解析 SMB/CIFS协议 配置和使用Samba 安装samba 配置samba 根据Windows网络设置Samba 访问Windows系统资源 使用smbclient访问Windows资源 使用SharityLight安装SMB文件系统 设置DHCP DHCP的工作过程 设置和使用DHCP 第8章 系统与网络安全 网络安全概念 认证与加密 安全问题 防火墙技术 增强安全设置 设置基本系统 安全工具 设置防火墙功能 设置和使用ipfw/natd 设置和使用ipfilter 构建防火墙 第9章 设置WWW服务 基本概念 超文本传输协议HTTP 数据处理方式 安装和设置Apache 基本安装 配置Apache服务器 服务器的安全控制 对IP地址和域名的控制 基于用户的访问控制 安全连接方式SSL CGI和SSI的安全性 调整服务器性能 单服务器性能调整 提升静态网页服务能力的综合方式 负载均衡技术 基于DNS的负载均衡 反向代理负载均衡 基于NAT的负载均衡技术
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值