FreeBSD进程管理

1 2 3 下一页
在系统shell提示下 , 使用者可以输入各种命令来执行相应的工作 。每个命令通常从终端键盘中获取输入 , 将输出打印到终端屏幕上 , Unix使用标准输入stdio和标准输出stdout , 来表示每个命令的输入和输出 , 还使用一个标准错误输出stderr用于输出错误信息 。这三个标准输入输出系统缺省与终端设备相联系在一起 , 但是也可以使用管道的概念将它们重新定向 , 从一个文件或另一个命令中获取输入 , 输出到另外的文件中或作为另一个命令的输入等 。$ ls > ls.out
$ cat < ls.out
$ ls -l | grep mboxFreeBSD可以同时运行多个进程 , 在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]Runningwget 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 R0: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 %MEMVSZ RSS TT STAT STARTED TIME COMMAND
wb989 0.0 0.4400 236 p2 R 5:48PM0:00.00 ps -aux
root1 0.0 0.149672 ?? Is10:12PM0:00.02 /sbin/init --
root2 0.0 0.0 00 ?? DL10:12PM0:07.05 (pagedaemon)
root3 0.0 0.0 00 ?? DL10:12PM0:00.20 (vmdaemon)
root4 0.0 0.0 00 ?? DL10:12PM0:04.27 (syncer)
root 27 0.0 0.02040 ?? IWs - 0:00.00 (adjkerntz)
root 91 0.0 0.5820 328 ?? Is2:12PM0:00.82 syslogd
daemon100 0.0 0.07920 ?? IWs - 0:00.00 (portmap)
root 131 0.0 0.3864 164 ?? Is2:12PM0:00.06 inetd
root 134 0.0 0.3980 192 ?? Is2:12PM0:00.11 cron
root 138 0.0 0.6 1252 380 ?? Is2:12PM0:00.11 sendmail: accepti
wb230 0.0 1.1 1540 668 v0 Is2:12PM0:00.14 -bash (bash)
root 231 0.0 0.08240 v1 IWs- 0:00.00 (getty)
root 232 0.0 0.08240 v2 IWs- 0:00.00 (getty)
root 500 0.0 0.9876 524 ?? Ss4:19PM0:01.78 telnetd
wb501 0.0 1.4 1540 888 p2 Ss4:19PM0:00.24 -bash (bash)
root 698 0.0 1.5 1644 900 ?? Is4:49PM0:00.02 /usr/local/sbin/s
root 700 0.0 1.2 1308 748 ?? Ss4:49PM0:00.22 /usr/local/sbin/n
root 702 0.0 3.4 2900 2112 ?? S 4:49PM0:00.32 /usr/local/sbin/s
root 764 0.0 0.9880 540 ?? Is5:10PM0:00.22 telnetd
wb765 0.0 1.7 1536 1052 p3 Is5:10PM0:00.28 -bash (bash)
root0 0.0 0.0 00 ?? DLs 10:12PM0:00.02 (swapper)【FreeBSD进程管理】当用户启动一个进程的时候 , 这个进程是运行在前台 , 使用与相应控制终端相联系的标准输入、输出进行输入和输出 。即使将进程的输入输出重定向 , 并将进程放在后台执行 , 进程仍然和当前终端设备有关系 。正因为如此 , 在当前的登录会话结束时 , 控制终端设备将和登录进程相脱离 , 那么系统就向所有与这个终端相联系的进程发送SIGHUP的信号 , 通知进程线路已经挂起了 , 如果程序没有接管这个信号的处理 , 那么缺省的反应是进程结束 。因此普通的程序并不能真正脱离登录会话而运行进程 , 为了使得在系统登录后还可以正常执行 , 只有使用命令nohup来启动相应程序 。

推荐阅读