当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪学习Linux架构          本文介绍Linux架构方面的基础知识,供大家学习参考。     我们以下图为基础,说明Linux的架构(architecture)。(该图参考《Advanced Programming in Unix Environment》)         最内层是我们的硬.........
    ▪linux配置静态IP      静态IP配置: 代码如下: /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static HWADDR=00:26:18:0B:38:C0 ONBOOT=yes IPADDR=192.168.0.20 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 IP生效: 代码如下: /sbin/ifdown eth0.........
    ▪了解shell脚本执行方式      本文介绍Shell脚本的执行方式,供大家学习参考。 注:wd代表“脚本保存的目录”   1.fork 语法:/wd/shell.sh fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用shell.sh这个脚本.运行的时.........

[1]学习Linux架构
    来源: 互联网  发布时间: 2013-12-24

    本文介绍Linux架构方面的基础知识,供大家学习参考。

    我们以下图为基础,说明Linux的架构(architecture)。(该图参考《Advanced Programming in Unix Environment》)
   

    最内层是我们的硬件,最外层是我们常用的各种应用,比如说使用firefox浏览器,打开evolution查看邮件,运行一个计算流体模型等等。硬件是我们的物质基础,而应用是我们所要奋斗的目标,但在两者之间,还要经过一番周折。

    还记得我们在Linux启动的时候。首先会启动内核 (kernel),内核是一段计算机程序,这个程序直接管理管理硬件,包括CPU、内存空间、硬盘接口、网络接口等等。所有的计算机操作都要通过内核传递给硬件。

    为了我们方便调用内核,我们将内核的功能总结成为系统调用(system call)。系统调用看起来就像是的C语言函数,你也可以在程序中直接调用。Linux系统有两百多个这样的系统调用。系统调用给了上层程序一个清晰的接口,隐藏了内核的复杂结构。一个操作系统上的功能可以看作是系统调用的组合的效果,而且一个操作系统不可能作出超越系统调用的动作。可以说一个系统调用函数就像是汉字的一个笔画,任何一个汉字都要由基本的笔画(点、横、撇等等)构成,而且我们不能臆造出笔画。在命令行中输入$man 2 syscalls可以查看所有的系统调用。你也可以通过$man 2 read来查看系统调用read()的说明。在这两个命令中的2都表示我们要在2类(系统调用类)中查询 (具体各个类是什么可以通过$man man看到)。

    由于系统调用非常基础,所以有时使用起来很麻烦。比如说一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。Linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能,以方便我们编程。比如上面的分配内存的操作,看以定义成为一个库函数(像malloc()这样的函数)。再比如说,在读取文件的时候,系统调用要求我们设置好所需要的缓冲。我们这个时候可以使用Standard IO库中的读取函数,而这个读取函数既负责设置缓冲,又负责使用读取的系统调用函数。使用库函数对于机器来说并没有效率上的优势,但可以把程序员从细节中解救出来。库函数就像是汉字的偏旁部首,它由笔画组成,但使用偏旁部首更容易组成字,比如"铁"。当然,你也完全可以不使用库函数,而直接调用系统函数,就像“人”字一样,不用偏旁部首。

    (实际上,一个操作系统要称得上是UNIX系统,必须要拥有一些库函数,比如ISO C标准库,POSIX标准等。)

    至于shell,可以看作一种特殊的应用。实际上我们之前所说的命令行,就是shell。shell是一个命令解释器(interpreter),当我们输入“ls -l”的时候,它将此字符串解释为1) 在默认路径找到该文件(/bin/ls),2) 执行该文件,并附带参数"-l"。我们之前用>表示重新定向,用|表示管道,也是通过shell进行理解&或者|的含义,再通过系统调用指挥kernel建立具体的重定向或者管道机制。在没有图形界面之前,shell充当了用户的界面,当用户要运行某些应用的时候,要通过shell输入命令,以建立运行程序。shell可以执行符合shell语法的文本,这样的文本叫做shell脚本(script)。我们可以在图中看到,shell下通系统调用,上通各种应用,同时还有许多自身的便利可以使用,这些条件让shell脚本可以实现非常强大的功能。UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell充当了这些小功能之间的"胶水",让不同程序能够以一个清晰的接口(文本流)协同工作,从而增强各个程序的功能。(这也是我们鼓励多用shell,少用图形化界面的原因之一。)

    (shell也有很多种,最常见的是bash, 另外还有sh, csh, tcsh, ksh。它们出现的年代不同,所支持的功能也有差异。)

    一个使用bash shell的终端,如下图所示:
   
    一个shell对应一个终端 (terminal)。曾经来说,终端是一个硬件设备,用来输入并显示输出。如今,由于图形化界面的普及,终端往往就像上图一样,是一个图形化的窗口。你可以通过这个窗口输入或者输出文本。这个文本直接传递给shell进行分析解释,然后执行。

    最后,我们进入一般的应用。应用是一个程序,它可以1) 直接调用系统函数 2) 调用库函数 3) 运行shell script。这些应用可以由多种语言开发(当然,最常见的是C语言),以满足我们使用计算机的各种需要。

    我们可以看到,Linux利用kernel实现软硬件的对话。通过系统调用的这个重要的接口,Linux将上层的应用与下层的kernel完全分离开,为程序员隐藏了底层的复杂性(相应的,也提高了上层应用的可移植性)。当我们在升级kernel的时候,也可以保持系统调用的语句不变,从而让上层应用不感受到下层的改变。库函数利用系统调用创造出模块化的功能,而shell则提供了一个用户界面,并让我们可以利用shell的语法编写脚本,以整合程序。

   而所有的这些安排也为其他应用的开发提供了便利。

总结:
kernel 系统调用
库函数 shell
应用

作者:Vamei 出处:http://www.cnblogs.com/vamei


    
[2]linux配置静态IP
    来源: 互联网  发布时间: 2013-12-24

静态IP配置:

代码如下:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:26:18:0B:38:C0
ONBOOT=yes
IPADDR=192.168.0.20
NETMASK=255.255.255.0
GATEWAY=192.168.0.1

IP生效:

代码如下:
/sbin/ifdown eth0
/sbin/ifup eth0

通知网关更新信息:

代码如下:
/etc/init.d/network restart 或 service network restart

配置DNS:

代码如下:
vi /etc/resolv.conf
nameserver 202.96.134.133

解决重启生效:

代码如下:
chattr +i /etc/resolv.conf

修改为只读


    
[3]了解shell脚本执行方式
    来源: 互联网  发布时间: 2013-12-24

本文介绍Shell脚本的执行方式,供大家学习参考。
注:wd代表“脚本保存的目录”
 
1.fork
语法:/wd/shell.sh
fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用shell.sh这个脚本.运行的时候开一个子shell执行调用的脚本,子shell执行的时候, 父shell还在。子shell执行完毕后返回父shell。子shell从父shell继承环境变量.但是子shell中的环境变量不会带回父shell。

2.exec
语法: exec /wd/shell.sh
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后, 父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别。

3.source
语法:source /wd/shell.sh
与fork的区别是不新开一个子shell来执行被调用的脚本,而是在同一个shell中执行。所以被调用的脚本中声明的变量和环境变量, 都可以在主脚本中得到和使用。

4.()
语法:( 语句;语句;语句;…… )
圆括号中命令列表的命令将会运行在一个子shell中。

比如:
$ (cd ..;ls -l)
cd ..命令改变的是子Shell的PWD,而不会影响到交互式Shell。
然而命令
$ cd ..;ls -l
则有不同的效果,cd ..命令是直接在交互式Shell下执行的,改变交互式Shell的PWD,然而这种方式相当于这样执行Shell脚本:
$ source ./script.sh
或者
$ . ./script.sh

source或者.命令是Shell的内建命令,这种方式也不会创建子Shell,而是直接在交互式Shell下逐行执行脚本中的命令。

source命令、.命令
语法: . filename [arguments]
    source filename [arguments]
作用:
当在命令 行中调用的时候, 这个命令将会执行一个脚本. 当在脚本中调用的时候, source file-name 将会加载file-name文件, 或者.(点命令)一个文件将会在脚本中引入代码, 并将这些代码附加到脚本中(与C语言中的#include指令效果相同). 最终的结果就像是在使用"source"的行上插入了相应文件的内容。
在多个脚本需要引用相同的数据, 或者需要使用函数库的情况下, 这个命令非常有用。

5.{}
{语句;语句;……}不会启动子SHELL。


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3