首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>基础入门>正文

Unix Shell程序编写的方法详解

http://www.oklinux.cn  2007-07-03  赛迪网 skid  会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

Shell是什么?

 

任何发明都具有供用户使用的界面。UNIX供用户使用的界面就是Shell(DOS的command熟悉吧,但UNIX的要强大的多)。

 

Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。

 

为了不同的需要,UNIX提供了不同的Shell。现在的UNIX大部分都支持BourneShell,以下教程就以BourneShell(Bsh)为例,一步步的领略UNIX Shell的强大功能,占先其强大魅力,达到更方便灵活的管理、应用UNIX的目的。

 

1.UNIX内核和Shell的交互方法

 

启动UNIX时,程序UNIX(内核)将被调入计算机内存,并一直保留在内存中直到机器关闭。在引导过程中,程序init将进入后台运行一直到机器关闭。该程序查询文件/etc/inittab,该文件列出了连接终端的各个端口及其特征。当发现一个活动的终端时,init程序调用getty程序在终端上显示login等登陆信息。(username和passwd),在输入密码后,getty调用login进程,该进程根据文件/etc/passwd的内容来验证用户的身份。若用户通过身份验证,login进程把用户的home目录设置成当前目录并把控制交给一系列setup程序。setup程序可以是指定的应用程序,通常setup程序为一个Shell程序,如:/bin/sh 即Bourne Shell(command出来了,呵呵)。

 

 

得到控制后,Shell程序读取并执行文件/etc/.profile以及.profile。这两个文件分别建立了系统范围内的和该用户自己的工作环境。最后Shell显示命令提示符,如$。(这是以bsh为例,若是csh,为.cshrc,ksh为.kshrc,bash为.bashrc等等) 注不妨把/etc/.profile和.profile看成DOS的autoexec.bat 或config.sys文件)

 

当shell退出时,内核把控制交给init程序,该程序重新启动自动登陆过程。有两种方法使shell退出,一是用户执行exit命令,二是内核(例如root用kill命令)发出一个kill命令结束shell进程。shell退出后,内核回收用户及程序使用的资源。

 

用户登陆后,用户命令同计算机交互的关系为:命令进程--->Shell程序--->UNIX内核--->计算机硬件。当用户输入一个命令,如$ls,

Shell将定位其可执行文件/bin/ls并把其传递给内核执行。内核产生一个新的子进程调用并执行/bin/ls。当程序执行完毕后,内核取消

该子进程并把控制交给其父进程,即Shell程序。例如执行:

$ps

 

该命令将会列出用户正在执行的进程,即Shell程序(下来详细说说,别急现在)和ps程序。若执行:

$sleep 10 & $ps

其中第一条命令将产生一个在后台执行的sleep子进程。ps命令执行时会显示出该子进程。

 

每当用户执行一条命令时,就会产生一个子进程。该子进程的执行与其父进程或Shell完全无关,这样可以使Shell去做其他工作。(Shell只是把用户的意图告诉内核,然后该干嘛干嘛) 现在windows有个计划任务(在固定的时间,日期自动执行某任务),其实UNIX很早就有这个功能了,也就是所谓的Shell的自动执行。一些UNIX资源,如cron可以自动执行Shell程序而无需用户的参与,(这个功能好象在/var/spool/crotab目录里)。

 

Crontab 程序对于系统管理员来说是非常有用的。Cron服务用于计划程序在特定时间(月、日、周、时、分)运行。我们以root的crontab 为例。根用户的crontab 文件放在 /var/spool/crontab/root 中,其格式如下:

 

  (1)  (2)  (3)  (4)  (5)  (6)

   0   0   *   *   3   /usr/bin/updatedb

      1. 分钟 (0-60)

      2. 小时 (0-23)

      3. 日 (1-31)

      4. 月 (1-12)

      5. 星期 (1-7)

      6. 所要运行的程序

共5页: 上一页 1 [2] [3] [4] [5] 下一页

上一篇:浅析Arm Linux操作系统调用流程详细解析   下一篇:终端命令行下的一些高亮原色设置方法介绍

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·在开机时自动执行文件系统校验
·介绍Linux操作系统下的四个串口
·新手看招 Unix和Linux下C语言学习指南
·Linux命令Man解释Lilo:安装引导装载程序
·Linux平台编程新手入门 C语言中的移位操作
·Linux操作系统下关于引导和初始化的问题
·介绍一下Linux操作系统下查找文件的方法
·十种提高Linux系统安全性的招数
·Redhat Linux操作系统下常用服务概括介绍
·Linux操作系统的命令分类介绍
·Linux系统的优势到底在哪里?
·Linux操作系统中关于负载的定义
·揭开Linux系统Swap交换区之谜
·Linux的GRUB引导程序配置方法大全
·Linux操作系统文件链接问题
·Linux操作系统的历史及其发展状况
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·企业为什么喜欢开源工作流软件(java)
·C++点滴:正确理解const相关的指针
·Linux文件系统现状
·新手进阶 对照DOS学Linux基本命令
·Ubuntu分区基础知识
·Ubuntu 8.10初次使用有感
·Ubuntu 8.10 ( Intrepid Ibex ) 软件源
·linux下的安装包介绍
·Windows系统用户转Linux新手常见问题整
·Linux系统下的多线程下载
·Linux系统的文件属性介绍
·关于Linux系统文件扩展名含义的介绍
  阅读排行
·HP-UX Glance的用法
·Linux的GRUB引导程序配置方法大全
·从Grub命令行启动系统
·Linux 操作员基础教程
·Sun Cluster 3.0 的规划、安装、配置及
·菜鸟从硬盘安装Redhat Linux 9.0中文版
·FREEBSD分区总结
·dos2unix, unix2dos 对应的命令
·各种 UNIX 下载地址
·iptable 基本配置方法
·firefox插件安装方法
·solaris下,添加静态路由的方法
·介绍几个Unix版本
·Solaris 修改root 可以Telnet 与ftp
·Linux通配符
网摘收藏: