专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Unix/FreeBsd » 进程管理:FreeBSD进程管理 »正文

进程管理:FreeBSD进程管理

来源: 发布时间:星期一, 2009年1月12日 浏览:6次 评论:0
  在系统shell提示下使用者可以输入各种命令来执行相应工作每个命令通常从终端键盘中获取输入将输出打印到终端屏幕上Unix使用标准输入stdio和标准输出stdout来表示每个命令输入和输出还使用个标准输出stderr用于输出信息这 3个标准输入输出系统缺省和终端设备相联系在但是也可以使用管道概念将它们重新定向个文件或另个命令中获取输入输出到另外文件中或作为另个命令输入等 $ 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等这些软件Software通常可以在多种Unix系统中使用也是十分常用工具也可以在FreeBSD系统中安装网络管理代理snmpd然后使用网络管理系统通过网络来获得FreeBSD主机各种系统信息



标签:进程管理
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: