LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 613|回复: 3

一些常识与窍门

[复制链接]
发表于 2004-8-17 14:33:49 | 显示全部楼层 |阅读模式
使用编译选项题高性能
      如果用户自己编译软件,就可以为编译程序设置选项,从而让它为特定型号的CPU产生优化的代码。举例来说,如果用户使用Athlon,就可以使用Athlon优化选项来编译软件,对于大多数程序来说,这些优化只能带来很少的性能提升,但某些程序从中获得的好处就很重要了。这些重要的程序包括Linux内核、像libc这样的通用系统库、任何经常运行的CPU敏感程序、用于工作站的X服务程序和其他核心GUI工具。
      如果用户想优化自己的程序,就需要向编译器传递适当的参数。GCC优化参数可以参考http://gcc.gnu.org/onlinedocs  ,GCC为IA-32 CPU 提供了两个优化选项:-mcpu和-march。前者可以针对特定CPU进行优化,但是优化后的代码依然可以在其它型号的CPU上运行。而后一个选项优化后的结果就不能在其他型号CPU上运行(特别是较旧的CPU)。这两个选项都以CPU的名称作为参数,比如-march=pentium4。
      使用这些参数时,可以直接使用GCC(比如gcc -march=pentium4 -pipe -fomit-frame-pointer myprog.c -o myprog),或者为程序包编辑Makefile文件。典型的Makefile文件包括各种GCC标记,如:CFLAGS=-O2 -Wall -I /usr/X11R6/include (大写字母O),或则可以使用export CFLAGS=-O3 -march=pentium4,export CXXFLAGS="${CFLAGS}" 来设置全局的参数。


驱动程序作为模块加载
      insmod   这个命令加载单个模块。用户可以用模块名称或文件名来指定模块。内核模块保存在/lib/modules/version子目录下,其中version是Linux内核的版本号。使用insmod命令的问题是它经常由于需要的支持不够而失败,也就是说模块所依靠的特性在内核及已经加载的模块里不存在。为了解决这个问题,用户必须加载丢失的模块。
      modprobe   这个命令会加载一个模块以及它依靠的所有模块。它的工作模式与insmod类似,但很少会因为支持不够而失败。
      rmmod   这个命令卸载内核模块,它于insmod是相反的。如果添加-r选项,这个命令就会卸载一组模块,这是它的作用就是与modprobe相反的。


自动加载驱动程序
      Linux包含一个名为kernel module loader的配置选件,如果这个选项被编译到了内核,内核就会根据需要来加载模块。
      /etc/modules.conf文件是自动处理内核模块的主控制文件。insmod和modprobe也会使用这个文件。modules.conf是一个文本文件,提供了特定设备类型需要加载的模块、向这些模块传递的选项等信息。
      Debian在使用这个方法稍微有些变化:它使用/etc/modutils目录树下的一系列文件夹包含每个设备(大多数设备定义在/etc/modutils/arch里的文件中)。在这个目录里编辑了某个文件或是为新设备创建了新文件之后,可以使用update-modules来更新模块信息,创建一个新的/etc/modules.conf文件。Gentoo中使用/etc/modules.d目录来处理相同的工作,然后使用modules-update来更新modules.conf文件。
      modules.conf文件支持相当多的特性,其中包括:
      alias   指定设备类型映射到指定的驱动程序
      options   用来向以模块方式加载的驱动程序传递参数。在options关键字之后是模块名,其后是传递给模块的参数。


优化磁盘性能
      hdparm工具主要用来显示和设置各种影响磁盘性能ATA参数,例如可以使用hdparm -d1来打开磁盘的DMA传输模式,使用hdparm -c1打开32位传输模式,Debian可以使用apt-get来安装并配置到默认启动列表中,然后在/etc/default/hdparm文件中配置参数,这样就会使系统在启动是就使用这些参数;Gentoo可以使用嗯emerge来安装,然后使用rc-update脚本配置为自动启动,Gentoo中hdparm的配置文件在/etc/conf.d/hdparm文件中。


优化磁盘分区
      硬盘将数据存储在圆形的盘片上,每个盘片上都有很多“轨道“,所有磁头以同步方式移动,从而同时访问同柱面上的所有轨道,与内侧轨道相比,外侧轨道具有更多的扇区,从而充分利用外侧的轨道信息。
      可以把分区看作硬盘上的同心环,为了访问数据,磁头必须移动到适当的柱面,这种移动是需要时间的,从而影响了磁盘的性能,这个过程被成为”寻道“
      一般来说,磁盘中间的寻道时间是最短的,应此应该将经常访问的数据放置到磁盘中心的位置。这样的分区包括Linux根分区/、/var、/tmp、/usr和/home,而不常使用的二进制数据、/boot可以放到其他位置。为了让交换分区获得更好的效果,因此应该将交换分区放到尽可能接近磁盘中心的位置。将以大数据块进行读写的大数据文件方知道外侧柱面能够获得更好的磁盘性能。如果磁盘的访问模式是经常在两个分区之间进行的移动,那么这两个分区应该挨在一起。
 楼主| 发表于 2004-8-17 14:35:17 | 显示全部楼层
BASH
      自动补全:可以输入命令或文件名的前几个字母,然后按TAB键,外壳就会在路径里查找所有可能匹配的命令或文件名,如果只有一个匹配,就会自动补全剩余部分,如果匹配的内容多余一个,外壳会产生蜂鸣并显示所有匹配的名称,通过修改/etc/inputrc文件,可以设置外壳是显示所有匹配的文件还是只产生蜂鸣:set show-all-if-ambiguous on
      后台运行:在BASH下也可以运行多个程序,只需要使用“&“操作符,在命令的后面添加这个字符,就会使这个程序在后台被加载,这时就可以继续使用这个终端。当一个程序正在运行时,可以用Ctrl+Z键让它进入后台,这时程序会挂起,如果这时输入bg命令就会让程序在后台运行,就像使用&一样,而输入fg会让程序返回前台。


      重定向:文本模式下使用三个输入/输出流:stdin,stdout,stderr。Linux能够轻松的重定向这些输入和输出流,完成这种工作需要使用重定向符
          <               将stdin重定向为指定的文件
          >               将stdout重定向为指定的文件,覆盖现有文件的内容
          >>            将stdout重定向为指定的文件,将结果添加到现有文件内容之后
          2>             将stderr重定向为指定的文件,覆盖现有的内容
          2>>           将stderr重定向为指定的文件,将结果添加到现有文件之后
          &>             将stdout和stderr都重定向到指定的文件,覆盖现有的内容
      每个操作符都以文件名为参数。可以联合使用多个操作符。重定向可以用来迅速处理垃圾数据或丢弃数据。举例来说,如果需要空输入,可以将输入定向到/dev/zero,这样就可以产生很多的二进制0,为了丢弃数据,可以将输出重定向到/dev/null,这样就会使输出消失。


      管道:用来连接程序,第一个程序的标准输出将会被重定向到第二个程序的标准输入,这种连接可以在多个程序之间进行。它的操作符是“|“,例如:$ ps ax | grep gdm ,ps aux的输出被输入到grep。


      自定义外壳:系统配置文件通常都保存在/etc,用户配置文件通常保存在用户的主目录里。系统配置文件和用户配置文件都具有两个类型:登录配置文件和非登录配置文件。登录配置文件只应用于由登录进程加载的外壳,非登录配置文件应用于不是登录外壳的外壳上。
       全局配置文件:/etc/profile和/etc/profile.d里的文件        /etc/bashrc或/etc/bash.bashrc
       用户配置文件:~/.profile                                                ~/.bashrc


      使用别名:一种常用的方法是使用alias,例如:alias cp='cp -i' 这告诉bash使用cp -i代替用户输入的cp命令。通常都放置在/etc/bashrc、~/.bashrc或类似的位置。这使得用户可以在任何时候使用这些别名。


      设置环境变量:环境变量是Linux为运行程序提供的一些数据。如果需要,可以在bash启动脚本中使用export命令:export CFLAGS=-march=pentium4 -O3,在设置环境变量时可以引用现有的环境变量,只需要在环境变量前加一个“$“符号。按照惯例,环境变量都是大写的


      更改提示符:设置PS1变量可以改变外壳的提示符,例如使用:$ PS1="$ " 会使用单纯的$作为提示符。设置提示符不需要使用export关键字,因为这是在外壳内部使用的。关于更多的外壳提示常用变量:
       \d       以“星期 月 日”的格式显示日期
       \h       不包含域名的计算机主机名
       \H       包含域名的计算机主机名
       \s       外壳的名称
       \t       24小时格式的显示
       \T       12小时格式的显示
       \@       具有AM/PM标记的12小时格式时间
       \u       当前用户的用户名
       \w       当前工作目录
       \W       当前工作目录的最后目录
       \$        对大多数用户是$,对root是#
 楼主| 发表于 2004-8-17 14:39:12 | 显示全部楼层
留个位置
 楼主| 发表于 2004-8-17 15:43:14 | 显示全部楼层
占位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表