走进Linux 操作系统
| 行的步伐,要“顺从“系统运行自己和系统运行服务这一指导思想。所以基础知识也从这几个角度展开。 不过我们蜻蜓点水,不做深究。 基本命令我们首先介绍一组搭建linux系统需要使用的基本的命令。当登陆到linux系统上后,出现在我们面前的是一个shell?提示符(# 或 $等),该提示符号告诉我们系统已经准备接受命令了,你可以用键盘输入命令行来操作系统了,你输入的命令将在屏幕上显示出来,并议回车键表述命令输入结束、发送命令给系统的标志 shell和shell编程 shell是什么? 在你登陆到系统后,系统首先运行的是一个特别的应用程序,它显示一个提示符号表明系统已经准备好开始接受你的命令了,当你键入你要执行的命令后,该应用程序将命令提交给linux系统去处理,然后等处理完毕再把结果返回给你,这之后她又将回到提示状态,去等待你下次输入命令。这个特殊的“接待”程序就被称为shell,其作用相当是一个内核与用户交流的界面,她周而复始地向内核解释用户命令,因此shell又被称称为命令解释器。 shell作为一种应用程序并非只有唯一一种,目前流行的shell有sh / bash /ksh /tcsh/csh等等,他们其实也就始一个应用程序,你可以使用命令whereis ksh/sh/bash来查看其存在于系统中的具体位置。 有兴趣得话,你可以通过命令 echo $shell来观察系统默认的shell属于那一种。你也可以在登陆后(使用ctrl+d可以重新登陆)使用chsh来改变选择使用的shell程序,或干脆直接在默认shell上执行新的shell程序——只要键入新shell名字并回车即可,如果想推出新shell,就再执行exit程序。 各种shell程序各有特点,功能也有强又弱,但是相同点都需要能够执行程序或命令;能够处理程序或命令的输入输出;能够执行shell脚本。(shell 能执行三种不同概念的文件:1命令指shell程序自己内置的基本命令——如 cd 命令,管道 | 命令 >重定向命令——和以二进制文件形式存在的系统命令——如ls cp等。2 程序指用户安装和编译身成的二进制文件;3脚本指包含逻辑关系的程序和命令序列) shell执行文件需要必要的环境,这些环境包含文件搜索路径,当前目录,用户主目录,默认编辑器等等(你可以从man shell种获得这些信息)。这些信息属于环境变量,可以通过env观察当前系统默认的环境变量,改变这些变量可以通过:变量=设置(如 path= /opt)命令方式和修改存在于用户目录下的相关配置文件(如对bash来说配置文件爱你为~/.bashrc,~/.bash_profile)shell编程 shell编程简单地讲就始讲命令序列化后执行,而不用被编译成二进制可执行文件。这类似于dos下地bat批处理文件。使用shell程序的意义在于,有些任务无法通过现有的命令完成,必须使用一组命令协作才能完成,而且各种命令之间不是简单的罗列而是按照设定的逻辑关系有机结合。由此可见shell程序需要能够控制各种命令的执行流,能够读写临时数据,因此,shell程序存在自己控制语句和变量,而且对其使用也由相关语法。 shell程序,也可以成为shell脚本,以普通的linux文本文件形式存在。可以是用vi等文本编辑器生成,再将其属性改为可执行即可运行。 比如 touch test 生成文件test chmod u+x test 修改属性 ./test 保险其间可以再脚本头先使用#!符号来强制当前shell运行其后的制定shell文件来执行该脚本。 当然shell编程觉非上面说的那样简单,想要真正学习shell编程并能使用它可不那么容易。有兴趣的朋友可以参看有关资料了解shell编程。 系统服务安装过linux的朋友一定熟悉安装过程种系统会提示你选择何种服务,或安装完毕使用setup命令也可看到一个配置界面其中包含系统服务配置。系统服务包含一系列形形色色的服务,很多服务选项我们闻所未闻,或者仅仅听说过罢了。着很正常,因为服务太多太杂了,很少有人能全部搞清楚这些服务是干什么的。我们这里也不追究所有服务的详细作用,仅仅从系统运行角度介绍一下这些服务的使用方法。(想知道系统到底有那些服务,试试setup命令吧。) 系统服务程序和普通应用程序或系统命令本质是相同的,都是一些二进制文件。但其运行方式却有一些自身特点。系统服务多数情况下都处于后台运行,因此运行结果一般不再屏幕显示(往往被重新定向到/dev/null中),但是为了安全目的或分析目的,大多记录都要求保存到相关日志中;另外系统服务程序运行时多需要进行一定配置,比如ftp服务器有用户访问权限配置,工作目录配置,因此需要从配置文件取数据初始化服务程序。最后就时服务程序很多时随系统启动就开始运行,而不需要用户自己启动。 由于这些特点系统服务程序的启动或停止一般都存在相应的shell脚本文件管理,利用这些脚本可以控制服务程序的配置,启动,日志记录以及关闭服务和清理临时文件操作。这样相比用户手动操作要方便安全得多。 linux系统中的服务程序运行脚本(启动或关闭)都存放在目录/etc/rc.d/init.d下——linux系统的文件组织层次遵循fhs规范,包括脚本位置——比如我们启动/停止网络所用的network 等脚本。这些脚本都具有相同的使用方法运行:服务脚本 。如果你需要手动启动或停止某项服务,键入/etc/rc.d/init.d/服务脚本名 start|stop 即可,除此方法外也可以利用命令 service服务脚本名 start|stop,它们执行作用相同。 系统服务程序多数情况下随系统启动开始运行,系统关闭停止运行,这也正是你开机或关机时为什么能在屏幕上看到一系列的服务启动[ok] 或服务停止[stop]的原因。那么系统如何启动和关闭这些服务呢? 谈到这里很有必要说一下linux系统运行级别这个问题。所谓运行级别更通俗的讲就是指定系统的行为,每种运行级别都对应一组该级别应用程序。 我们可以使用命令init(后问会说明它) 级别来切换系统的运行级别。一般服务器系统使用级别3,如果需要图形界面使用5,对于单用户或嵌入系统使用运行级1即可。 其中级别0和6可以使用来安全停止系统,它们会将除根目录以外的文件系统卸载,并且以只读方式重新安装根文件系统,这样一来防止了破坏文件系统。 言归正传,回到系统服务程序。我们应该能猜到不同的运行级别也对应了不同的系统服务集合。比如运行级别5至少就需要比级别3多启动x服务器和xfs(字体服务器)等。你可以利用命令chkconfig –list来观察每个运行级别下的各种系统服务是否允许。显然级别5开启的服务最多,下来是级别3 。总之,功能越强要求服务越多。 下面的启动部分回告诉大家,系统根文件安装后,首先寻找init程序并运行它,该程序的任务就是从配置文件确定系统的运行级,并且根据级别启动相应的服务程序。具体的过程如下 init程序从inittab中获得系统运行级别x ,后会依次运行/etc/rc.d/rcx.d/中以大写s开头的shell脚本来启动对应的服务。 linux系统启动的标准流程 对于系统装载过程我们暂时不做介绍,我们假设内核已经被载入内存并且已经完成了异常表、中断表、调度程序、时钟、控制台、内存等初始化,最后进行进程管理器的初始化,从此内核可以开始使用真正的进程了。 初始化完成后,内核创建第一个进程(初始进程),该进程作为系统的第0号进程,在进程描述符表中由task[0]或init_task表示。该进程进而再创建了一个进程去执行init()函数进行第二阶段的初始化操作,而初始进程(init_task)本身则去执行idle循环,可见初始进程在内核初始化后唯一的作用就是去使用空闲的cpu时间。 第二阶段的初始化工作要比前一阶段轻松一点,因为现在是由一个真正进程完成 |
<< Linux 串口截止阀的分类以及特点 >>
