Chinaunix首页 | 论坛 | 博客
  • 博客访问: 248041
  • 博文数量: 37
  • 博客积分: 2035
  • 博客等级: 大尉
  • 技术积分: 377
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-27 09:51
个人简介

在技术学习之路坚持走下去

文章分类

全部博文(37)

文章存档

2015年(12)

2011年(1)

2010年(3)

2009年(11)

2008年(10)

我的朋友

分类: BSD

2008-09-30 20:40:42

FreeBSD是一个多任务的操作系统,也就是说同时可以执行多个程序。一个执行中的程序就是进程。

每个进程都有一个由系统临时分配的唯一标识,称为进程ID(可从1分配到99999),或PID。绝大多数的进程都有一个父进程,即用来启动该进程的进程。但是,在系统中有一个叫做init的进程,其PID始终为1,该进程在FreeBSD启动时由内核自动启动。

例如,用户在shell中执行指令ls,则ls对应的进程就是shell的子进程,shell是ls的父进程。

在 FreeBSD中,可以使用ps和top两个指令来察看当前系统中进程的状态。其中,ps会显示当前运行的拥有控制终端的进程的状态,包括PID、运行其 的终端、状态、占用的CPU时间和启动其的命令等。ps常用的参数包括:a显示所有运行的进程,u显示进程所属的用户和占用的内存,x显示出后台进 程,ww显示完整的命令行。

附:在进程中,有一部分是有终端的,需要和用户进行交互来完成其功能。而另一部分是不需要和用户进行交互的,称为守护进程deamon(通常在名称后加上d表示)。

而 top则显示所有的运行进程,包括PID、运行该进程的用户、运行的线程数、优先级、最大内存需求、当前占用内存、进程状态、占用CPU时间和百分比,以 及运行该进程的命令等。并且,该进程会默认每2秒刷新一次状态,该参数可以用选项s修改。而在该命令的开始部分,则显示当前总进程数、进程状态统计、 CPU状态、内存信息和交换分区的信息等。

在进程间进行通讯可以采用信号的机制。不同的信号根据不同的数字编号有着不同的含义,其中一些有特殊含义,另一些则可被应用程序进行解释。通常,用户只能给自己拥有的进程发送信息,而给其他人发送的信息则可能被kill拒绝。但root可以将各种信号发送给每个进程。

在某些情况下,FreeBSD可以向应用程序发送信号,例如段式违规信号(SIGSEGV)和闹钟信号(SIGALRM)等。可用来终结进程的信号有SIGTERM和SIGKILL,前者可以被进程自行决定是否终结,而接收到后者的进程则必须立刻被终结。

在FreeBSD中可以使用/bin/kill指令来发送信号,其语法是:
kill -s 信号 PID

其中常用的信号包括HUP、INT、QUIT、ABRT、KILL、ALRM、TERM等。

再 来看看shell。shell就是命令行界面,其主要功能是从输入取得命令然后去执行之。FreeBSD内含了若干shell,如sh、tcsh等,可以 自行选择使用何种shell(默认为csh)。shell的一大特点是能够自动补齐文件名(输入命令或文件名前几个字母后按tab键即可,若不能自动不全 则发出响铃)。

shell的另一特点是利用环境变量运行,主要包括USER(当前用户名)、PATH(默认路径名)、 DISPLAY(X11显示器的网络名称)、SHELL(当前使用的shell名)、TERM(用户终端的名字)、TERMCAP(各种终端功能所用终端 分离编码的基本数据项目)、OSTYPE(操作系统类型)、MACHTYPE(CPU体系结构)、EDITOR(首选的文本编辑器)、PAGER(首选的 文本页面调度程序)和MANPATH(联机手册路径)等。在csh下设置变量的指令为:
setenv 变量名 值

显示环境变量值的指令为:
echo $变量名

参考资料:The FreeBSD Documentation Project

阅读(2071) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~