转自51cto(http://smailes.blog.51cto.com/rss.php?uid=28248)



2.经BOIS的控制,将MBRBoot Record入内存中。里就要说说LinuxBoot程序了,LinuxBoot程序有GRUBLILO,而CentOSBoot程序是GRUB。
3.通Boot程序,访问中的Linux内核程序。
4.将内核程序入内存中。
5.内核程序用完成后,通内核访问中将要用到的其他文件
内核第一个执行的文件是/sbin/init,而这个文件的设置和定义文件是/etc/inittab这个文件,也就是说/sbin/init按照/etc/inittab的定义来执行下一步的启动,那我们就要看看/etc/inittab文件是怎么回事儿了。
 
[root@linux ~]# cat -n /etc/inittab
     1  #
     2  # inittab       This file describes how the INIT process should set up
     3  #               the system in a certain run-level.
     4  #
     5  # Author:       Miquel van Smoorenburg, <[email]miquels@drinkel.nl.mugnet.org[/email]>
     6  #               Modified for RHS Linux by Marc Ewing and Donnie Barnes
     7  #
     8  
     9  # Default runlevel. The runlevels used by RHS are:
    10  #   0 - halt (Do NOT set initdefault to this)
    11  #   1 - Single user mode
    12  #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    13  #   3 - Full multiuser mode
    14  #   4 - unused
    15  #   5 - X11
    16  #   6 - reboot (Do NOT set initdefault to this)
    17  #
    18  id:3:initdefault:    ← 默认的启动模式
    19  
    20  # System initialization.
    21  si::sysinit:/etc/rc.d/rc.sysinit    ← boot时的处理
    22  
    23  l0:0:wait:/etc/rc.d/rc 0     ←  23-29行,各启动模式的处理,分别启动/etc/rc.d/rcX.d脚本
    24  l1:1:wait:/etc/rc.d/rc 1
    25  l2:2:wait:/etc/rc.d/rc 2
    26  l3:3:wait:/etc/rc.d/rc 3
    27  l4:4:wait:/etc/rc.d/rc 4
    28  l5:5:wait:/etc/rc.d/rc 5
    29  l6:6:wait:/etc/rc.d/rc 6
    30  
    31  # Trap CTRL-ALT-DELETE
    32  ca::ctrlaltdel:/sbin/shutdown -t3 -r now    ← Ctrl+Alt+Del被激活时的处理
    33  
    34  # When our UPS tells us power has failed, assume we have a few minutes
    35  # of power left.  Schedule a shutdown for 2 minutes from now.
    36  # This does, of course, assume you have powerd installed and your
    37  # UPS connected and working correctly.  
    38  pf::powerfail:/sbin/shutdown -f -h +2 /"Power Failure; System Shutting Down/"   ← 电源off时的处理
    39  
    40  # If power was restored before the shutdown kicked in, cancel it.
    41  pr:12345:powerokwait:/sbin/shutdown -c /"Power Restored; Shutdown Cancelled/"    ← 电源on时的处理
    42  
    43  
    44  # Run gettys in standard runlevels    ←  45-50行是6个虚拟终端
    45  1:2345:respawn:/sbin/mingetty tty1
    46  2:2345:respawn:/sbin/mingetty tty2
    47  3:2345:respawn:/sbin/mingetty tty3
    48  4:2345:respawn:/sbin/mingetty tty4
    49  5:2345:respawn:/sbin/mingetty tty5
    50  6:2345:respawn:/sbin/mingetty tty6
    51  
    52  # Run xdm in runlevel 5
    53  x:5:respawn:/etc/X11/prefdm -nodaemon    ← 启动模式5的时候,启动/etc/X11窗口系统
[root@linux ~]#
 
在以上的这个文件中,#开头的文件是注释文件,可以忽略不看,但是能够很好的帮我们了解文件。
这个文件中的定义形势如下:   
通过下表的说明去看这个文件,就清晰明了的多了!
 
 
<id>:<runlevel>:<action>:<process>
 
 
 
 
 id    不重复的任意数字                                                                     
runlevel 0~6的启动级别(模式)
action
initdefault 定义默认时的启东级别(模式)
sysinit 引导(boot)中执行
wait 引导中执行一次,直到init进程为止
respawn 进程停止的情况下,再启动
powerfall 当接收到电源异常信号时,执行
ctrlaltdel 当接收到Ctrl+Alt+Del指令时,执行
process 定义被执行的命令
 
 
 
 
通过上面的说明,我想你应该可以明白/etc/inittab中的定义是怎么一回事儿了。
下面我们重点看18,21,26行(其他的自己研究)。
通过上表我们可以知道:

  • 18行的定义是默认的启动级别是“3“文本模式。
  • 21行的定义是启动的过程中执行/etc/rc.d/rc.sysinit文件(启动级别是空,也就是说无论什么级别都执行这个文件),这个文件很长有差不多1000行的内容,主要功能是启动网络,读取文件系统,使swap有效化和调入模块等动作。
  • 26行的定义和上面的18行的定义是对应的,也就是说18行定义的启动级别是/"X/",那么就执行文件23到29行定义中的/"X/"。
       这里18行定义的是启动级别3,就执行26行中启动级别3的定义,执行/etc/rc.d/rc脚本文件(控制文件),并将18行定义的启动级别以参数的形势交给/etc/rc.d/rc文件进行处理。
       这里我们看到 “l3:3:wait:/etc/rc.d/rc 3”是把启动级别3交给文件rc处理,那我们有必要看看rc文件都定义了什么。
/etc/rc.d/rc文件内容如下:
 
 
 
 
[root@linux ~]# cat -n /etc/rc.d/rc
     1  #! /bin/bash
     2  #
     3  # rc            This file is responsible for starting/stopping
     4  #               services when the runlevel changes.            
     5  #
     6  # Original Author:      
     7  #               Miquel van Smoorenburg, <[email]miquels@drinkel.nl.mugnet.org[/email]>
     8  #
     9  
    10  # check a file to be a correct runlevel script
    11  check_runlevel ()
    12  {
    13          # Check if the file exists at all.
    14          [ -x /"$1/" ] || return 1
    15  
    16          # Reject backup files and files generated by rpm.
    17          case /"$1/" in
    18                  *.rpmsave|*.rpmorig|*.rpmnew|*~|*.orig)
    19                          return 1
    20                          ;;
    21          esac
    22          return 0
    23  }
    24  
    25  # Now find out what the current and what the previous runlevel are.
    26  argv1=/"$1/"
    27  set `/sbin/runlevel`
    28  runlevel=$2
    29  previous=$1
    30  export runlevel previous
    31  
    32  . /etc/init.d/functions
    33  
    34  # See if we want to be in user confirmation mode
    35  if [ /"$previous/" = /"N/" ]; then
    36          if [ -f /var/run/confirm ]; then
    37                  echo $/"Entering interactive startup/"
    38          else
    39                  echo $/"Entering non-interactive startup/"
    40          fi
    41  fi
    42  
    43  # Get first argument. Set new runlevel to this argument.
    44  [ -n /"$argv1/" ] && runlevel=/"$argv1/"
    45  
    46  # Is there an rc directory for this new runlevel?
    47  [ -d /etc/rc$runlevel.d ] || exit 0
    48  
    49  # First, run the KILL scripts.
    50  for i in /etc/rc$runlevel.d/K* ; do
    51          check_runlevel /"$i/" || continue
    52  
    53          # Check if the subsystem is already up.
    54          subsys=${i#/etc/rc$runlevel.d/K??}
    55          [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] //
    56                  || continue
    57  
    58          # Bring the subsystem down.
    59          if egrep -q /"(killproc |action )/" $i ; then
    60                  $i stop
    61          else
    62                  action $/"Stopping $subsys: /" $i stop
    63          fi
    64  done
    65  
    66  # Now run the START scripts.
    67  for i in /etc/rc$runlevel.d/S* ; do
    68          check_runlevel /"$i/" || continue
    69  
    70          # Check if the subsystem is already up.
    71          subsys=${i#/etc/rc$runlevel.d/S??}
    72          [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] //
    73                  && continue
    74                     
    75          # If we/'re in confirmation mode, get user confirmation
    76          if [ -f /var/run/confirm ]; then
    77                  confirm $subsys
    78                  test $? = 1 && continue
    79          fi
    80  
    81          update_boot_stage /"$subsys/"
    82          # Bring the subsystem up.
    83          if [ /"$subsys/" = /"halt/" -o /"$subsys/" = /"reboot/" ]; then
    84                  export LC_ALL=C
    85                  exec $i start
    86          fi
    87          if egrep -q /"(daemon |action |success |failure )/" $i 2>/dev/null //
    88                          || [ /"$subsys/" = /"single/" -o /"$subsys/" = /"local/" ]; then
    89                  $i start
    90          else
    91                  action $/"Starting $subsys: /" $i start
    92          fi
    93  done
    94  rm -f /var/run/confirm
    95  if [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --ping ; then
    96    /usr/bin/rhgb-client --quit
    97  fi
[root@linux ~]#
 
 
 
 
在这个文件中我们看看如下的几行:

  • 50行以K开头的脚本文件
  • 60行执行stop
  • 67行以S开头的脚本文件
  • 91行执行start
在这个文件中,每个程序块的部分都有注释(#开头的行),如果有兴趣的话可以自行研究一下。
似乎不是那么太难,就是check→do,确认后执行,判断后执行的样子。


rc.d目录下面的文件:
 
 
[root@linux ~]# ls -l /etc/rc.d
总用量 112
drwxr-xr-x  2 root root  4096 12月 28 12:45 init.d
-rwxr-xr-x  1 root root  2352 2004-03-17  rc
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc0.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc1.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc2.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc3.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc4.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc5.d
drwxr-xr-x  2 root root  4096 12月 28 12:45 rc6.d
-rwxr-xr-x  1 root root   220 2003-06-24  rc.local
-rwxr-xr-x  1 root root 27584  8月 13 17:10 rc.sysinit
[root@linux ~]#
 
 
 
 
我们看到了,在这个目录下面,有刚才提到的rc文件,还有另外的一些文件,我们来简单说明一下。
1. init.d
  这个不是文件,是一个目录,这个目录下面存放着各各服务的控制脚本,这下面的文件和你安装了些什么软件包有关系。如果 你有兴趣你可以察看他们的脚本文件,接下来的说明中我们还会说到他,因为/etc/rc.d/rcX.d下的文件和这个init.d下面的文件是通过软连接相连的。

2. rc
  这个文件我们上面提到过,跳过了。

3. rc.loca
  这个文件也许会用到,如果你安装了一些软件或服务,并非系统标准的服务,比如手动的安装了Httpd,这样你用chkconfig命令是无法操作httpd的,开启服务器的时候也并不默认的启动这个httpd服务,这个时候你就可以将启动命令写到这个文件中,让开机启动服务完毕之后,最后启动这个httpd服务,注意是最后。这里说的httpd只是一个例子,将来也许会有很多的自己安装的服务会用到这个文件,知道以下,要用到的时候自然就明白。

4. rc.sysini
  我们上面提到过这个文件,这个文件是在boot的时候就被执行的脚本,它的任务是初始化系统的网络,设定hostname,欢迎信息表示,时钟设置,挂载文件系统等。有兴趣可以读它的脚本文件。

5. rcX.d
  这个rcX.d里面的X代表了0~6的数字(6种启动模式)。我们看到了它们都是目录,下面放着的都是我们上面说的/etc/rc.d/init.d下面文件的link。这里我们已rc3.d为例子,简单说明一下。
  在察看这个文件的时候注意2点:
####第一:ls -l 察看它们的详细信息,看看他们的link指向
####第二:ls -l 察看它们的文件名的头字母,形式应该是这样的[S或K <数字> <名称>]的形势。S代表启动,K代表停止。
                不要迷糊,/etc/rc.d/rc就定义了这个文件名称头文字的“S”和“K”。也就是开机的时候,已S开头的脚本文件别执行,这个服务就被开机运行;
                那么已K开头的文件不被执行,这个文件所控制的服务也不被执行,这个文件控制的服务也不被开机运行。
                这样看来,我们在给服务器左右化的时候,就可以直接的将相应的启动模式(rc0.d~rc6.d)下的相应服务控制脚本的文件名改掉(S改成K,K改成S),
                就能够简单的优化开机时系统将运行哪儿些个服务。
                如果通过命令来控制的话,那命令是chkconfig命令.......编辑中......
  如果你察看过rc0.d~rc6.d的目录下的文件名称,你会发现,他们的文件
  


/etc/rc.d/rc3.d下都有什么(一部分而已,你可以在自己的系统下面察看全部)
 
 
 
 
[root@linux ~]# ls -l /etc/rc.d/rc3.d
合計 224
lrwxrwxrwx  1 root root 21  1月  5 05:24 K01tog-pegasus -> ../init.d/tog-pegasus
lrwxrwxrwx  1 root root 13  1月  5 05:12 K01yum -> ../init.d/yum
lrwxrwxrwx  1 root root 24  1月  5 05:12 K02NetworkManager -> ../init.d/NetworkManager
lrwxrwxrwx  1 root root 15  1月  5 05:12 K03rhnsd -> ../init.d/rhnsd
lrwxrwxrwx  1 root root 19  1月  5 05:08 K05saslauthd -> ../init.d/saslauthd
lrwxrwxrwx  1 root root 16  1月  5 05:11 K10psacct -> ../init.d/psacct
lrwxrwxrwx  1 root root 17  1月  5 05:25 K12FreeWnn -> ../init.d/FreeWnn
lrwxrwxrwx  1 root root 13  1月  5 05:12 K20nfs -> ../init.d/nfs
lrwxrwxrwx  1 root root 14  1月  5 05:11 K24irda -> ../init.d/irda
lrwxrwxrwx  1 root root 16  1月  5 05:10 K50ibmasm -> ../init.d/ibmasm
lrwxrwxrwx  1 root root 17  1月  5 05:12 K50netdump -> ../init.d/netdump
lrwxrwxrwx  1 root root 16  1月  5 05:26 K73ypbind -> ../init.d/ypbind
[root@linux ~]#
 
 
 
 

LINUX服务介绍(清晰版)

服务列表(按字母顺序排列)
服务名
必需(是/否)
用途描述
注解
acon

语言支持
特别支持左手书写语言:阿拉伯语,波斯语和希伯莱语
acpi

电源管理
手提电脑电池电扇监控器
acpid

监听精灵进程
此进程监听并分配内核中的acpi事件
adsl

内部ADSL开关控制
只有你的计算机内部有互联网连接adsl开关时才用到此服务
alsa

高级Linux声音构件
这个单独的声音系统实际包含在内核中
anacron

周期命令调度程序
一个任务调度工具
apmd

电源管理
手提电脑电源管理
apmiser

电源管理
另一手提电脑电池延长器
arpwatch

以太网IP地址配对监控器
用主机名监控并记录远程IP地址
atd

周期命令调度程序
一个任务调度工具
autofs

自动安装服务
几个命令服务文件系统自动安装之一.一些此类服务专门针对发行配套软件,如果你使用的发行配套软件拥有自己的自动安装系统,不要用这一个.
bluetooth

蓝牙技术核心
用于所有蓝牙服务
bootparamd

导入服务
以前导入无盘客户端/瘦客户端的方法.最新型的方法为零配置系统(zeroconf system).
canna

日语转换引擎

capi4linux

基本CAPI子系统
cpqarrayd

硬件服务
康柏独立冗余磁盘阵列(Raid Array)监控器
cpufreq

硬件服务
控查并配置CPU频率精灵程序模块
cpufreqd

硬件服务
此服务自动衡量CPU频率来减少过热情况.在超频时有用.
crond

周期命令调度程序
一个任务调度工具
Cups-lpd

使旧式Lunux或商业Unix系统连接到打印主机上.
只有在允许旧式系统访问打印机时才有用
cups

公共Unix打印系统
进行打印的必要功能
cvs

并发版本系统
用于管理多用户文档
devfsd

系统维护
此服务只清除动态桌面目录,除非你的系统经常崩溃,否则不需要此服务.
dhcpd

DHCP服务器
你的网络足够大,使用静态IP很麻烦吗?此项服务对你的网络进行DHCP IP配置,方便网络应用.
diald

拨号网络智能自动拨号器
此服务一经请求,即连接上网络.你一旦输入电子邮件,点击发送,它就自动连接,发送电邮并断开.
dkms

DKMS自安装导入
发行配套软件专用工具,用于OEM类型安装.它允许管理员密码的最初导入设置以及常规应用的用户名密码,系统的最后配置.
dm

显示管理器
X服务器的核心,使用图形用户界面(GUI)时必需.
dnbc

数字网络绑定Chrooter
这是一个简单的bash脚本,它将一个BIND服务器放入一个chroot牢笼中.安装BIND,发布脚本并重启.
Drakxtools-http

小型服务管理服务器
远程系统管理的发行配套软件专用工具.
dund

蓝牙拨号网络

fam

文件系统变更监控器
文件系统所有改变的记录器
finger

数据远程访问
此服务允许你远程访问用户登录日期,最后登录日期与时间.用于不在办公室时监控雇员的工作习惯,主要的安全违反,因为你正有效地在线发布公司机密数据.
freshclam

ClamAV更新器
用于自动更新ClamAV
gpm

鼠标
鼠标驱动器控制台模式
haldaemon

硬件监控系统
此服务监控硬件改变,为你改变新的或更改过的硬件.
harddrake

硬件服务
发行配套软件专用硬件探测与配置
heartbeat

高可用性服务
此服务旨在增加重要服务与服务器的优先级
hidd

蓝牙H.I.D.服务器

hplip

惠普Linux打印与成像
旧版惠普整成产品供应驱动器
hpoj

Pital?init,惠普办公喷墨打印机驱动器
惠普办公喷墨打印机旧式驱动器.新式驱动器包含在打印机的打印驱动器内.
httpd

Apache网络服务器
在系统上应用此服务有两个原因,一是要用它作为网络服务器,二是用它作为网址开发器.如果没有此二项,则不必安装Apache.
hylafax?server

企业传真机?调制调解器服务
此服务仅用于1类与2类传真机.如果你想用hylafax通过调制调解器发送传真,必须运行此服务.它并不是唯一有效的传真工具.
ibod

按需ISDN MPPP带宽
与拨号网络一同使用,按需连接到网络.
identd

TCP连接鉴定

imaps

安全IMAP服务器
imaps

IMAP服务器
iplog

用主机名或远程主机记录TCP,UDP,ICMP.
有用的网络监控工具
ipop2

POP2邮件服务器

ipop3

POP3邮件服务器
ipsec

加密与验证通信
KLIPS为内核一半,PLUTO为用户空间一半.在远程访问情况下十分有用.
iptables

基于Packet过滤防火墙内核
所有优秀的Linux防火墙都基于此项服务
ipvsadmin

Linux核心IP虚拟服务器
最早的Linux网络系统之一,已不常用.
irda

红外线设备界面
以前的无线设备支持
keytable

键盘映射
此服务明确告诉系统你正在使用哪种键盘
kheader

导入服务
此服务自动重建内核头导入
lads

登录异常探测系统
跟踪登录企图并警告入侵企图的工具
laptop mode

电源管理
减少电力耗费,延长手提电脑电池寿命的工具
leafnode

X? INETD NNTP服务

lisa

局域网信息服务器
lmsensors

硬件健康监控器
此服务要求系统主板支持并有合适的监控系统,如CPU温度与电压监控器.
mailman

GUN邮件列表管理器
常用的邮件列表工具,带Python编写的管理网络界面.它允许列表成员发送邮件并回复邮件到同一个地址进行交流.它还可用于向那些发送请求的用户传送新闻时讯/产品更新.
mandi

交互式防火墙
允许暂时无线访问系统的专用服务,将为当前任务开放iptables防火墙,仅用于无线设备访问.在用户许可情况下才可使用,不能自动使用.
mdadm

软阵列监控服务
这也是一个用于上述软件阵列栏的管理工具
mdnsresponder

零配置DNS配置工具

messagebus

事件监控服务
此服务在必要时向所有用户发送广播信息,如服务器将要重启.
mon

系统监控精灵进程
许多系统服务要求此服务来运行
mysqld

MySQL服务器
如果你不需要这个数据库,不要打开它.
named

绑定(BIND)服务器
这就是声名狼藉的名称服务器
netplugd

网卡精灵进程
此服务监控网络界面,根据信号关闭或启动它,主要用于不经常连接的手提电脑.
network

网络
此服务打开网卡,或为调制调解器供电.
nfs

网络文件共享
此服务使用户访问NFS共享文件,为NFS系统客户机所必需.
nfsfs

网络文件共享服务器
只有在网络服务器上才被激活
nfslock

NFS文件锁定
只有在使用NFS网络/文件共享功能时,此服务才被激活.
nifd

Howl 客户端
此服务为零配置网络/系统提供ipv4链接本地服务
nscd

密码与群查找服务
此服务用于减慢N.I.S/Y.P.nist,ldap和hesiod之类的服务.专门为这些服务提供更长的中断时间.
ntpd

NTP服务器的第4版

numlock

数字锁定键灯光控制
此服务保持数字锁定键的激活状态,打开键盘上的数字键区.
Oki4daemon

OKI4和兼容win打印机的兼容性精灵进程
只有在你有这些打印机时才可用
pand

蓝牙个人区域网络
用于基于网络的家庭区域蓝牙技术
partmon

分区监控
此服务跟踪安装分区上的剩余空间.大多数文件系统浏览器使用它来计算指定分区上的剩余空间.
pcmcia

个人电脑内存卡国际协会

pg_autovacum

PostgreSQL维护
此服务自动运行PostgreSQL所需的空间(vacuum)来减少磁盘空间,从数据库中拖动临时表格,并删除PostgreSQL建立的临时文件.
pop3s

安全POP3服务
POP3 SSL服务器
portmap

RPC支持
支持那些应用rpc的罕有的应用软件
postgresql

Postgresql数据库引擎
只有在运行或开发Postgresql数据库驱动应用软件时才用到此服务
postfix

电子邮件服务器
与sendmail兼容的电子邮件服务器,比sendmail更新,也变得比sendmail更通用.
pptp

PPP断电服务
PPP频道断电服务,UPS打开时使用,以避免电源返回系统时出现文件锁定问题.
prelude

IDS
入侵探测系统
psacct

进程计算
活动进程追踪器,实际上是资源的浪费.
rawdevices

分配raw设备,阻止其使用
DVDS,oracle DBMS等需要此服务
rsync

远程同步
使指定目录树上的文件远程同步的服务器,常用于维护镜象地址,也在备份时用于保持公司文件为最新状态.
saned

网络扫描仪
从网络上的任何工作站提供扫描仪访问
shorwall

防火墙
一个非常优秀的IPTables防火墙
smartd

自我监控服务
用于智能设备的OS访问,此服务允许Linux告诉你是否设备将要变坏,但这要依靠设备的精确智能特性.
smb

Samba网络服务
此服务提供samba服务,实现Windows网络兼容性.
snmpd

简单的网络管理协议
用于小型(家庭办公室)网络
sound

声音系统
此为Linux声音系统的核心,适用于桌面系统,在服务器上则是资源的浪费.
squid

高速缓存工具
用于高速缓存网络页面及DNS登录
ssh?xinetd

X?inetd OpenSSH服务器
OpenSSH的按需运行版本
sshd

OpenSSH服务器
如果你需要SSH访问你的系统时才开启此服务,将不会使用x?inetd版本.
subversion

并发版本系统
CVS的新型替代品
swat

Samba网络管理工具
基于Samba管理的网络
syslog

系统登录
一项必要的服务,控制整个系统上的所有登录.
tmdns

多点传送DNS响应器
用于零配置环境
ultrabayed

ThinkPad工具
此服务为你的IBM ThindPad探测ultrabay,并在适当情况下启动/关闭IDE接口.
upsd

NUT精灵进程及驱动器
一个不间断地电源监控及报告工具,此服务向中心地址报告,产生关于UPS统计的数据库.
upsmon

UPS监控工具
此服务监控UPS的状况,在其运行低下时关系系统.
vncserver

虚拟网络计算服务器
在项目中应用VNC时非常有用
Webmin

远程管理工具
发行配套软件Agnostic远程管理工具.在机器不能总是直接访问,如网络服务器集群时有用.
winbind

Samba名称服务器
Samba网络运行所必需.此服务将用户与群数据从windows网络映射到Linux工作站中.
wine

Wine并非竞争者
此服务使MS Windows可在Linux上执行,WINE是商业产品Crossover Office的限制版本.
wlan

控制精灵进程
由于服务通常由init进程控制,此控制服务不常用.
x?inetd

监控并控制其它服务器的服务器
这是一项必需的服务,它实际上减少了服务器上CPU的负载.如果你需要SSH,ftp等但并不总是需要,x?inetd版本将在请求,甚至是远程需求时启动它们.此服务让它们生效,但如果它们一天/周只使用几次的话,又释放了时钟周期.
xfs

X字体服务器
你任何时间需要使用图形用户界面(GUI),就需要此服务.
ypbind

SUN的YP服务器名称服务器
此服务用于基于GLIBC的NIS/YP网络服务
 
 

CentOS 5 管理 关闭SELinux

smailes 转到全文
使用文本编辑工具打开 /etc/selinux/config
把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:SELINUX=disabled
保存,关闭。
重启系统。

linux 关于服务的自动启动

smailes 转到全文
linux中的每个服务都有相应的运行脚本,可用于设置启动,停止,重启和查询服务等信息;所有的服务脚本
都写在/"/etc/rc.d/init.d/"中,脚本名称和服务器名称相对应,大都有说明,大家可自己查看,
各运行级别的脚本目录所在位置为:/etc/rc.d当中可以看到以0~6加在RC的后面,构成了相应的运行级别服
务脚本目录.可进入相应级别的脚本目录,查看其有什么设置.比如,我们进入级别3有脚本目录:
#ls /etc/rc.d/rc3.d/
K05saslauthd  K68ipsec K96pcmcia S17keytable  S55sshd
这里只列出一行进行分析,可以看到每个服务目录都有一些明显的特点,前面有一个/"K/"代表/"KILL/"是指这
个服务在这个级别被停止.若前面有一个/"s/"表示/"Start/",表示这个服务在这个运行级别被启动.在K或S的
后面有一些数字,这是服务的序号,当启动服务时,按序号从小到大启动,当停止服务时,按序号从大到小停
止.
使用SHELL命令来停止或者运行服务---service
#service xinetd stop //停止运行xinetd服务
Stopping xinetd:
#service xinetd start //启动xinetd服务
技巧:有的时候我们利用LINUX进行上网时,不能联网,其实有些时候是由于LINUX防火墙的原因,我们可能关
闭防火墙,使用这个命令:#service iptables stop
服务启动状态的配置命令:
1. ntsysv
2. chkconfig,这个命令功能强大,看看吧:
  查看服务启动状态:#CHKCONFIG --LIST [SERVICES]
  E.G.:
  #chkconfig --list  //查看系统所有服务的启动状态.
  #chkconfig --list syslog //查看syslog服务的启动状态.
  设置独立服务的启动状态:#chkconfig --level <runlevel list> <serivces> <on/off/reset>
  e.g.:
  #chkconfig --level 123 syslog off //表示syslog这个服务在1,2,3停止运行.

理解 Linux 配置文件

smailes 转到全文
2001 年 12 月 01 日
本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配额、管理电子邮件和新闻组,以及配置内核参数。本文还根据配置文件的使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。
每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。
一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择的格式很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。
内核本身也可以看成是一个“程序”。为什么内核需要配置文件?内核需要了解系统中用户和组的列表,进而管理文件权限(即根据权限判定特定用户(UNIX_USERS)是否可以打开某个文件)。注意,这些文件不是明确地由程序读取的,而是由系统库所提供的一个函数读取,并被内核使用。例如,程序需要某个用户的(加密过的)密码时不应该打开 /etc/passwd 文件。相反,程序应该调用系统库的 getpw() 函数。这种函数也被称为系统调用。打开 /etc/passwd 文件和之后查找那个被请求的用户的密码都是由内核(通过系统库)决定的。
除非另行指定,Red Hat Linux 系统中大多数配置文件都在 /etc 目录中。配置文件可以大致分为下面几类:

/"/"
/"/"
/"/"
/"/"
回页首


/etc/host.conf 告诉网络域名服务器如何查找主机名。(通常是 /etc/hosts,然后就是名称服务器;可通过 netconf 对其进行更改)
/etc/hosts 包含(本地网络中)已知主机的一个列表。如果系统的 IP 不是动态生成,就可以使用它。对于简单的主机名解析(点分表示法),在请求 DNS 或 NIS 网络名称服务器之前,/etc/hosts.conf 通常会告诉解析程序先查看这里。
/etc/hosts.allow 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。
/etc/hosts.deny 请参阅 hosts_access 的联机帮助页。至少由 tcpd 读取。

/"/"
/"/"
/"/"
/"/"
回页首


/etc/issue & /etc/issue.net 这些文件由 mingetty(和类似的程序)读取,用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串。它们包括几行声明 Red Hat 版本号、名称和内核 ID 的信息。它们由 rc.local 使用。
/etc/redhat-release 包括一行声明 Red Hat 版本号和名称的信息。由 rc.local 使用。
/etc/rc.d/rc 通常在所有运行级别运行,级别作为参数传送。例如,要以图形(Graphics)模式(X-Server)引导机器,请在命令行运行下面的命令: init 5 。运行级别 5 表示以图形模式引导系统。
/etc/rc.d/rc.local 非正式的。可以从 rc、rc.sysinit 或 /etc/inittab 调用。
/etc/rc.d/rc.sysinit 通常是所有运行级别的第一个脚本。
/etc/rc.d/rc/rcX.d 从 rc 运行的脚本( X 表示 1 到 5 之间的任意数字)。这些目录是特定“运行级别”的目录。当系统启动时,它会识别要启动的运行级别,然后调用该运行级别的特定目录中存在的所有启动脚本。例如,系统启动时通常会在引导消息之后显示“entering run-level 3”的消息;这意味着 /etc/rc.d/rc3.d/ 目录中的所有初始化脚本都将被调用。

/"/"
/"/"
/"/"
/"/"
回页首


内核提供了一个接口,用来显示一些它的数据结构,这些数据结构对于决定诸如使用的中断、初始化的设备和内存统计信息之类的系统参数可能很有用。这个接口是作为一个独立但虚拟的文件系统提供的,称为 /proc 文件系统。很多系统实用程序都使用这个文件系统中存在的值来显示系统统计信息。例如,/proc/modules 文件列举系统中当前加载的模块。lsmod 命令读取此信息,然后将其以人们可以看懂的格式显示出来。下面表格中指定的 mtab 文件以同样的方式读取包含当前安装的文件系统的 /proc/mount 文件。
/etc/mtab 这将随着 /proc/mount 文件的改变而不断改变。换句话说,文件系统被安装和卸载时,改变会立即反映到此文件中。
/etc/fstab 列举计算机当前“可以安装”的文件系统。这非常重要,因为计算机引导时将运行 mount -a 命令,该命令负责安装 fstab 的倒数第二列中带有“1”标记的每一个文件系统。
/etc/mtools.conf DOS 类型的文件系统上所有操作(创建目录、复制、格式化等等)的配置。

/"/"
/"/"
/"/"
/"/"
回页首


/etc/group 包含有效的组名称和指定组中包括的用户。单一用户如果执行多个任务,可以存在于多个组中。例如,如果一个“用户”是“project 1”工程组的成员,同时也是管理员,那么在 group 文件中他的条目看起来就会是这样的: user: * : group-id : project1
/etc/nologin 如果有 /etc/nologin 文件存在,login(1) 将只允许 root 用户进行访问。它将对其它用户显示此文件的内容并拒绝其登录。
etc/passwd 请参阅“man passwd”。它包含一些用户帐号信息,包括密码(如果未被 shadow 程序加密过)。
/etc/rpmrc rpm 命令配置。所有的 rpm 命令行选项都可以在这个文件中一起设置,这样,当任何 rpm 命令在该系统中运行时,所有的选项都会全局适用。
/etc/securetty 包含设备名称,由 tty 行组成(每行一个名称,不包括前面的 /dev/),root 用户在这里被允许登录。
/etc/usertty
/etc/shadow
包含加密后的用户帐号密码信息,还可以包括密码时效信息。包括的字段有:
  • 登录名
  • 加密后的密码
  • 从 1970 年 1 月 1 日到密码最后一次被更改的天数
  • 距密码可以更改之前的天数
  • 距密码必须更改之前的天数
  • 密码到期前用户被警告的天数
  • 密码到期后帐户被禁用的天数
  • 从 1970 年 1 月 1 日到帐号被禁用的天数
/etc/shells 包含系统可用的可能的“shell”的列表。
/etc/motd 每日消息;在管理员希望向 Linux 服务器的所有用户传达某个消息时使用。

/"/"
/"/"
/"/"
/"/"
回页首


/etc/gated.conf gated 的配置。只能被 gated 守护进程所使用。
/etc/gated.version 包含 gated 守护进程的版本号。
/etc/gateway 由 routed 守护进程可选地使用。
/etc/networks 列举从机器所连接的网络可以访问的网络名和网络地址。通过路由命令使用。允许使用网络名称。
/etc/protocols 列举当前可用的协议。请参阅 NAG(网络管理员指南,Network Administrators Guide)和联机帮助页。 C 接口是 getprotoent。绝不能更改。
/etc/resolv.conf 在程序请求“解析”一个 IP 地址时告诉内核应该查询哪个名称服务器。
/etc/rpc 包含 RPC 指令/规则,这些指令/规则可以在 NFS 调用、远程文件系统安装等中使用。
/etc/exports 要导出的文件系统(NFS)和对它的权限。
/etc/services 将网络服务名转换为端口号/协议。由 inetd、telnet、tcpdump 和一些其它程序读取。有一些 C 访问例程。
/etc/inetd.conf inetd 的配置文件。请参阅 inetd 联机帮助页。包含每个网络服务的条目,inetd 必须为这些网络服务控制守护进程或其它服务。注意,服务将会运行,但在 /etc/services 中将它们注释掉了,这样即使这些服务在运行也将不可用。格式为:<service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
/etc/sendmail.cf 邮件程序 sendmail 的配置文件。比较隐晦,很难理解。
/etc/sysconfig/network 指出 NETWORKING=yes 或 no。至少由 rc.sysinit 读取。
/etc/sysconfig/network-scripts/if* Red Hat 网络配置脚本。

/"/"
/"/"
/"/"
/"/"
回页首


系统命令要独占地控制系统,并让一切正常工作。所有如 login(完成控制台用户身份验证阶段)或 bash(提供用户和计算机之间交互)之类的程序都是系统命令。因此,和它们有关的文件也特别重要。这一类别中有下列令用户和管理员感兴趣的文件。
/etc/lilo.conf 包含系统的缺省引导命令行参数,还有启动时使用的不同映象。您在 LILO 引导提示的时候按 Tab 键就可以看到这个列表。
/etc/logrotate.conf 维护 /var/log 目录中的日志文件。
/etc/identd.conf identd 是一个服务器,它按照 RFC 1413 文档中指定的方式实现 TCP/IP 提议的标准 IDENT 用户身份识别协议。identd 的操作原理是查找特定 TCP/IP 连接并返回拥有此连接的进程的用户名。作为选择,它也可以返回其它信息,而不是用户名。请参阅 identd 联机帮助页。
/etc/ld.so.conf “动态链接程序”(Dynamic Linker)的配置。
/etc/inittab 按年代来讲,这是 UNIX 中第一个配置文件。在一台 UNIX 机器打开之后启动的第一个程序是 init,它知道该启动什么,这是由于 inittab 的存在。在运行级别改变时,init 读取 inittab,然后控制主进程的启动。
/etc/termcap 一个数据库,包含所有可能的终端类型以及这些终端的性能。

/"/"
/"/"
/"/"
/"/"
回页首


守护进程是一种运行在非交互模式下的程序。一般来说,守护进程任务是和联网区域有关的:它们等待连接,以便通过连接提供服务。Linux 可以使用从 Web 服务器到 ftp 服务器的很多守护进程。
/etc/syslogd.conf syslogd 守护进程的配置文件。syslogd 是一种守护进程,它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用,这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。
/etc/httpd.conf Web 服务器 Apache 的配置文件。这个文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要确定它的位置,您还需要检查特定的 Apache 安装信息。
/etc/conf.modules or /etc/modules.conf kerneld 的配置文件。有意思的是,kerneld 并不是“作为守护进程的”内核。它其实是一种在需要时负责“快速”加载附加内核模块的守护进程。

/"/"
/"/"
/"/"
/"/"
回页首


在 Linux(和一般的 UNIX)中,有无数的“用户”程序。最常见的一种用户程序配置文件是 /etc/lynx.cfg。这是著名的文本浏览器 lynx 的配置文件。通过这个文件,您可以定义代理服务器、要使用的字符集等等。下面的代码样本展示了 lynx.cfg 文件的一部分,修改这部分代码可以改变 Linux 系统的代理服务器设置。缺省情况下,这些设置适用于在各自的 shell 中运行 lynx 的所有用户,除非某个用户通过指定 --cfg = /"mylynx.cfg/" 重设了缺省的配置文件。

/etc/lynx.cfg 中的代理服务器设置
.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have 
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx p_w_picpath.
#
.ex 15
http_proxy:[url]http://proxy3.in.ibm.com:80/[/url]
ftp_proxy:[url]http://proxy3.in.ibm.com:80/[/url]
#http_proxy:[url]http://penguin.in.ibm.com:8080[/url]
#ftp_proxy:[url]http://penguin.in.ibm.com:8080/[/url]
.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space.  If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge


/"/"
/"/"
/"/"
/"/"
回页首


在更改配置文件时,如果程序不是由系统管理员或内核控制的,就要确保重新启动过使用该配置的程序。普通用户通常没有启动或停止系统程序和/或守护进程的权限。
更改内核中的配置文件会立即影响到系统。例如,更改 passwd 文件以增加用户将立即使该用户变为可用。而且任何 Linux 系统的 /proc/sys 目录中都有一些内核可调参数。只有超级用户可以得到对所有这些文件的写访问权力;其它用户只有只读访问权力。此目录中文件的分类的方式和 Linux 内核源代码的分类方式一样。此目录中的每个文件都代表一个内核数据结构,这些数据结构可以被动态地修改,从而改变系统性能。
注意:在更改其中任何文件的任何值之前,您应该确保自己全面了解该文件,以避免对系统造成不可修复的损害。
/proc/sys/kernel/ 目录中的文件
文件名 描述
threads-max 内核可运行的最大任务数。
ctrl-alt-del 如果值为 1,那么顺序按下这几个键将“彻底地”重新引导系统。
sysrq 如果值为 1,Alt-SysRq 则为激活状态。
osrelease 显示操作系统的发行版版本号
ostype 显示操作系统的类型。
hostname 系统的主机名。
domainname 网络域,系统是该网络域的一部分。
modprobe 指定 modprobe 是否应该在启动时自动运行并加载必需的模块。
守护进程是永远运行在后台的程序,它默默地执行自己的任务。常见的守护进程有 in.ftpd(ftp 服务器守护进程)、in.telnetd(telnet 服务器守护进程)和 syslogd(系统日志记录守护进程)。有些守护进程在运行时会严密监视配置文件,在配置文件改变时就会自动重新加载它。但是大多数守护进程并不会自动重新加载配置文件。我们需要以某种方式“告诉”这些守护进程配置文件已经被发生了改变并应该重新加载。可以通过使用服务命令重新启动服务来达到这个目的(在 Red Hat Linux 系统上)。
例如,如果我们更改了网络配置,就需要发出:
service network restart
注意:这些服务最常见的是 /etc/rc.d/init.d/* 目录中存在的脚本,在系统被引导时由 init 启动。所以,您也可以执行如下操作来重新启动服务:
/etc/rc.d/init.d/<script-for-the-service> start | stop | status
start、stop 和 status 是这些脚本接受的输入值,用来执行操作。
用户或系统程序在每次启动时都会读取其配置文件。尽管如此,请记住,有些系统程序在计算机打开时情况不一样,它们的行为依赖于在 /etc/ 中的配置文件中读到的内容。所以,用户程序第一次启动时将从 /etc/ 目录中存在的文件读取缺省配置。然后,用户可以通过使用 rc 和 .(点)文件来定制程序,正如下面一节所示。

/"/"
/"/"
/"/"
/"/"
回页首


我们已经看到怎样容易地配置程序。但是如果有的人不喜欢在 /etc/ 中配置程序的方式该怎么办呢?“普通”用户不能简单地进入 /etc 然后更改配置文件;从文件系统的角度来看,配置文件的所有者是 root 用户!这就是大多数用户程序都定义两个配置文件的原因:第一个是“系统”级别的,位于 /etc/;另一个属于用户“专用”,可以在他或她的主目录中找到。
例如,我在我的系统中安装了非常有用的 wget 实用程序。/etc/ 中有一个 /etc/wgetrc 文件。在我的主目录中,有一个名为 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用户运行 wget 命令时,才会加载这个配置文件)。其它用户在他们自己的主目录(/home/other)中也可以有 .wgetrc 文件;当然,只有这些用户运行 wget 命令时,才会读取这个文件。换句话说,/etc/wgetrc 文件为 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列举了某个用户的“定制项”。重要的是这只是“一般规则”,并非所有情况都如此。例如,一个象 pine 一样的程序,在 /etc/ 中并没有任何文件,它只在用户主目录中有一个定制配置文件,名为 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允许用户“定制”这些配置文件(/etc 目录中只有少数 config. 文件是这种情况)。
文件名 描述
~/.bash_login 请参考“man bash”。如果 ~/.bash_profile 不存在,bash 则将 ~/.bash_login 作为 ~/.bash_profile 处理。
~/.bash_logout 请参考“man bash”。在退出时由 bash 登录 shell 引用。
~/.bash_profile 由 bash 登录 shell 引用 /etc/profile 之后引用。
~/.bash_history 先前执行的命令的列表。
~/.bashrc 请参考“man bash”。由 bash 非登录交互式 shell 引用(没有其它文件)。除非设置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。
~/.emacs 启动时由 emac 读取。
~/.forward 如果这里包含一个电子邮件地址,那么所有发往 ~ 的所有者的邮件都会被转发到这个电子邮件地址。
~/.fvwmrc ~/.fvwm2rc fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。
~/.hushlogin 请参考“man login”。引起“无提示”登录(没有邮件通知、上次登录信息或者 MOD 信息)。
~/.mail.rc 邮件程序的用户初始化文件。
~/.ncftp/ ncftp 程序的目录;包含书签、日志、宏、首选项和跟踪信息。请参阅 man ncftp。ncftp 的目的是为因特网标准文件传输协议(Internet standard File Transfer Protocol)提供一个强大而灵活的接口。它旨在替换系统所使用的标准的 ftp 程序。
~/.profile 请参考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 则将 ~/.profile 作为 ~/.bash_profile 处理,并被其它继承 Bourn 的 shell 使用。
~/.pinerc Pine 配置
~/.muttrc Mutt 配置
~/.exrc 这个文件可以控制 vi 的配置。
示例:set ai sm ruler
在此文件中写入上面一行会让 vi 设置自动缩进、匹配括号、显示行号和行-列这几个选项。
~/.vimrc 缺省的“Vim”配置文件。和 .exrc 一样。
~/.gtkrc GNOME 工具包(GNOME Toolkit)。
~/.kderc KDE 配置。
~/.netrc ftp 缺省登录名和密码。
~/.rhosts 由 r- 工具(如 rsh、rlogin 等等)使用。因为冒充主机很容易,所以安全性非常低。
  1. 必须由用户(~/ 的所有者)或超级用户拥有。
  2. 列出一些主机,用户可以从这些主机访问该帐号。
  3. 如果是符号链接则被忽略。
~/.rpmrc 请参阅“man rpm”。如果 /etc/rpmrc 不存在则由 rpm 读取。
~/.signature 消息文本,将自动附加在从此帐号发出的邮件末尾。
~/.twmrc twm( The Window Manager)的配置文件。
~/.xinitrc 启动时由 X 读取(而不是由 xinit 脚本读取)。通常会启动一些程序。
示例:exec /usr/sbin/startkde
如果该文件中存在上面这行内容,那么在从这个帐号发出 startx 命令时,这一行就会启动“KDE 视窗管理器”(KDE Window Manager)。
~/.xmodmaprc 此文件被传送到 xmodmap 程序,而且可以被命名为任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。
~/.xserverrc 如果 xinit 可以找到要执行的 X,xinit 就会将该文件作为 X 服务器运行。
~/News/Sent-Message-IDs gnus 的缺省邮件历史文件。
~/.Xauthority 由 xdm 程序读和写,以处理权限。请参阅 X、xdm 和 xauth 联机帮助页。
~/.Xdefaults, ~/.Xdefaults-hostname 在主机 hostname 的启动过程中由 X 应用程序读取。如果找不到 -hostname 文件,则查找 .Xdefaults 文件。
~/.Xmodmap 指向 .xmodmaprc;Red Hat 有使用这个名称的 .xinitrc 文件。
~/.Xresources 通常是传送到 xrdb 以加载 X 资源数据库的文件的名称,旨在避免应用程序需要读取一个很长的 .Xdefaults 文件这样的情况。(有些情况曾经使用了 ~/.Xres。)
~/mbox 用户的旧邮件。




/"/"
/"/"
Subodh Soni 持有印度 College Surat 大学计算机科学与技术地区工程学的工程学学士学位。他为印度的 IBM Global Services(IBM Software Labs)工作;他还是 IBM Linux Technology Center 的成员之一,在那里他致力于 Linux RAS(Reliability,Availability and Serviceability(可靠性、可用性和适用性))。他感兴趣的其它领域还有操作系统内部、Linux 系统管理和疑难解答。您可以通过 [email]subodh@in.ibm.com[/email] 与他联系。

系统引导管理器GRUB,为初学者指南

smailes 转到全文

系统引导管理器GRUB,为初学者指南

作者:北南南北
来自:LinuxSir.Org
摘要: GRUB是多系统引导管理器,简单的说既能引导Linux,同时也能引导Windows;从LinuxSir.Org 讨论区近四年的观察来看,大多初学者并不能在短时间内掌握GRUB的用法,为了解决初学者在最短时间内掌握GRUB,重写GRUB入门文档还是有必要的;
本文重点介绍了GRUB的menu.lst的写法,另外通过GRUB命令行引导系统也做了详述;这些无论是对Windows版本的WINGRUB还是Linux版本的GRUB都是适用的;
目录索引

++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、什么是多重操作系统引导管理器,什么是GRUB;

1、什么是多重操作系统引导管理器及工作原理;
系统启动引导管理器,是在计算机启动后运行的第一个程序,他是用来负责加载、传输控制到操作系统的内核,一旦把内核挂载,系统引导管理器的任务就算完成退出,系统引导的其它部份,比如系统的初始化及启动过程则完全由内核来控制完成;

Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU).

在X86 架构的机器中,Linux、BSD 或其它Unix类的操作系统中GRUB、LILO 是大家最为常用,应该说是主流;
Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了;
在Powerpc 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机目前用的是IBM Powerpc处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统;
因为目前X86架构的机器仍是主流, 所以目前GRUB和LILO 仍然是我们最常用的多重操作系统引导管理器;

2、什么是GRUB;为什么我要选择GRUB;


1)什么是GRUB;

GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应用;

GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.

2)“GRUB太不好用”──对GRUB的认识的误区;

GRUB真的不好用吗?不是的,通过LinuxSir.Org 社区近四年来的运行,我发现了大多新手弟兄还是不太了解GRUB;当然这也有中文Linux社区的责任,虽然也有GRUB的中文译本,初学Linux的弟兄可能有点看不懂;
我们欣喜的看到LinuxSir.Org 社区的好多弟兄都曾经或正在写GRUB实践文档,也有的弟兄也总结了GRUB的一些基础知识,比如 probing兄弟的 《GRUB 学习笔记》;由于每个人的写文档时风格不同,可能同一份文档不同的人来写就有不同的风格;所以今天也抖胆也一篇入门级的教程,由于北南不会写高级教程,所以还得请高手弟兄指教,先谢过;

3)为什么要选择GRUB;
基于在X86架构的CPU而开发操作系统,系统引导管理器不仅仅有GRUB ,而且也有LILO,但对于多重系统引导管理器,你只能选择其一而用;不能两个同时使用;
目前这两个多重系统引导管理器是大家最常用的,也是主流Linux发行版而采用的;有的弟兄喜欢GRUB,比如我个人,有的弟兄喜欢LILO ,比如etony兄(谁是etony,请参见 [url]http://debian.linuxsir.org[/url] );
主流发行版 Fedora、Redhat、Centos等基于RPM包的系统,在最新版本中都默认GRUB引导;Slackware 目前仍采用LILO;而Debian发行版目前最新的版本也是采用GRUB;
从目前看来,GRUB有逐渐取代LILO之势,GRUB 2.0正在开发之中;所以我们有理由用GRUB,我也有理由写GRUB使用教程;

二、GRUB软件包版本选择和安装;

1、GRUB的版本选择,Linux版本的GRUB及Windows版本的GRUB的说明;
GRUB不但有Linux版本,也有Windows版本;现我们一一介绍;
如前面所说,目前在在Unix类的操作系统中,大多是都有GRUB;GRUB几乎能引导所有X86架构的操作系统;功能之强,使用简单是GRUB最大的卖点;由于Windows 操作系统的先入为主的优势,使得大家对Windows的NTLOADER了解的比较多,而对开源社区的GRUB显得有点寞生,由此而带来使用上的“心理恐惧”;究其初学者对GRUB“恐惧”的主要原因还是对GRUB没有太多的了解和深入;无论是WINGRUB还是Linux版本的GRUB,最方便的还是对GRUB命令行的操作;一谈到命令行(Command)的操作,可能初学者对此恐惧;其实没有什么难的,象北南这样低级的写手,还能操作得起来,您也应该能行;

2、GRUB的Windows版本WINGRUB;

3、GRUB的Linux版本软件包的安装;
其实对于Linux的GRUB,几乎所有的Linux主流发行版都有打包,如果您安装了Linux,并且在开机后出现GRUB字样的,证明您已经安装了GRUB;而无需再次安装;Linux的GRUB软件包安装部份并不是本文的重点;
如果您的Linux系统没有安装GRUB,或者采用的是LILO,而您想用GRUB,可以用系统安装盘自带GRUB软件包来安装,或者到相关发行版本的软件仓库下载后安装;
GRUB 的Linux版本目前在各大发行版中都有打包;比如Fedora/Redhat/Centos/Mandrive/Mandriva/SuSE等以RPM包管理机制的系统,可以通过如下的命令来安装;
[root@localhost ~]# rpm -ivh grub*.rpm
如果是Slackware 您可以用如下的办法来安装;
[root@localhost ~]# installpkg grub*.tgz
其它的发行版本请用其自己特色的软件包管理工具来安装;
当然您也可以通过源码包,在任何Linux的发行版上安装;至于源码包的安装方法;
[root@localhost ~]#tar zxvf grub*.tar.gz
[root@localhost ~]#cd grub-xxx
[root@localhost ~]#./configure;make;make install
确认您是否成功安装了GRUB,您可以测试是否有如下两个命令;
[root@localhost ~]# grub
[root@localhost ~]# grub-install
如果您不能找到这两个命令,可能您的可执行程序的路径没有设置;
请参考: 《设置可执行程序路径》,当然您可以用绝对路径;比如下面的;
[root@localhost ~]# /usr/sbin/grub
[root@localhost ~]# /usr/sbin/grub-install
如果您还是找不到GRUB软件包安装在哪了;您可以用下面的命令来解决和查找;
[root@localhost ~]# updatedb  注:这个要花很长时间;是索引slocate 的库,然后再通过locate来查找;
[root@localhost ~]# locate grub
比如找到的是有类似如下的;
[root@localhost ~]# locate grub
/sbin/grub-md5-crypt
/sbin/grub
/sbin/grub-install
/sbin/grub-terminfo
在一般情况下,在路径中带有bin或sbin中字样的,这些路径下都是可执行程序;sbin 是超级权限用户才能使用的管理命令;要使用这些命令一般的情况下得切换到root用户下才能使用;比如
[beinan@localhost ~]$ su -  注:切换到root用户,并且切换到其家目录;
Password:
[root@localhost ~]#/sbin/grub  注:用绝对路径来运行grub命令;

三、在Linux中,GRUB的配置中的安装和写入硬盘的MBR;

1、在Linux中,GRUB配置过程中的安装grub-install;
grub-install 命令有何用呢?其实就是把我们前面已经安装的软件包中的一些文件复制到 /boot/grub中;对于新安装GRUB软件包后,也是一个必经的过程;我们前面所说的GRUB软件包的安装;而现在我们说的是GRUB配置的过程中的安装;虽然在洋文中都是install ,但表达的意思是不一样的;
我们首先要运行 fdisk -l 来确认到底是硬盘的标识;
这个过程主要是确认硬盘的标识是哪个调备,到底是/dev/hda还是/dev/hdb 还是其它的;
[root@localhost ~]# fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         970     7791493+   7  HPFS/NTFS
/dev/hda2             971        9729    70356667+   5  Extended
/dev/hda5             971        2915    15623181    b  W95 FAT32
/dev/hda6            2916        4131     9767488+  83  Linux
/dev/hda7            4132        5590    11719386   83  Linux
/dev/hda8            5591        6806     9767488+  83  Linux
/dev/hda9            6807        9657    22900626   83  Linux
/dev/hda10           9658        9729      578308+  82  Linux swap / Solaris
如果通过fdisk -l 出现有/dev/hda字样的,我们就要用下面的命令来安装;
[root@localhost ~]# grub-install /dev/hda
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install/'.

(fd0)   /dev/fd0
(hd0)   /dev/hda
如果是您fdisk -l 出现的有/dev/hdb呢,那就如下运行;
[root@localhost ~]# grub-install /dev/hdb
如果既有/dev/hda和/dev/hdb 就安装到/dev/hda中;
[root@localhost ~]# grub-install /dev/hda
值得注意的是如果您有一个/boot分区,应该用如下的办法来安装;
[root@localhost ~]#grub-install --root-directory=/boot /dev/hda

[root@localhost ~]#grub-install --root-directory=/boot /dev/hdb
注解:具体是/dev/hda还是/dev/hdb,请以fdisk -l 为准;如果两个都有,就看您把/boot分区是放在第一块硬盘还是第二块硬盘上了,以实际情况为准;

2、设定GRUB的/boot分区并写入MBR;;

在Linux中,GRUB软件包的安装,及在配置过程中安装grub到 /boot中还是不够的, 还要把GRUB,写入MBR才行;有时我们重新安装了Windows,Windows会把MBR 重写,这样GRUB就消失了;如果您出现这样的情况,就要进行这个过程;
[root@localhost ~]# grub
会出现 grub>提示符,这是grub命令行模式 ,如果能在开机中出现提示符,没有引导不起来的系统,除非您的系统破坏的极为严重。如果仅仅是GRUB被破坏了,GRUB命令行是能让操作系统引导起来的;
接着看例子,我们要找到 /boot/grub/stage1的,在grub>后面输入;
grub> find  /boot/grub/stage1
(hd0,6) 
(fd0)   注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;
注解:
(hd0,6) 这是/boot所在的分区;不要误解为是Linux 的/所在的分区,这是值得注意的;
(fd0) 注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;
grub>root (hd0,6)    注:这是/boot所在的分区;
grub>setup (hd0)   注:把GRUB写到MBR上;
注解:
上面这步骤是根据 find /boot/stage1而来的,仔细看一下就明白了;现在我们一般安装很少会把/boot分区列为一个单独的分区;不过有的弟兄可能也喜欢这么做;所以还是有必要说一下为好;

四、GRUB的配置文件的menu.lst的写法;
对于GRUB来说,如果没有配置menu.lst,无论是Linux版本的GRUB,还是WINGRUB,都会有命令行可用,通过命令行是一样能把操作系统引导起来的;有些弟兄总以为menu.lst 配置错了, 或者在机器启动后出现grub>命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法,根本没有必要重装系统;
menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的;
有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令;
[root@localhost ~]# touch  /boot/grub/menu.lst

然后我们再做一个/boot/grub/menu.lst 的链接 /boot/grub/grub.conf
[root@localhost ~]# cd /boot/grub
[root@localhost ~]# ln -s menu.lst grub.conf
现在我们来写GRUB的menu.lst了,因为/boot/grub/grub.conf是 /boot/grub/menu.lst的链接文件,改哪个都行。链接文件相当于Windows的快捷方式,这样可能能更好的理解;

1、menu.lst的写法之一;
首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容;
default=0
timeout=5
#splashp_w_picpath=(hd0,6)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,6)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
title WinXp
        rootnoverify (hd0,0)
        chainloader +1
注解:
default=0

default=0 是默认启动哪个系统,从0开始;每个操作系统的启动的定义都从title开始的,第一个title 在GRUB的启动菜单上显示为0,第二个启动为1,以此类推;
timeout=5

注:表示在开机后,GRUB画面出现几秒后开始以默认启动;如果在启动时,移动上下键,则解除这一规则;
#splashp_w_picpath=(hd0,6)/boot/grub/splash.xpm.gz 注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面,所以加#号注掉,也可以删除;
hiddenmenu
注解:隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉;
一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行;

1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区;
title XXXXX 注:title 后面加一个空格,title 是小写的,后面可以自己定义;比如FC4,自己定义一个名字就行;
root (hd[0-n],y) ,在本例中,我们看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的,这时/boot和/所在的同一个分区; 这个root (hd[0-n],y)很重要,因为/boot目录中虽然有grub目录,最为重要的是还有kernel 和initrd文件,这是Linux能启动起来最为重要东西;
有的弟兄会问,root (hd[0-n],y)是怎么来的?
请参考: 《在Linux系统中存储设备的两种表示方法》

2)在menu.lst中,kernel 命令行的写法;
kernel 一行,是通指定内核及Linux的/分区所在位置;
比如例子中是;
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/

在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径;因为内核是处在/boot目录中的, 如果/boot是独立的一个分区,则需要把boot省略;如果/boot是独立的分区,这行要写成:
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 
因为/boot所处的分区已经在title 下一行root (hd[0-n],y)中指定了,所以就无需要再指明内核处在哪个分区了;另外Linux系统的硬盘分区的挂载配置文件在/etc/fstab ,原理是通过 mount /dev/hd[a-z]X /boot 来进行的;您可以对照着来理解;
ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda7 , 那这里就可以写成root=/dev/hda7;
如果查看系统运行所挂载的分区,请用 df -lh 来查看,就能明白是不是/boot是独立的分区,或者查看/etc/fstab也能知道;
[root@localhost ~]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda7              11G  9.2G  1.2G  90% /
/dev/shm              236M     0  236M   0% /dev/shm
在这个例子中,我们可以发现 /boot并没有出现只有/dev/hda7,这表示/boot并不是独立的一个分区;所有的东西都包含在/中;于是我们在/boot中查看内核版本;
[root@localhost ~]# ls /boot/vmlinuz*
/boot/vmlinuz-2.6.11-1.1369_FC4   注:看到内核vmlinuz所处的目录;
于是我们就可以这样kernel 这行了;
kernel /boot/vmlinuz-2.6.11-1.1369_FC4  ro root=/dev/hda7


3)initrd 命令行的写法;
如果是/boot独立一个分区,initrd 一行要把/boot中省略;如果/boot不是处于一个分区,而是和Linux的/分区处于同一分区,不应该省略;
比如我们在2)中用的例子;现在拿到这里,我们应该首先查看 /boot中的initrd的文件名到底是什么;
[root@localhost ~]# ls /boot/initrd*
/boot/initrd-2.6.11-1.1369_FC4.img
如果是通过df -lh 得知或查看/etc/fstab 也行, 得知/boot是独立的分区;这时initrd 应该写成;
initrd  /initrd-2.6.11-1.1369_FC4.img
如果是 /boot不是独处一个分区,而是在/同一处一个分区, 则要写成;
initrd  /boot/initrd-2.6.11-1.1369_FC4.img

4)menu.lst第一种写法的总结和实践;
在这里,我们只说重要的,不重要的就一带而过了;

1]用fdisk -l ;df -lh ;more /etc/fstab来确认分区情况;

我们过fdisk -l ;df -lh ; more /etc/fstab 来确认/boot所在的分区,及Linux的根分区所在位置;
比如我们确认/boot和Linux的/分区同处一个分区;
[root@localhost ~]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda7              11G  9.2G  1.2G  90% /
/dev/shm              236M     0  236M   0% /dev/shm
然后我们/etc/fstab 中,查看/分所在的分区或分区标签是什么;
[root@localhost ~]# more /etc/fstab
# This file is edited by fstab-sync - see /'man fstab-sync/' for details
LABEL=/                 /                       ext3    defaults        1 1
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda1         swap                    swap    defaults        0 0
/dev/hdc                /media/cdrecorder       auto    pamconsole,exec,noauto,managed 0 0
经过上面的df -lh 和more /etc/fstab 的对照中得知,/boot并是独处一个分区,而是和/在同一个分区;这个Linux系统安装在/dev/hda7上,文件系统(此分区)的标签为LABEL=/ ,/boot也是处于/dev/hda7 ,/dev/hda7也可以说是 root (hd0,6);

2]查看内核vmlinuz的和initrd文件名的全称;
[root@localhost ~]# ls -lh /boot/vmlinuz*
-rw-r--r--  1 root root 1.6M 2005-06-03  /boot/vmlinuz-2.6.11-1.1369_FC4
[root@localhost ~]# ls -lh /boot/initrd*
-rw-r--r--  1 root root 1.1M 11月 26 22:30 /boot/initrd-2.6.11-1.1369_FC4.img

3]开始写menu.lst ;
我们根据上面所提到的,可以写成如下的样子;
default=0 
timeout=5
title FC4
        root (hd0,6)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
也可以写成;
default=0 
timeout=5
title FC4
        root (hd0,6)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
注解:上面两个不同之处在于一指定Linux的根/所在的分区时,一个是用了文件系统的标签,另一个没有用标签;

2、menu.lst的写法之二,精简型;
本写法主要是把指定/boot所位于的所分区直接写入kernel 指令行;这样就省略了通过root (hd[0-n],y)来指定/boot所位于的分区;

1)第一种情况:/boot和Linux的/根分区在同一个分区;
有前面的那么多的讲解,menu.lst写法之二就好理解多了;也得分两种情况,咱们先把/boot并不是独处一个分区,而是和Linux的根分区处于同一个分区;我们以 4)menu.lst第一种方法的写法总结 的实例为例子;
default=0 
timeout=5
title FC4x
        kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
        initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
注解:
title FC4x 注:自己为这个Linux 起个简单的名,以title开头,然后一个空格,后面就自己发挥吧,FC4或FC4x都行;
kernel 空格 (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 空格 ro 空格 root=/dev/hda7
kernel 这行这样理解 kernel (boot所在的分区)/boot/内核文件件全称 ro root=Linux根所位于的分区或标签
initrd 空格 (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
initrd 这行可以这样理解 initrd (/boot所在的分区)/boot/内核文件名全称

2)第二种情况:/boot独立一个分区,和Linux的根分区不是同一个分区;
比如我们查看到df -lh 得到的是
[root@localhost ~]# df -lh
Filesystem            容量  已用 可用 已用% 挂载点
/dev/hda6              200M  120M  80M  60% /boot
/dev/hda7              11G  9.2G  1.2G  90% /
我们再进一行查看/etc/fstab 得知;
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
所以我们应该写成如下的;
title FC4x
        kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
        initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
因为Linux的根分区是/dev/hda7,通过/etc/fstab和df -h的内容得知标签为 LABEL=/的分区就是/dev/hda7 ,所以有;
title FC4x
        kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
        initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img

五、通过GRUB命令行来启动Linux操作系统;
GRUB的命令行才是王道,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。
因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?

1、为什么需要学习GRUB的命令行;

当我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比如在开机的时候,GRUB会出现 grub>类似的命令提示符,这时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单 ,直接用命令行来启动系统,比如我现在就是,为了写GRUB的文档,就把menu.lst 删除了,直接用命令来启动系统;

2、用命令行来引导Linux操作系统的步骤;
通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。如果您不知道有哪些命令,可以输入help;

1)进入GRUB的命令行模式 grub>

如果开机时,GRUB出现的是 grub>,说明你没有/etc/grub/menu.lst ,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。如果有GRUB的菜单,您可以按 Ctrl+c组合键进入GRUB的命令行模式,会出现 grub> 提示符;
grub>


2)获取帮助GRUB的 help
只要您在 grub>提示符的后面输入help 就能得到GRUB所有的命令提示;
grub> help
blocklist FILE                         boot
cat FILE                               chainloader [--force] FILE
clear                                  color NORMAL [HIGHLIGHT]
configfile FILE                        device DRIVE DEVICE
displayapm                             displaymem
find FILENAME                          geometry DRIVE [CYLINDER HEAD SECTOR [
halt [--no-apm]                        help [--all] [PATTERN ...]
hide PARTITION                         initrd FILE [ARG ...]
kernel [--no-mem-option] [--type=TYPE] makeactive
map TO_DRIVE FROM_DRIVE                md5crypt
module FILE [ARG ...]                  modulenounzip FILE [ARG ...]
pager [FLAG]                           partnew PART TYPE START LEN
parttype PART TYPE                     quit
reboot                                 root [DEVICE [HDBIAS]]
rootnoverify [DEVICE [HDBIAS]]         serial [--unit=UNIT] [--port=PORT] [--
setkey [TO_KEY FROM_KEY]               setup [--prefix=DIR] [--stage2=STAGE2_
terminal [--dumb] [--no-echo] [--no-ed terminfo [--name=NAME --cursor-address
testvbe MODE                           unhide PARTITION
uppermem KBYTES                        vbeprobe [MODE]
如果需要得到某个指令的帮助,就在 help 后面空一格,然后输入指令,比如;
grub>help kernel 


3)cat的用法;
cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;
grub> cat (     按tab 键会出来hd0或hd1之类的;
grub> cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的;
grub> cat (hd0,6)
Possible partitions are:
   Partition num: 0,  Filesystem type unknown, partition type 0x7
   Partition num: 4,  Filesystem type is fat, partition type 0xb
   Partition num: 5,  Filesystem type is reiserfs, partition type 0x83
   Partition num: 6,  Filesystem type is ext2fs, partition type 0x83
   Partition num: 7,  Filesystem type unknown, partition type 0x83
   Partition num: 8,  Filesystem type is reiserfs, partition type 0x83
   Partition num: 9,  Filesystem type unknown, partition type 0x82

grub> cat (hd0,6)/etc/fstab 注:比如我想查看一下 (hd0,6)/etc/fstab的内容就这样输入;

LABEL=/                 /                       ext3    defaults        1 1
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda1         swap                    swap    defaults        0 0
/dev/hdc                /media/cdrecorder       auto    pamconsole,exec,noauto,
managed 0 0
有的弟兄可能会说,我不知道Linux安装在了哪个分区。那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以后引导带来方便;
主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux的/处于同一个硬盘分区;比如上面的例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;
如果您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是类似下面的;
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2

4) root (hd[0-n,y) 指令来指定/boot所在的分区;
其实这个root (hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl 命令中指定;我们前面已经说过 (hd[0-n],y) 硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;
比如我们确认/boot和 (hd0,6),所以就可以这样来输入root (hd0,6)
grub> root (hd0,6)
如果发现不对,可以重新来过;没有什么大不了的;

5) kernel 指令,用来指定Linux的内核,及/所在的分区;
kernel 这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;

如果我们已经通过root (hd[0-n],y) 指定了/boot所在的分区,语法有两个:

如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;

kernel /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X

如果/boot有自己独立的分区,应该是;

kernel /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
在这里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat (hd[0-n],y)/etc/fstab 中得到Linux的/所在的分区或分区的标签;
grub> kernel /boot/在这里按tab键;这样就列出/boot中的文件了;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz

grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 
   [Linux-bzImage, setup=0x1e00, size=0x18e473]
注解: root=LABEL=/ 是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
也可以把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 中指定/boot所在的分区;所以就在下面的语法;
如果是/boot和Linux的根同处一个分区;
kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X
比如:
grub>kernel
如果是/boot和Linux所在的根不在一个分区;则是;
kernel (hd[0-n],y)/vmlinuz  ro root=/dev/hd[a-z]X
grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
   [Linux-bzImage, setup=0x1e00, size=0x18e473]
或下面的输入,以cat 出/etc/fstab内容为准;
grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
   [Linux-bzImage, setup=0x1e00, size=0x18e473]

6)initrd 命令行来指定initrd文件;
grub> initrd /boot/initrd在这里tab 来补齐;
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]
如果/boot是独立的一个分区,应该是如下样子的语法;比如下面的;
grub> initrd /initrd在这里tab 来补齐;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]


7)boot 引导系统;
grub>boot
前面的几个步骤都弄好 。就进入引导;尝试一下就知道了。。

8)引导Linux系统实例全程回放;
实例:/boot和Linux的/处于同一个硬盘分区;
grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see /'man fstab-sync/' for details
LABEL=/                 /                       ext3    defaults        1 1
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda1         swap                    swap    defaults        0 0
/dev/hdc                /media/cdrecorder       auto    pamconsole,exec,noauto,managed 0 0

grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83

grub> kernel /boot/在这里按tab补齐,全列出/boot所有的文件;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 
memtest86+-1.55.1 xen-syms xen.gz

grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7  注:输入
   [Linux-bzImage, setup=0x1e00, size=0x18e473]

grub> initrd /boot/在这里按tab补齐
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 
memtest86+-1.55.1 xen-syms xen.gz

grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;输入intrd文件名的全名;
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

grub> boot
我们指定Linux的根时,可以用cat出来的fstab的内容中Linux的/分区文件系统标签来替代;也就是kernel 那行中 root=/dev/hd[a-z]X;
grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see /'man fstab-sync/' for details
LABEL=/                 /                       ext3    defaults        1 1
/dev/devpts             /dev/pts                devpts  gid=5,mode=620  0 0
/dev/shm                /dev/shm                tmpfs   defaults        0 0
/dev/proc               /proc                   proc    defaults        0 0
/dev/sys                /sys                    sysfs   defaults        0 0
LABEL=SWAP-hda1         swap                    swap    defaults        0 0

/dev/hdc                /media/cdrecorder       auto    pamconsole,exec,noauto,managed 0 0

grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83

grub> kernel /boot/在这里按tab补齐,全列出/boot所有的文件;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 
memtest86+-1.55.1 xen-syms xen.gz

grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 
   [Linux-bzImage, setup=0x1e00, size=0x18e473]

grub> initrd /boot/在这里按tab补齐
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK
memtest86+-1.55.1 xen-syms xen.gz

grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;输入intrd文件名的全名;
   [Linux-initrd @ 0x2e1000, 0x10e685 bytes]

grub> boot
如果是/boot和Linux的根分区不在同一个分区,要把kernel和initrd 指令中的/boot去掉,也就是/vmlinuzMMMMMM 或 /initrdNNNN
也可以不用root (hd[0-n]来指定/boot所在分区,要在kernel 和initrd 中指定;比如Linux的/根所位于的分区和/boot所位于的分区都是(hd0,6),并且我们cat出来的/etc/fstab是Linux的/根分区的文件系统的标签为LABEL=/,引导操作系统的例子如下;
grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
grub>boot
grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
grub>initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
grub>boot
如果/boot位于 /dev/hda6,也就是(hd0,5),Linux的根/位于分区/dev/hda7,并且我们cat 出来的/etc/fstab 中/分区的标签为 LABEL=/。下面的两种方法都可以引导;
grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot
grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot


六、通过GRUB引导Windows操作系统;


1、通过编辑 menu.lst 来引导Windows 系统;
如果您的Windows所处于的分区在(hd0,0),可以在menu.lst 加如下的一段就能引导起来了;
title WinXp
        rootnoverify (hd0,0)
        chainloader +1
如果您的机器有两块硬盘,而Windows 位于第二个硬盘的第一个分区,也就是(hd1,0)
您可以用grub的map来指令来操作把两块硬盘的序列对调,这样就不用在BIOS中设置了;在menu.lst中加如下的内容,比如下面的;
title WinXp
        map (hd0) (hd1)
        map (hd1) (hd0)
        rootnoverify (hd0,0)
        chainloader +1
  makeactive
如果Windows的分区不位于硬盘的第一个分区怎么办呢?比如在(hd0,2);
这个也好办吧,把rootnoverify 这行的(hd0,0)改为 (hd0,2)
title WinXp
        rootnoverify (hd0,2)
        chainloader +1
  makeactive
如果Windows的在第二个硬盘的某个分区,比如说是位于(hd1,2),则要用到map指令;
title WinXp
        map (hd0) (hd1)
        map (hd1) (hd0)
        rootnoverify (hd1,2)
        chainloader +1
  makeactive
如果有多个Windows 系统,怎么才能引导出来呢?应该用hide 和unhide指令操作;比如我们安装了两个Windows ,一个是位于(hd0,0)的windows 98 ,另一个是安装的是位于(hd0,1)的WindowsXP;这时我们就要用到hide指令了;
title Win98
         unhide (hd0,0)
         hide (hd0,1)
        rootnoverify (hd0,0)
        chainloader +1
  makeactive

title WinXP
        unhide (hd0,1)
        hide (hd0,0)
        rootnoverify (hd0,1)
        chainloader +1
  makeactive


2、通过GRUB指令来引导Windows ;
其实我们会写menu.lst了,在menu.lst中的除了title外,都是一条条指令;如果我们启动Windows ,只是输入指令就行了;
比如 Windows的分区在 (hd0,0),我们在开机后,按ctrl+c ,进入GRUB的命令模式;就可以用下面的
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot
其它同理... ...

七、GRUB丢失或损坏的应对策略;
如果GRUB是Linux版本才出会这样的问题;WINGRUB可以不写在MBR上;所以不会出现这样的问题。WINGRUB用起来比较简单。menu.lst 和命令行的用法和Linux版本的GRUB是一样的;

1、由于重新安装Windows或其它未知原因而导致GRUB的丢失;

您可以通过系统安装盘、livecd进入修复模式;
首先:您根据前面所说grub-install来安装GRUB到/boot所在的分区;要仔细看文档,/boot是不是处于一个独立的分区是重要的,执行的命令也不同;
其次:要执行grub ,然后通过 root (hd[0-n],y)来指定/boot所位于的分区,然后接着执行 setup (hd0),这样就写入MBR了,比如下面的例子;
grub>root (hd0,6)
grub>setup (hd0)
grub>quit

重新引导就会再次出现MBR的菜单了或命令行的提示符了;

2、如果出现GRUB提示符,而不出现GRUB的菜单,如何引导系统;
存在的问题可能是/boot/grub/menu.lst丢失,要自己写一个才行;您可以用命令行来启动系统,进入系统后写一写menu.lst就OK了。前面已经谈过了;
写好后还要建一个grub.conf的链接,如下:
[root@localhost ~]# cd /boot/grub
[root@localhost grub]# ln -s menu.lst grub.conf

八、关于GRUB的未尽事宜;
GRUB有很多内容,比如对BSD的引导,还有一些其它指令的用法,我并没有在本文提到;主要我目前还未用到,如果您需要了解更多,请查看 《GNU GRUB 手册和FAQ》

九、关于本文;
本文前后写了三四天,中间发现并不能把Linux设备的两种表现形式说的清楚,于是被迫写了 《在Linux系统中存储设备的两种表示方法》;由于没有BSD系统,所以没有写关于BSD的引导;如果正在用BSD的弟兄如果有时间不妨写一写;写的时候注意文档的结构,这样方便大家的阅读;
GRUB有很多内容,需要大家慢慢的学习和研究;有的弟兄抑制GRUB,说不如NTLOADER,其实这是错误的;如果您想学习和使用Linux就得学习和适应Linux的操作;习惯成自然,如果您抵制学习Linux,那可能您永远会说“Linux不如Windows”;

十、参考文档;

计算机硬盘编号全解

smailes 转到全文
4200转发展到5400转,再到现在的7200转,在服务器市场上15000转的硬盘已经大行其道,缓存也越来越大,随着SONAMA平台的推广,在台式机上红火的SATA技术现在也都已经应用到笔记本硬盘上了。磁盘性能一直牵制笔记本整体性能提高的瓶颈,现在买笔记本的朋友们也逐渐的重视起硬盘的性能了,但是种类繁多,性能不一的硬盘该怎么样分辨呢?虽然现在有很多的测试软件可以一目了然的了解到磁盘信息。但是更多的时候用测试软件还是不太方便,现在教大家一个简单方便的方法:从系统信息里看硬盘编号了解硬盘信息。

  那么怎么样能看到硬盘编号呢?首先,如果您是购买硬盘的话就方便多了,硬盘的编号就在盘体的贴签上。但是如果您要是买的是整机的话恐怕商家是不可能让您把硬盘拆出来看的。所以咱们就只能进系统信息里瞧瞧,只要机器有操作系统就可以的。
  先用鼠标右键点我的电脑,出现下拉菜单后点属性,然后选硬件页,点设备管理器。出现系统信息后,点开磁盘驱动器下面出现的那一串字母加数字就是硬盘编号了。我的硬盘是HTS424040M9AT00

  有了这串密码似的硬盘编号,咱们就能知道硬盘的具体硬件指标了。不过不同的厂商编号习惯不一样,而且就算为一个同一厂商不同系列产品编号定义也不一样,但是基本都有些规律可寻,下面类出几款常见硬盘的实例编号定义。

依次讲解:
3.    日立Hitachi
  A.    日立盘体
  B.    IBM盘体
  4.    IBM
  5.    富士通Fujistu
  6.    东芝Toshiba
  7.    三星Samsung
  8.    迈拓Maxtor
 目前希捷硬盘上对我们有用的就是在左上角的位置,都会有一行“ST x xxx x xx x”的编号,基本上为了方便,我们把他分成五部分,最前面的两个STSeagate的缩写,代表希捷公司产品,这两个字母只要是希捷硬的盘产品编号的开头都有。
 
 
/"/"500)this.width=500;/" border=/"0/" height=/"263/" width=/"449/">
然后第一组,代表硬盘的尺寸。1表示3.5英寸,厚度为41mm的全高硬盘;3表示3.5英寸,厚度为25mm的半高硬盘;4表示5.25英寸,厚度为82mm的硬盘;5表示尺寸为3.5英寸,厚度为19mm的硬盘;9表示为尺寸2.5英寸的硬盘。
第二组由23位数字组成,代表硬盘容量,例如上图中为300,就表示这款硬盘的容量为300G,同样如果80就表示容量为80G
第三组是由12数字组成,代表硬盘的缓存,如上图中的8,就表示这款硬盘为8M,同样2就表示2M,但是要注意的是16M可不是16,而是06
第四组由2个数字组成,前面的一个表示盘片的数量,后面的是备用表示,只有前面的表示重复或者无效时,备用标识才会起作用。
第五组由12个字母组成,代表硬盘接口类型。普通桌面硬盘的较为简单,A代表UltraATA,即普通IDE接口,这是大多数桌面硬盘所采用的接口类型;“AS”代表SerialATA,就是串口硬盘。 
这样从我们就可以看出,上面的是一款希捷300G,普通IDE接口,缓存8M,厚度为25mm的半高硬盘。

部数据Western Digital
 

西部数据的硬盘编号通常由主编号和附加编号构成。但是也许是因为比较看重OEM市场,西部数据长期以来只注重主编号里的硬盘容量标志,而并没有对零售市场公开附加编号的具体含义。所以笔者也只能根据自己看到的一些资料来进行推断。我们来看看它的硬盘编号形式:
 
WD <1234> <5> <6>-<78> <9> <10> <1112>,其中1-6位是主编号,7-12位为附加编号。
 
硬盘编号为WD2500JB-00EVA0,按顺序解释如下:
1)        WDWesternDigital西部数据
2)        500代表硬盘容量,单位为100MB。例如4位的“1200”代表120GB3位的“800”则代表80GB。这和希捷是一样的。
 
3)        J代表硬盘转速及缓存容量。例如“A”代表5400/分,“B”代表7200/分,“J”代表7200/分并且具有8MB缓存。
4)        B代表硬盘接口类型。“A”代表Ultra ATA66接口,“B”代表Ultra ATA100接口。
 
5)        00代表OEM客户标志。如果这两位编号为数字“00”,代表这是面向零售市场的产品。如果是其它字符则为OEM客户的代码,不同的编号对应不同OEM客户。
 
6)        E代表硬盘单碟容量。例如“C”代表硬盘单碟容量为40GB“D”代表66GB“E”代表83GB
 
7)        V代表同系列硬盘的版本代码,该代码随着不同系列而变。以单碟容量为40GB的产品为例:“A”代表 7200/分,Ultra ATA100接口的BB系列;“B”代表5400/分,Ultra ATA66接口的AB系列;“P”代表5400/ 分,Ultra ATA100接口的EB系列;“R”代表7200/分,Ultra ATA100接口,具有8MB缓存的JB系列。而在单碟66GB83GB的产品中,还出现了“U”“V”等其他字母,分别对应JB系列和BB系列产品。
 
8)        <!--[endif]-->A0代表硬盘的Firmware版本。我们目前常见的一般都是“A0” 
 
由此可知,“WD2500JB-00EVA0”的硬盘编号代表这是一块西部数据公司出品的容量为250GB7200/分并且具有8MB缓存的硬盘。从后面的附加编号我们还可以看出这是西部数据面向零售市场,单碟容量为83GB的产品。

Hitachi
 

从日立合并了IBM的硬盘部门后,日立便承继了IBM的硬盘技术,日立在市场上的硬盘产品出现了两种,一种是继续沿用以前IBM硬盘编号的产品,另外一种是使用日立自身编号的产品。
     日立硬盘的编号标注形式基本上以“HD+转速+系列的最大容量+该产品容量+产品系列代码+硬盘高度+接口类型+缓存为主,HDxxxxxxxxxxxxx基本上可以分为七部分。
 
500)this.width=500;/" alt=/"/" border=/"0/" height=/"256/" width=/"448/">
1)      HDT的第一个字母H表示日立(HITACHI);第二个字母D表示Deskstar系列,还有T系列(TravelStar);第三个字母T表示用途,E代表服务器,S代表PCC代表1.8英寸,T表示?。
 
2)     第一组的为1个字母2个数字组成,字母代表型号,数字代表转速,72就是7200转,54就是5400转。
 
3)      第二组为2个数字组成,表示本系列产品最大容量,60表示60GB100G以上的10表示10025表示250G
 
4)      第三组由2个数字组成,表示本硬盘容量,单位为10G,上图中的16就表示容量为160G
 
5)      第四组由1个或两个字母组成,表示硬盘的代号。现在的7K250系列是由字母D来表示。
 
6)      第五组由2个字母组成,表示硬盘的接口类型,有LALP两种。其分别代表为SerialATA接口和UltraATA100接口。
 
7)    第六组由1个数字组成,表示硬盘的厚度。
 
8)      第七组由1个数字组成,表示硬盘的缓存容量,8就是为8M.
 
9)      第八组由1个数字组成,是硬盘的保留值,目前暂时为数字0
 
      这样我们就可以看出,上面的是一款日立T7K250系列,SATA接口,7200转,缓存为8M160G硬盘。

IC25N080ATMR04-0  

 
1)        ICIBM
2)        25代表硬盘外形尺寸。例如“35”表示3.5英寸硬盘,“25”表示2.5英寸硬盘。  
 
3)        N:硬盘厚度,N代表9.5mm0.37英寸),T代表12.5mm0.49英寸),L代表1英寸
4)        080代表硬盘容量,单位为GB。例如“080”表示该硬盘容量为80GB。这一点同迈拓硬盘类似。  
 
5)        AT代表硬盘接口类型,对桌面产品来说,“AV”代表普通的Ultra ATA接口。AT代表ATA
6)        MR代表硬盘产品系列型号。例如“ER”表示Deskstar 60GXP系列,“VA”表示Deskstar 120GXP系列,“V2”表示Deskstar 180GXP系列MR=80GNCS=40GN/40GNX/60GHDA=30GN。其中后缀:(GN4200转,9.5mm)(GNX5400转,9.5mm
7)       04代表硬盘转速。例如“04”代表4200/分,“05”代表5400/分,“07”代表7200/分,“10”代表10000/分,“15”代表15000/分。  
 
DK23FB-60  
 
1)        DK23:系列名称
2)        FF表示第6代,A-E依此类推
3)        B5400转,A的话代表4200
4)        60:本块硬盘容量(GB               

                MHV2080AH
  MH:前缀名

  V:系列编号
  22.5英寸
  080:容量(GB
  AATA,若为B则为 SATA
  H5400转,若为T则为4200

Toshiba  

MK1233GAS
  MK:前缀名

  12:容量, 120GB
  33G:不知

  A:接口为ATASSATA接口
  S:转速和缓存,S表示4200转,X的话那就是5400转加16M缓存


7.   三星Samsung
 

目前市场上最好分辨的就是三星硬盘了,各种关键数据全部标识在盘体上,估计只要是买硬盘的都会看懂。
500)this.width=500;/" alt=/"/" border=/"0/" height=/"266/" width=/"447/">
    如上图硬盘为容量160G7200转缓存为8M。这也充分体现了三星硬盘人性化的一面,能够为不懂的消费者提供一目了然的辨别方式,非常难得。
    现在市面上的三星硬盘主要分为“P”“V”两大类。因为产品线并不长,所以相对于其它品牌来说很容易分辨。其硬盘编号的形式为: <1> <2> <34> <5> <6> <7>
 
<1>代表硬盘产品系列。“S”代表了“SpinPoint”,而目前市面上的三星硬盘都是SpinPoint系列。 
  <2>代表不同硬盘转速的产品系列。“V”代表5400/分的V系列,而“P”则代表了7200/分的P系列。 
  <34>代表硬盘容量,其单位是GB;如果系列中可能出现超过100GB的产品,则采用三位数的标志,如“080120”,但如果缓存是8MB,它们的标志大多会变成“081121” 
  <5>表示采用不同技术的相同容量产品的编号序列,它们的区别通常在单碟、缓存容量或单/双头设计上。一般来说“0”代表2MB缓存,“1”代表8MB缓存,但也有例外。 
  <6>代表硬盘磁头数。我们同样可以据此推算出其硬盘的单碟容量。
  <7>代表硬盘接口类型。“D”代表了早期的Ultra ATA66接口,H代表Ultra ATA 100接口,“N”代表Ultra ATA33接口,“C”代表Serial ATA150即串行ATA 1.0接口。 
 
举个例子,“SP1614C”的硬盘编号就代表这是三星出品的SpinPoint家族7200/分的P系列硬盘产品,其硬盘总容量为160GB,缓存 容量为8MB,硬盘磁头数为4,采用Serial ATA150即串行ATA 1.0接口。硬盘单碟容量为160GB×2/4=80GB
 
  至于最新的三星黑匣子硬盘,其编号原则和以前一样,只是采用了独特的铁盒包装,大家选购时注意鉴别。

8. 迈拓Maxtor
 

以前的迈拓硬盘一直采用的是7位字符编号。不过从金钻系列DiamondmaxPlus9开始,迈拓在原有的硬盘编号后面又添加了6位字符,从而将硬盘编号由原来的7位增加到了13位。但是在目前来说,真正对我们辨识硬盘有用的也就是前面的7位编号。xxxxxxx三部分。
500)this.width=500;/" alt=/"/" border=/"0/">
1)        最前面的由1个数字和1个字母组成,表示硬盘的型号为Diamondmax Plus9,也就是我们常说的金钻9,现在已经到金钻10了。
2)       第二组由23个数字组成,表示硬盘的容量,单位为G200就表示容量为200G
3)        第三组由两个个字母组成,表示缓存容量、接口及主轴马达类型,MO表示为SATA接口,8MB缓存并使用液态轴承马达,PO表示为Ultra ATA133接口,8MB缓存并使用液态轴承马达。
4)     第四组表示磁头数。我们可以用硬盘单碟容量=硬盘总容量/(磁头数/2很容易地推算出硬盘的单碟容量。但是从金钻系列Diamondmax Plus 9开始,该数字却变成了“0”。不过因为我们已经知道金钻系列Diamondmax Plus 9是单碟80GB的产品,所以这并不妨碍我们辨识。
这样我们就可以看出,上面的硬盘为迈拓金钻9系列,SATA接口,8M缓存,容量为200G

centos 5 rpmforge

smailes 转到全文

rpmforge

Download the rpmforge-release package. Choose one of the two links below, depending on your architecture. If you are unsure of which one to use you can check your architecture with the command uname -i
(You can find a complete list of rpmforge-release package packages at [url]http://dag.wieers.com/packages/rpmforge-release/[/url] but it is recommended that you use one of the two listed above).

RAID详解

smailes 转到全文
RAID详解
RAID全称为Redundant Array of Disks,是“独立磁盘冗余阵列”(最初为“廉价磁盘冗余阵列”)的缩略语。1987年由Patterson,Gibson和Katz在加州大学伯克利分院的一篇文章中定义。RAID阵列技术允许将一系列磁盘分组,以实现为数据保护而必需的数据冗余,以及为提高读写性能而形成的数据条带分布。RAID最初用于高端服务器市场,不过随着计算机技术的快速发展,RAID技术已经渗透到计算机遍布的各个领域。如今,在家用电脑主板中,RAID控制芯片也随处可见。
一般,RAID系统可以存在于各种接口界面,就我们现时来说,PATA、SATA以及SCSI均有相应的硬盘可以组成RAID。随着Intel 865/875系列芯片组的发布,家用市场的硬盘接口开始转向SATA,而RAID方式也将从PATA过渡到SATA。
RAID技术伴随着人们的使用过程,经历了一系列的变迁与发展。而在家用市场上,我们一般只能看到RAID 0、RAID 1以及RAID 0+1这几种磁盘阵列方式。不过从DFI Lanparty主板的诞生开始,我们又迎来了第四种磁盘阵列方式,那就是RAID 1.5。
从实际应用来说,家用RAID的组建大多数情况是为了进一步提高磁盘的读写性能,而数据的备份可由其他方式达到(如刻录)。所以,在只有2个硬盘的情况下,人们愿意尝试的以RAID 0为主,不过RAID 1.5的诞生让我们改变了这一理念。究竟这两种相对廉价的磁盘阵列方式具有何等的性能?让我们来为大家揭晓。
RAID 0:
RAID 0使用一种称为“条带”(striping)的技术把数据分布到各个磁盘上。在那里每个“条带”被分散到连续“块”(block)上,数据被分成从512 字节到数兆字节的若干块后,再交替写到磁盘中。第1块被写到磁盘1中,第2块被写到磁盘2中,如此类推。当系统到达阵列中的最后一个磁盘时,就写到磁盘1 的下一分段,如此下去。

分割数据可以将I/O负载平均分配到所有的驱动器中。由于驱动器可以同时写或读,使得性能显著提高。但是,它却没有数据保护能力。如果一个磁盘出现故障,那么数据就会全盘丢失。因此,RAID 0不适用于关键任务环境,但是,它却非常适合于视频、图象的制作和编辑。
RAID 1:
RAID 1也被称为镜象,因为一个磁盘上的数据被完全复制到另一个磁盘上。如果一个磁盘的数据发生错误,或者硬盘出现了坏道,那么另一个硬盘可以补救回磁盘故障而造成的数据损失和系统中断。另外,RAID 1还可以实现双工——即可以复制整个控制器,这样在磁盘故障或控制器故障发生时,您的数据都可以得到保护。镜象和双工的缺点是需要多出一倍数量的驱动器来复制数据,但系统的读写性能并不会由此而提高,这可能是一笔不小的开支。RAID l可以由软件或硬件方式实现。

RAID 2:
RAID 2是为大型机和超级计算机开发的带海明码校验磁盘阵列。磁盘驱动器组中的第1个、第2个、第4个……第2的n次幂个磁盘驱动器是专门的校验盘,用于校验和纠错。如下图:七个磁盘驱动器组建的RAID 2,第1、2、4个磁盘驱动器(红色)是纠错盘,其余的(紫色)用于存放数据。RAID 2对大数据量的读写具有极高的性能,但少量数据的读写时性能反而不好,所以RAID 2实际使用较少。

由于RAID 2的特殊性,只要我们使用的磁盘驱动器越多,校验盘在其中占的百分比越少。如果希望达到比较理想的速度和较好的磁盘利用率,那最好可以增加保存校验码 ECC码的硬盘,但是这就要付出更多硬盘的购买成本,来确保数据冗余。对于控制器的设计来说,它比下面所说的RAID 3,4或5要简单。
RAID 3:
RAID 3,即带有专用奇偶位(parity)的条带。每个条带片上都有相当于一“块”那么大的空间用来存储冗余信息,即奇偶位。奇偶位是编码信息,如果某个磁盘的数据有误,或者磁盘发生故障,就可以用它来恢复数据。在数据密集型环境或单一用户环境中,组建RAID 3对访问较长的连续记录有利,不过同RAID 2一样,访问较短记录时,性能会有所下降。

RAID 4:
RAID 4是带奇偶校验码的独立磁盘结构。它和RAID 3很相似,不同的是RAID 4对数据的访问是按数据块进行的。RAID 3是一次一横条,而RAID 4一次一竖条。所以RAID 3常须访问阵列中所有的硬盘驱动器,而RAID 4只须访问有用的硬盘驱动器。这样读数据的速度大大提高了,但在写数据方面,需将从数据硬盘驱动器和校验硬盘驱动器中恢复出的旧数据与新数据校验,然后再将更新后的数据和检验位写入硬盘驱动器,所以处理时间较RAID 3长。

RAID 5:
RAID 5也被叫做带分布式奇偶位的条带。每个条带上都有相当于一个“块”那么大的地方被用来存放奇偶位。与RAID 3不同的是,RAID 5把奇偶位信息也分布在所有的磁盘上,而并非一个磁盘上,大大减轻了奇偶校验盘的负担。尽管有一些容量上的损失,RAID 5却能提供较为完美的整体性能,因而也是被广泛应用的一种磁盘阵列方案。它适合于输入/输出密集、高读/写比率的应用程序,如事务处理等。

为了具有RAID 5级的冗余度,我们需要至少三个磁盘组成的磁盘阵列。RAID 5可以通过磁盘阵列控制器硬件实现,也可以通过某些网络操作系统软件实现。
RAID 6:
RAID 6是带有两种分布存储的奇偶校验码的独立磁盘结构。它使用了分配在不同的磁盘上的第二种奇偶校验来实现增强型的RAID 5。它能承受多个驱动器同时出现故障,但是,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了系统的负载较重,大大降低整体磁盘性能,而且,系统需要一个极为复杂的控制器。当然,由于引入了第二种奇偶校验值,我们所以需要的是N+2个磁盘。

RAID 7:
RAID 7自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID 7存储计算机操作系统(Storage Computer Operating System)是一套实时事件驱动操作系统,主要用来进行系统初始化和安排RAID 7磁盘阵列的所有数据传输,并把它们转换到相应的物理存储驱动器上。通过Storage Computer Operating System来设定和控制读写速度,可使主机I/O传递性能达到最佳。如果一个磁盘出现故障,还可自动执行恢复操作,并可管理备份磁盘的重建过程。

RAID 7采用的是非同步访问方式,极大地减轻了数据写瓶颈,提高了I/O速度。(所谓非同步访问,即RAID 7的每个I/O接口都有一条专用的高速通道,作为数据或控制信息的流通路径,因此可独立地控制自身系统中每个磁盘的数据存取。)如果RAID 7有N个磁盘,那么除去一个校验盘(用作冗余计算)外,可同时处理N-1个主机系统随机发出的读/写指令,从而显著地改善了I/O应用。RAID 7系统内置实时操作系统还可自动对主机发送过来的读/写指令进行优化处理,以智能化方式将可能被读取的数据预先读入快速缓存中,从而大大减少了磁头的转动次数,提高了I/O速度。RAID 7可帮助用户有效地管理日益庞大的数据存储系统,并使系统的运行效率提高至少一倍以上,满足了各类用户的不同需求。
RAID 10(RAID 0+1):
RAID 10,也被称为镜象阵列条带,现在我们一般称它为RAID 0+1。RAID 10(RAID 0+1)提供100%的数据冗余,支持更大的卷尺寸。组建RAID 10(RAID 0+1)需要4个磁盘,其中两个为条带数据分布,提供了RAID 0的读写性能,而另外两个则为前面两个硬盘的镜像,保证了数据的完整备份。

RAID 30:
RAID 30也被称为专用奇偶位阵列条带。它具有RAID 0和RAID 3的特性,由两组RAID 3的磁盘(每组3个磁盘)组成阵列,使用专用奇偶位,而这两种磁盘再组成一个RAID 0的阵列,实现跨磁盘抽取数据。RAID 30提供容错能力,并支持更大的卷尺寸。象RAID 10一样,RAID 30也提供高可靠性,因为即使有两个物理磁盘驱动器失效(每个阵列中一个),数据仍然可用。


RAID 30最小要求有6个驱动器,它最适合非交互的应用程序,如视频流、图形和图象处理等。这些应用程序顺序处理大型文件,而且要求高可用性和高速度。
RAID 50:
RAID 50被称为分布奇偶位阵列条带。同RAID 30相仿的,它具有RAID 5和RAID 0的共同特性。它由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分布式奇偶位,而两组硬盘再组建成RAID 0,实验跨磁盘抽取数据。RAID 50提供可靠的数据存储和优秀的整体性能,并支持更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),数据也可以顺利恢复过来。

RAID 50最少需要6个驱动器,它最适合需要高可靠性存储、高读取速度、高数据传输性能的应用。这些应用包括事务处理和有许多用户存取小文件的办公应用程序。
RAID 53:
RAID 53称为高效数据传送磁盘结构。结构的实施同Level 0数据条阵列,其中,每一段都是一个RAID 3阵列。它的冗余与容错能力同RAID 3。这对需要具有高数据传输率的RAID 3配置的系统有益,但是它价格昂贵、效率偏低。

RAID 1.5:
RAID 1.5是一个新生的磁盘阵列方式,它具有RAID 0+1的特性,而不同的是,它的实现只需要2个硬盘。从表面上来看,组建RAID 1.5后的磁盘,两个都具有相同的数据。当然,RAID 1.5也是一种不能完全利用磁盘空间的磁盘阵列模式,因此,两个80GB的硬盘在组建RAID 1.5后,和RAID 1是一样的,即只有80GB的实际使用空间,另外80GB是它的备份数据。如果把两个硬盘分开,分别把他们运行在原系统,也是畅通无阻的。但通过实际应用,我们发现如果两个硬盘在分开运行后,其数据的轻微改变都会引起再次重组后的磁盘阵列,没法实现完全的数据恢复,而是以数据较少的磁盘为准。

既然RAID 1.5和RAID 1具有非常相似的效果,那么它是怎么实验RAID 0的条带式读写操作的呢?到目前为止,我们还没有确实的材料证明下面的假想:就是磁盘阵列控制芯片具有高级的控制功能,可以让两个磁盘同时以条带的方式记录相同的数据,但需要读取的时候,控制器却可以分辨出需要读取的程序条带,然后分别从不同的硬盘中读取不同的条带,以达到提高性能的RAID 0效果。
总结:
RAID是一种具有悠久的历史磁盘阵列技术。它的诞生不光是为了保证我们的重要数据在冗余的磁盘阵列中得以安全长久的储存下去,还是突破瓶颈、提升性能的重要手段。至今,RAID技术已经应用于计算机所渗透到的各个领域中,而家用计算机市场,这个本来不为RAID研发人员所考虑的市场,也已经具有好几年的发展历程。
在过去,PATA硬盘在家用市场组建的RAID通常仅有RAID 0、RAID 1和RAID 0+1,不过今天我们不但亲眼目睹了RAID 1.5的诞生,还感受到RAID 1.5的独特魅力。和即将成为主流的SATA硬盘组建的RAID 0系统相比,PATA硬盘组建的RAID 1.5不显一点的乏力,相反,RAID 1.5就仿佛是PATA硬盘提高性能和确保数据安全的最有效方式。

centos 5 上安装skype 差点要我命

smailes 转到全文
工作的机器安装centos 5,想安装个skype,怎么都安装不上,缺包,在网上也没有最终的解决答案,提示缺的包在centos 5的安装光盘中都可以找到,
还缺两个,
libsigc可以根据下一个连接下载
[url]http://rpm2html.osmirror.nl/fedora/extras/3/i386/libsigc++20-2.0.6-1.i386.html[/url]

qt4-x11的安装程序centos 5 不提供,也不能yum,没办法我就卸载了qt4的所有包,到fc7的镜像站点下载
/"[/" qt4-4.2.3-8.fc7.i386.rpm

/"[/" qt4-x11-4.2.3-8.fc7.i386.rpm


[url]http://ftp.crc.dk/fedora/linux/releases/7/Fedora/i386/os/Fedora/[/url]

有下载安装了[url]ftp://rpmfind.net/linux/fedora/extras/6/i386/nas-1.9a-3.fc6.i386.rpm[/url]

再安装skype就可以正常安装了

Redhat Linux操作系统下常用服务介绍

smailes 转到全文
aep1000 挂载或卸载 aep1000/2000 协处理器驱动的。
anacron 不过可以在指定时间没有开机无法完成任务的情况下另寻时间完成任务。
Apmd 高级电源管理能源管理服务,可以为你监控电池
Arpwatch 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库
Atd 用于at和batch的服务atd类似cron,提供在指定的时间做指定的事的服务,就象计划任务
Autofs 自动安装管理进程automount,与NFS相关,依赖于NIS(autofs
自动挂载/卸载文件系统服务,可以自动挂载你想访问但还为挂载的文件系统,自动卸载长期不访问的文件系统。)
bcm5820
提供对CryptoNetX SSL Accelerator 适配器(用来处理SSL密钥的设备)的支持。
Crond 为Linux下自动安排的进程提供运行服务.
Gpm 提供字符模式下对鼠标的支持.
Cups UNIX通用打印系统
cups-lpd 支持用LPD协议跑CUPS
daytime 获取并显示系统时间用的
daytime-udp udp版的daytime
echo 输出字符到客户端的
finger 用来查询系统内用户信息
firstboot 故名思意,安装完后第一次启动时跑的脚本,在第二次启动就不在运行了
imap 为邮件提供imap服务
imaps 为客户端提供SSL加密后的imap服务
ipop2 提供POP2服务,什么是pop不用介绍了吧
ipop3 pop3大名鼎鼎的pop3不用介绍了吧
iptables 2.4内核默认的防火墙
irda 红外线传输支持
netfs 提供网络文件系统(NSF,SMB,NCP)挂载/卸载的。
Keytable 用于装载键盘镜像
Kudzu 硬件探测器
Netfs 安装和卸载NFS、SAMBA和NETWARE网络文件系统
Network 激活已配置网络接口的脚本程序
Nfslock NFS锁定
Pcmcia 安装pcmcia卡(一般用于笔记本电脑)
Sshd OpenSSH服务器
Syslog 一个让系统引导时启动syslog和klogd系统日志守候里程的脚本
Xfs Xwindow字型服务器,为本地和远程X服务器提供字型集
Xinetd 支持多种网络服务的核心守候程序。
Kudzu 检测硬件变化的
Mysqld Mysql database server
Named BIND域名服务
Netfs 提供网络文件系统(NSF,SMB,NCP)挂载/卸载的
Network 激活/关闭网络设备的
Nfs (NFS)network filesystem 服务
Nfslock 提供一种NFS的权限设置
Ntalk 可以让不同用户在系统上一起聊天的
Ntpd 网络时间协议NTP(Network Time Protocol)和网络上同步时间用的
Pops 提供SSL加密的pop3
Portmap 端口映射,很多网络服务需要此服务
Rexec 远程执行命令时提供用户验证
Rhnsd redhat的网络服务,可以自动检查软件的升级
rlogin 提供远程登录服务
rsh 远程执行linux命令服务
rsyn 高效的网络远程备份和镜象工具
sendmail 赫赫有名的邮件服务器,(用来发匿信的好东东:) )
servers监听被激活的服务用的
sgi_fam 检测文件变化的
smb 提供samba服务的
snmp 简单网络管理服务
snmptrapd 也是网络管理的
squid web代理服务器
sshd 提供sshd登录
svscan daemontools 的一部分,用来管理后台服务
syslogd 日志服务,很重要的服务
tux 集成内核的web服务工具
vsftpd 一个ftp服务端,以安全著称
winbind smb服务中解析来自NT服务器名字的
xinetd 超级服务器的Inetd的替代者,提供很多服务,非常重要。
Yppasswdd nis服务中提供NIS用户验证服务
random 当系统需要时会,产生随机数。关闭对大多数系统没什么大的影响,服务器不要轻易关闭。

kernel :CPU1: Running in modulated clock mode 临时解决

smailes 转到全文
kernel :CPU1: Running in modulated clock mode
kernel :CPU1: Temperature above threshold
服务器CPU工作温度过高.
查询资料后得知是 2.6 内核的相应阀值过低造成了这种状况。
vi /etc/syslog.conf
注释掉 *.emerg 这一行
/etc/init.d/syslog restart
就不会出现 CPU 温度过高的警告了。不知道会 不会出现其他错误。。

linux 下修改日期和时间

smailes 转到全文
我们一般使用“date -s”命令来修改系统时间。比如将系统时间设定成1996年6月10日的命令如下。
#date -s 06/10/96
将系统时间设定成下午1点12分0秒的命令如下。
#date -s 13:12:00
---- 注意,这里说的是系统时间,是linux由操作系统维护的。
---- 在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性, Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行date -s后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。
---- #clock -w
---- 这个命令强制把系统时间写入CMOS。

用dd创建一个指定大小的空文件

smailes 转到全文
 
 
 
dd if=/dev/zero of=bigfile bs=1024k count=1 seek=10000
 
速度接近内存速度

备份系统的几种方式

smailes 转到全文

备份系统

这里介绍几种备份方式:

tar:

特点

1、保留权限
2、适合备份整个目录
3、可以选择不同的压缩方式
4、如果选择不压缩还能实现增量备份,部份还原,参考man tar

A备份

如果要备份/home这个目录,备份文件保存在/backup(可以把一个独立的分区挂载在这里),则如下命令:使用无压缩的,速度很快
 tar -cpf /backup/home.bak.tar /home
使用gzip压缩的,速度一般,通常使用这个
 tar -cpzf /backup/home.bak.tar.gz /home
使用bzip2压缩的,速度慢,但比gzip的版本小约5%。
 tar -cpjf /hackup/home.bak.tar.bz2 /home
其中第二个参数介绍如下:
c新建
p保留权限
z用gzip处理
j用bzip2处理
f后紧跟文件名
也可以加上v使备份过程显示在终端上。

B还原

 tar --overwrite -xpf /backup/home.bak.tar -C /

k3b(光盘)

特点

一切都自己来做,对文件的选择性更好

备份、还原

没什么好说的了,使用k3b自己做光盘,自己负责把要还原的文件还原。

dd

特点

1、对块进行操作,能备份整个硬盘(包括分区表、MBR,其他Linux不能很好支持的文件系统)
2、可以进行压缩(麻烦一点)
3、由于是备份整个硬盘,文件系统上没有使用的“空白”空间也会被保存起来,备份文件比较大

备份

备份硬盘sda,放到/backup(/backup挂载在其他硬盘如sdb)
1、最简单的,无压缩:
 dd if=/dev/sda of=/backup/sda.dd
2、用gzip压缩
 dd if=/dev/sda |gzip -c# >/backup/sda.dd.gz
其中#用数字1-9代替,分别代表最快-最小 3、用bzip2压缩
 dd if=/dev/sda |bzip2 -c# >/backup/sda.dd.bz2
其中#用数字1-9代替,分别代表最快-最小
如果要看进度可以给dd发送信号SIGUSR1:
 killall -s SIGUSR1 dd

还原

还原的目的盘必须和原来大小一样,不然后果很严重……
1、无压缩
 dd if=/backup/sda.dd of=/dev/sda
2、gzip
 gzip -dc /backup/sda.dd.gz |dd of=/dev/sda
3、bzip
 bzip2 -dc /backup/sda.dd.bz2 |dd of=/dev/sda

ghost

ghost是运行在dos下的,推荐使用 无为DOS工具箱,下载页面 [url]http://www.linux-ren.org/modules/softstorage/show.php?content=5[/url],一个类似win下dos工具箱的东东,在linux下使用,1.包含了ghost,可以备份ext3分区 2.使用msdos7.1 3.加入关机、重启功能
 
 
 
 
 

用dd命令去备份文件指定的部分

smailes 转到全文
举例说明:假如我有一个文件abc.gz,大小为83456k,我想用dd命令实现如下备份结果:首先将备份分成三个部分,第一部分为备份文件abc.gz的前10000k,第二部分为中间的70000k,最后备份后面的3456k.

备份方法如下三条命令:
dd if=abc.gz of=abc.gz.bak1 bs=1k count=10000
dd if=abc.gz of=abc.gz.bak2 bs=1k skip=10000 count=70000
dd if=abc.gz of=abc.gz.bak3 bs=1k skip=80000

恢复方法如下:
dd if=abc.gz.bak1 of=abc.gz
dd if=abc.gz.bak2 of=abc.gz bs=1k seek=10000
dd if=abc.gz.bak3 of=abc.gz bs=1k seek=80000

这时你查看一下恢复的文件将和你原来的文件一模一样,说明备份成功!

***说明一下:***
bs=xxx这个选项是指你要备份时一次性创建的块大小,而count=xxx则是指从备份的开头开始算总共备份多少块.
也就是说假如你的bs=3k而count=5,则说明你一个块为3k,总共5个块,则备份了原文件的15k(3k*5=15k).
而skip=xxx则是在备份时对if后面的部分也就是原文件跳过多少块再开始备份,相反seek=xxx则是在备份时对of后面的部分也就是目标文件跳过多少块再开始写。

Linux一句话精彩问答

smailes 转到全文
  1 系统设置篇

  1001 修改主机名(陈绪)

  vi /etc/sysconfig/network,修改HOSTNAME一行为/"HOSTNAME=主机名/"(没有这行?那就添加这一行吧),然后运行命令/"hostname 主机名/"。一般还要修改/etc/hosts文件中的主机名。这样,无论你是否重启,主机名都修改成功

  1002 修改linux启动方式(文本方式或xwindow方式)(陈绪)

  vi /etc/inittab,找到id:x:initdefault:一行,x=3为文本方式 x=5为xwindow方式,重启机器即可生效

  1003 linux的自动升级更新问题(hutuworm,NetDC,陈绪)

  对于redhat,在[url]www.redhat.com/corp/support/errata/[/url]找到补丁,6.1以后的版本带有一个工具up2date,它能够测定哪些rpm包需要升级,然后自动从redhat的站点下载并完成安装。

  升级除kernel外的rpm: up2date –u

  升级包括kernel在内的rpm: up2date -u –f

  Gentoo升级方法

  更新portage tree: emerge –sync

  更新/安装软件包: emerge [软件包名] (如安装vim: emerge vim)

  Debian跟别的发行版还是有很大的差别的,用Debian做服务器维护更加方便;红帽的升级其实挺麻烦的,当然,如果你交钱给红帽的话,服务是会不一样的。

  Debian下升级软件:

  apt-get update

  apt-get upgrade

  前提:配置好网络和/etc/apt/sources.list,也可以用apt-setup设置。

  1004 windows下查看linux分区的软件(陈绪,hutuworm)

  Paragon.Ext2FS.Anywhere.2.5.rar和explore2fs-1.00-pre4.zip

  现在不少Linux发行版安装时缺省基于LVM建分区,所以explore2fs也与时俱进地开始支持LVM2:

  [url]http://www.chrysocome.net/downloads/explore2fs-1.08beta9.zip[/url]

  1005 mount用法(sakulagi,sxsfxx,aptkevin)

  fat32分区 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom

  ntfs分区 mount -t ntfs -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom

  iso文件 mount -o loop /abc.iso /mnt/cdrom

  软盘 mount /dev/fd0 /mnt/floppy

  usb mount /dev/sda1 /mnt/cdrom

  cd光驱 mount -t iso9660 -o iocharset=cp936,ro /dev/cdrom /mnt/cdrom

  dvd光驱 mount -t iso9660 -o iocharset=cp936,ro /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom

  注意:dvd的格式一般为iso9660或udf之一

  在有scsi硬盘的计算机上,应该先用fdisk -l /dev/sd? 来看看到底usb闪存盘是在哪个设备下(通常会是sdb1或者sdc1)。

  所有/etc/fstab内容 mount –a,此命令还可以指定文件格式/"-t 格式/", 格式可以为vfat, ext2, ext3等

  例如,要自动将windows的d盘挂到/mnt/d上,用vi打开/etc/fstab,加入以下一行

  /dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0

  注意,先得手工建立一个/mnt/d目录

  1006 访问远程共享的目录(陈绪)

  将如下的行放到/etc/fstab中:

  //ip/share1 /mnt/d smbfs defaults,auto,username=name,password= pass 0 0

  其中ip是远程机器的ip地址,是share1该机器共享目录的共享名,/mnt/d是要将该分区mount到本地linux的目录,name和pass是可以访问该共享目录的用户名和密码。

  1007.a 删除名为-a的文件(陈绪)

  1 rm ./-a

  2 rm -- -a,--告诉rm这是一个选项,具体参见getopt

  3 ls -i 列出inum,然后用find . -inum inum_of_thisfile -exec rm /'{}/' //;

  1007.b 删除名为//a的文件(陈绪)

  rm ////a

  1007.c 删除名字带的/和‘//0/'文件(陈绪)

  这些字符是正常文件系统所不允许的字符,但可能在文件名中产生,如unix下的nfs文件系统在Mac系统上使用

  1 把nfs文件系统在挂到不过滤/'//'字符的系统下,删除含特殊文件名的文件;

  2 将错误文件名的目录其它文件移走,ls -id 显示含该文件目录的inum,umount 文件系统,clri清除该目录的inum,fsck,mount,检查lost+found目录,将其中的文件更名。

  另外,可以通过windows ftp过去删除任何文件名的文件

  1007.d 删除名字带不可见字符的文件(陈绪)

  列出文件名并转储到文件:ls -l > del.sh

  然后编辑文件的内容加入rm命令使其内容成为删除上述文件的格式:

  vi del.sh

  rm -rf *******

  执行sh del.sh

  1007.e 删除文件大小为零的文件(陈绪)

  1 rm -i `find ./ -size 0`

  2 find ./ -size 0 -exec rm {} //;

  3 find ./ -size 0 | xargs rm -f &

  4 for file in * #自己定义需要删除的文件类型

  do

  if [ ! -s ${file} ]

  then

  rm ${file}

  echo /"rm $file Success!/"

  fi

  done

  1008 redhat设置滚轮鼠标(mc1011)

  1 进入x后,选择鼠标的配置,选择wheel mouse (ps/2)就可以了,如果鼠标表现异常,重启计算机即可;

  2 直接su, vi /etc/X11/XF86Config, 把PS/2改成ImPS/2

  1009 加装xwindow(陈绪)

  用linux光盘启动,选择升级,然后单独选择包,安装即可

  1010 删除linux分区(陈绪)

  1 做一张partition magic的启动软盘,启动后删除;

  2 用win2000的启动光盘启动,然后删除

  1011 如何退出man(陈绪)

  q

  1012 不编译内核,mount ntfs分区(陈绪,hutuworm)

  找到对应内核版本(uname -a)的ntfsrpm,安装即可。

  以原装rh8为例,未升级或编译内核

  1. 上google.com搜索并下载 kernel-ntfs-2.4.18-14.i686.rpm

  2. rpm -ivh kernel-ntfs-2.4.18-14.i686.rpm

  3. mkdir /mnt/c

  4. mount -t ntfs /dev/hda1 /mnt/c

  或

  Read only: [url]http://linux-ntfs.sourceforge.net/[/url]

  Read/Write: [url]http://www.jankratochvil.net/project/captive/[/url]

  1013 tar分卷压缩和合并(WongMokin,Waker)

  以每卷500M为例

  tar分卷压缩:tar cvzpf - somedir | split -d -b 500m (-d不是split的选项,是shell的选项,表示将tar命令的输出作为split的输入)

  tar多卷合并:cat x* > mytarfile.tar.gz

  1014 使用lilo/grub时找回忘记了的root口令(陈绪)

  1.在系统进入单用户状态,直接用passwd root去更改;

  2.用安装光盘引导系统,进入linux rescue状态,将原来/分区挂接上来,命令如下:

  cd /mnt

  mkdir hd

  mount -t auto /dev/hdaX(原来分区所在的分区号) hd

  cd hd

  chroot ./

  passwd root

  这样可以搞定;

  3.将本机的硬盘拿下来,挂到其他的linux系统上,采用的办法与第二种相同

  以rh8为例,演示第1种方法如下:

  一. lilo

  1 在出现 lilo: 提示时键入 linux single

  画面显示 lilo: linux single

  2 回车可直接进入linux命令行

  3 vi /etc/shadow

  将第一行,即以root开头的一行中root:后和下一个:前的内容删除,

  第一行将类似于

  root::......

  保存

  4 reboot重启,root密码为空

  二. grub

  1 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos),然后按e键;

  2 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键;

  3 修改你现在见到的命令行,加入single,结果如下:

  kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

  4 回车返回,然后按b键启动,即可直接进入linux命令行

  5 vi /etc/shadow

  将第一行,即以root开头的一行中root:后和下一个:前的内容删除,

  第一行将类似于

  root::......

  保存

  6 reboot重启,root密码为空

  1015 使ctrl+alt+del失效(陈绪)

  vi /etc/inittab

  将ca::ctrlaltdel:/sbin/shutdown -t3 -r now这行注释掉

  1016 查看redhat的版本号(hutuworm)

  cat /proc/version或cat /etc/redhat-release或cat /etc/issue

  1017 查文件属于哪个rpm(无双)

  上[url]www.rpmfind.net[/url]上搜,或者rpm -qf 文件名得到

  1018 将man或info的信息存为文本文件(陈绪)

  以rpm命令为例:

  man rpm | col -b > rpm.txt

  info rpm -o rpm.txt –s

  1019 利用两个现存文件,生成一个新的文件(陈绪)

  1. 取出两个文件的并集(重复的行只保留一份)

  cat file1 file2 | sort | uniq

  2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)

  cat file1 file2 | sort | uniq -d

  3. 删除交集,留下其他的行

  cat file1 file2 | sort | uniq –u

  1020 设置com1口,让超级终端通过com1口进行登录(陈绪)

  第一步:确认有/sbin/agetty,编辑/etc/inittab,添加

  7:2345:respawn:/sbin/agetty /dev/ttyS0 9600

  9600bps是因为连路由器时缺省一般都是这种速率,也可以设成

  19200、38400、57600、115200

  第二步:修改/etc/securetty,添加一行:ttyS0,确保root用户能登录

  第三步:重启机器,就可以拔掉鼠标键盘显示器(启动时最好还是要看看输出信息)了

  1021 删除内有文件和子目录的目录(陈绪)

  rm -rf 目录名

  1022 查看系统信息(陈绪)

  cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)

  cat /proc/interrupts - 中断

  cat /proc/ioports - 设备IO端口

  cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)

  cat /proc/partitions - 所有设备的所有分区

  cat /proc/pci - PCI设备的信息

  cat /proc/swaps - 所有Swap分区的信息

  cat /proc/version - Linux的版本号 相当于 uname -r

  uname -a - 看系统内核等信息

  1023 去掉多余的回车符(陈绪)

  sed /'s/^M///' test.sh > back.sh, 注意^M是敲ctrl_v ctrl-m得到的

  或者 dos2unix test.sh

  1024 切换X桌面(lnx3000)

  如果你是以图形登录方式登录linux,那么点击登录界面上的session(任务)即可以选择gnome和kde。如果你是以文本方式登录,那执行switchdesk gnome或switchdesk kde,然后再startx就可以进入gnome或kde。

  (或者vi ~/.xinitrc,添加或修改成exec gnome-session 或exec startkde,然后用startx启动x)

  1025 通用的声卡驱动程序(lnx3000)

  OSS [url]www.opensound.com[/url] / ALSA [url]www.alsa-project.org/[/url]

  1026 改变redhat的系统语言/字符集(beming,mc1011)

  修改 /etc/sysconfig/i18n 文件,如

  LANG=/"en_US/",xwindow会显示英文界面,

  LANG=/"zh_CN.GB18030/",xwindow会显示中文界面。

  还有一种方法

  cp /etc/sysconfig/i18n $HOME/.i18n

  vi $HOME/.i18n 文件,如

  LANG=/"en_US/",xwindow会显示英文界面,

  LANG=/"zh_CN.GB18030/",xwindow会显示中文界面。

  这样就可以改变个人的界面语言,而不影响别的用户

  1027 把屏幕设置为90列(陈绪)

  stty cols 90

  1028 使用md5sum文件(陈绪)

  md5sum isofile > hashfile

  md5sum文件与hashfile文件的内容比对,验证hash值是否一致

  md5sum –c hashfile

  1029 一次解压多个zip文件(陈绪)

  unzip /"*/",注意引号不能少

  1030 看pdf文件(陈绪)

  安装Acrobat Reader

  1031 查找权限位为S的文件(陈绪)

  find . -type f //( -perm -04000 -o -perm -02000 //) -exec ls -lg {} //;

  1032 装中文输入法(陈绪,hutuworm)

  以redhat8为例,xwindow及其终端下的不用说了,缺省就安装了,用ctrl-space呼出。

  现在讨论纯console,请到[url]http://zhcon.sourceforge.net/[/url]下载zhcon-0.2.1.tar.gz,放在任一目录中,tar xvfz zhcon-0.2.1.tar.gz,cd zhcon-0.2.1,./configure,make,make install。安装结束后,要使用zhcon,请运行zhcon,想退出,运行exit

  1033 把弹出的光盘收回来(beike)

  eject –t

  1034 cd光盘做成iso文件(弱智,grub007)

  cp /dev/cdrom /tmp/xxx.iso 或 dd if=/dev/cdrom of=/tmp/xxx.iso

  1035 快速观看开机的硬件检测(弱智)

  dmesg | more

  1036 查看硬盘的使用情况(陈绪)

  df -k 以K为单位显示

  df -h 以人性化单位显示,可以是b,k,m,g,t..

  1037 查看目录的大小(陈绪)

  du -sh 目录名

  -s 仅显示总计

  -h 以K、M、G为单位,提高信息的可读性。KB、MB、GB是以1024为换算单位

  -H 以1000为换算单位

  1038 查找或删除正在使用某文件的进程(wwwzc)

  fuser filename

  fuser -k filename

  1039 安装软件(陈绪)

  rpm -ivh aaa.rpm

  tar xvfz aaa.tar.gz; cd aaa; ./configure; make; make install

  1040 字符模式下设置和删除环境变量(陈绪)

  bash下

  设置:export 变量名=变量值

  删除:unset 变量名

  csh下

  设置:setenv 变量名 变量值

  删除:unsetenv 变量名

  1041 ls如何看到隐藏文件(即以.开头的文件)(双眼皮的猪)

  ls –a 或 l. (适用于redhat)

  1042 查看rpm中文件的安装位置(陈绪)

  rpm -qpl aaa.rpm

  1043 使用src.rpm编译出二进制rpm(陈绪)

  rpmbuild --rebuild *.src.rpm

  1044 设置vim中显示或不显示字体颜色(陈绪)

  首先确保安装了vim-enhanced包,然后,vi ~/.vimrc; 如果有syntax on,则显示颜色,syntax off,则不显示颜色

  1045 linux是实时还是分时操作系统(陈绪)

  标准的内核是分时的,但是有些厂商也改造出了实时linux系统

  1046 make bzImage -j的j是什么意思(wind521)

  -j主要是用在当你的系统硬件资源比较足的时候,用改选项可以加快编译速度,如-j 3

  1047 如何安装内核源码包(陈绪)

  把你光盘上的内核源码包装上即可,rpm -i *kernel*source*.rpm

  1048 修改系统时间(陈绪,laixi781211,hutuworm)

  1 设置你的时区: timeconfig里选择Asia/Shanghai (如果你位于GMT+8中国区域)

  2 与标准时间服务器校准: ntpdate time.nist.gov

  当然,如果你是李嘉诚,也可以跟自己的手表校准: date -s STRING (STRING格式见man date),修改后执行clock -w 写到CMOS

  date -s “2003-04-14 cst”,cst指时区,时间设定用date -s 18:10

  3. 将当前软件系统时间写入硬件时钟: hwclock –systohc

  1049 把命令结果传给一个变量(陈绪)

  aa=`grep _GQAdd $1`,注意这个`是反引号

  1050 linux怎么用这么多内存(陈绪)

  为了提高系统性能和不浪费内存,linux把多的内存做了cache,以提高io速度

  1051 /etc/fstab配置项里最后两个数字是什么意思(lnx3000)

  第一个叫fs_freq,用来决定哪一个文件系统需要执行dump操作(dump执行ext2的文件系统的备份操作),0就是不需要;

  第二个叫fs_passno,是系统重启时fsck程序检测磁盘(fsck检测和修复文件系统)的顺序号,0表示该文件系统不被检测,1是root文件系统,2是别的文件系统。fsck按序号检测磁盘

  1052 让用户的密码必须有一定的长度,并且符合复杂度(eapass)

  vi /etc/login.defs,修改PASS_MIN_LEN

  1053 翻译软件(陈绪,hutuworm)

  星际译王 xdict

  console下还有个dict工具,通过DICT协议到dict.org上查11本字典,例如:dict RTFM

  1054让显示器不休眠(陈绪)

  setterm -blank 0

  setterm -blank n (n为等待时间)

  1055 用dat查询昨天的日期(gadfly)

  date --date=/'yesterday/'

  1056 xwindow下如何截屏(陈绪)

  使用Ksnapshot或者gimp

  1057.a 解压小全(陈绪,noclouds,hmkart)

  tar -I或者bunzip2命令都可以解压.bz2文件

  tar xvfj example.tar.bz2

  tar xvfz example.tar.gz

  tar xvfz example.tgz

  tar xvf example.tar

  unzip example.zip

  rpm2cpio example.rpm │ cpio -div

  arp example.deb data.tar.gz | tar zxf -

  tar -jvxf some.bz,就是把tar的zvxf 改成jvxf

  zip/tar rh8下有一个图形界面的软件file-roller可以做这件事。另外可以用unzip *.zip解开zip文件,unrar *.rar解开rar文件,不过unrar一般系统不自带,要到网上下载:

  [url]http://www.linuxeden.com/download/softdetail.php?softid=883[/url]

  下载rar for Linux 3.2.0,解压开后make,然后可以用unrar e youfilename.rar解压rar文件

  Alien提供了.tgz, .rpm, .slp和.deb等压缩格式之间的相互转换:

  [url]http://sourceforge.net/projects/alien[/url]

  sEx提供了几乎所有可见的压缩格式的解压接口:

  [url]http://sourceforge.net/projects/sex[/url]

  1057.b tar的压缩和解压用法(platinum)

  解压:x

  压缩:c

  针对gz:z

  针对bz2:j

  用于显示:v

  解压实例:

  gz文件:tar xzvf xxx.tar.gz

  bz2文件:tar xjvf xxx.tar.bz2

  压缩实例:

  gz文件:tar czvf xxx.tar.gz /path

  bz2文件:tar cjvf xxx.tar.bz2 /path

  1058 在多级目录中查找某个文件的方法(青海湖)

  1 find /dir -name filename.ext

  2 du -a | grep filename.ext

  3 locate filename.ext

  1059 不让普通用户自己改密码(myxfc)

  [root@xin_fc etc]# chmod 511 /usr/bin/passwd

  又想让普通用户自己改密码

  [root@xin_fc etc]# chmod 4511 /usr/bin/passwd

  1060 显卡实在配不上怎么办(win_bigboy)

  去[url]http://www.redflag-linux.com/[/url],下了xfree86 4.3安装就可以了

  1061 超强删除格式化工具(弱智)

  比pqmagic更安全的、进行删除格式化的小工具:sfdisk.exe for msdos

  下载地址:[url]http://www.wushuang.net/soft/sfdisk.zip[/url]

  1062 如何让xmms播放列表里显示正确的中文(myxfc)

  -*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-

  把这个东西完全拷贝到你的字体里面

  操作方法:右键单击xmms播放工具的任何地方,会看到一个/"选项/",然后选择/"功能设定/",选择/"fonts/",然后把上面的字体完整的拷贝到/"播放清单/"和/"user x font/"中

  1063 redhat linux中播放mp3文件(hehhb)

  自带的xmms不能播放MP3(无声),要安装一个rpm包:rpm -ivh xmms-mp3-1.2.7-13.p.i386.rpm。打开xmms,ctl-p,在font栏中先在上半部的小框内打勾,再选择 “fixed(misc) gbk-0 13”号字体即可显示中文歌曲名。在音频输出插件中选择 /"开放音频系统驱动程序1.2.7 [lioOSS.so],即可正常播放MP3文件

  1064 安装中文字体(hehhb)

  先下载 [url]http://freshair.netchina.com.cn/~George/sm.sh[/url]文件,然后在微软网站下载SimSun18030.ttc([url]http://www.microsoft.com/china/windows2000/downloads/18030.asp[/url]),它是个msi文件,在mswindows中安装用的,装好后在windows目录下的fonts目录里面就可以找到它。把simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf拷贝到/usr/local/temp,然后下载的sm.sh文件也放到这个目录里,最后打开终端

  cd /usr/local/temp

  sh sm.sh

  1065 移动光标(陈绪)

  echo -e /'//033[20;10f/' 把光标移动到20行10列

  另外,如果还出现乱码,可以改为iocharset=utf8

  1066 在x下使用五笔和拼音,区位输入法(hmkart)

  从[url]http://www.fcitx.org/[/url]上下载fcitx的rpm包安装即可

  1067 ls重定向到多个文件(陈绪)

  ls | tee 1.txt 2.txt 3.txt .....

  1068 硬盘iso安装后怎么添加和删除rpm包(sakulagi)

  redhat-config-packages --isodir=<PATH>

  <PATH>为iso文件所在的目录

  1069 字符下控制音量(grub007,天外闲云)

  使用aumix。保存oss的音量大小的步骤为:

  1、用aumix将音量调整为你们满意的音量;

  2、用root用户进入/usr/lib/oss下(oss的默认安装目录);

  3、执行./savemixer ./mixer.map;

  4、ok,以后oss开启之后就是你在第一步调整的音量了。

  1170 echo典型应用(陈绪)

  echo /"abcdefg/" | perl -lne /'{$a = reverse($_); print $a;}/' 把一个字符串翻转

  echo bottle|rev 把一个字符串翻转

  1071 删除几天以前的所有东西(包括目录名和目录中的文件)(shally5)

  1 find . -ctime +3 -exec rm -rf {} //;

  2 find ./ -mtime +3 -print|xargs rm -f –r

  1072 用户的crontab在哪里(hutuworm)

  /var/spool/cron/下以用户名命名的文件中

  1073 以不同的用户身份运行程序(陈绪)

  su - username -c /"/path/to/command/"

  有时候需要运行特殊身份的程序, 就可以让su来做

  1074 不改变inode清空一个文件(陈绪)

  > filename

  1075 为什么OpenOffice中不能显示中文(allen1970)

  更改字体设置

  tools->options->font replacement

  Andale Sans UI -> simsun

  1076 如何备份Linux系统(Purge)

  Symantec Ghost 7.5以后的版本支持Ext3 native复制

  1077 linux上的partition magic(wwwzc)

  Linux下一个有用的分区工具:parted,可以实时修改分区大小, 删除和建立分区.

  1078 /proc/sys/sem中每项代表的意思(sakulagi)

  /proc/sys/sem内容如下

  250 32000 32 128

  这4个参数依次为SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop系统调用操作数),SEMMNI(系统信号量集最大数量)

  1079 Grub 引导菜单里 bigmem smp up 都是什么意思(lnx3000)

  smp: (symmetric multiple processor)对称多处理器模式

  bigmem: 支持1G 以上内存的优化内核

  up:(Uni processor) 单处理器的模式

  1080 oracle的安装程序为什么显示乱码(lnx3000)

  现在oracle的安装程序对中文的支持有问题,建议使用英文界面来安装,在执行runinstaller之前,执行:export LANG=C;export LC_ALL=C

  1081 linux下文件和目录的颜色代表的含义(sakulagi,弱智)

  蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;灰色表示其它文件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括block, char, fifo。

  用dircolors -p看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义

  1082 查看有多少活动httpd的脚本(陈绪)

  #!/bin/sh

  while (true)

  do

  pstree |grep /"*//[httpd//]$/"|sed /'s/.*-//([0-9][0-9]*//)//*//[httpd//]$///1//'

  sleep 3

  done

  1083 如何新增一块硬盘(好好先生)

  一、关机,物理连接硬盘

  如果是IDE硬盘,注意主、从盘的设置;如果是SCSI硬盘,注意选一个没被使用的ID号。

  二、开机,检查硬盘有没有被linux检测到

  dmesg |grep hd*(ide硬盘)

  dmesg |grep sd*(SCSI硬盘)

  或者 less /var/log/dmesg

  如果你没有检测到你的新硬盘,重启,检查连线,看看bios有没有认出它来。

  三、分区

  你可以使用fdisk,Sfdisk或者parted(GNU分区工具,linux下的partition magic)

  四、格式化

  mkfs

  五、修改fstab

  vi /etc/fstab

  1084 看分区的卷标(q1208c)

  e2label /dev/hdxn, where x=a,b,c,d....; n=1,2,3...

  1085 RH8,9中添加新的语言包(好好先生)

  一 8.0中

  1.放入第一张光盘;

  2.cd /mnt/cdrom/Redhat/RPMS;

  3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(简体中文,建议用tab键来补齐后面的部分,以免输入有误);

  4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁体中文)

  如果你还想装日文、韩文,安装第二张光盘上的ttfonts*.rpm.

  二 9.0中

  9.0不在第一张盘上,在第三张盘上.rpm包名分别为:

  ttfonts-zh_CN-2.12-1.noarch.rpm(简体中文)

  ttfonts-zh_TW-2.11-19.noarch.rpm(繁体中文)

  1086 终端下抓屏(tsgx)

  1 cat /dev/vcsX >screenshot 其中,X表示第X个终端

  2 运行script screen.log,记录屏幕信息到screen.log里。一会记录到你exit为此。这也是抓屏的好方法

  这是在debian的cookbook上看到的。在RH9上能用

  1087 让一个程序在退出登陆后继续运行(NetDC,双眼皮的猪,noclouds,陈绪)

  1 nohup command &

  2 # command

  # disown

  1088 man命令不在路径中时,查看非标准的man文件(陈绪)

  nroff -man /usr/man/man1/cscope.1 | more

  1089 cp时显示进度(陈绪)

  cp -r -v dir1 dir2

  cp -a -d -v dir1 dir2

  1090 编辑/etc/inittab后直接生效(陈绪)

  init q

  1091 让linux连续执行几个命令,出错停止(陈绪)

  command1 && command2 && command3

  1092 如何将grub安装到mbr(陈绪, NetDC)

  grub> root (hd0, 0)

  grub> setup (hd0)

  也可以用grub-install /dev/hda来安装grub

  1093 安装时把grub(lilo)写到linux分区的引导区还是主引导扇区(MBR)(陈绪)

  如果你想电脑一启动就直接进入操作系统启动菜单就把grub(lilo)写到MBR上,如果写到linux分区的引导区则要用引导盘引导。建议写到 MBR,方便点

  1094 如何让多系统共存(陈绪)

  98系统的话用lilo(grub)引导,2k/nt则使用osloader引导多系统

  1095 如何在图形界面和控制台(字符界面)之间来回切换(陈绪)

  1 图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6);

  2 各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6);

  3 控制台到图形:Alt+F7

  1096 Redhat linux常用的命令(陈绪)

  <1>ls:列目录。

  用法:ls或ls dirName,参数:-a显示所有文件,-l详细列出文件。

  <2>mkdir:建目录。

  用法:mkdir dirName,参数:-p建多级目录,如:mkdir a/b/c/d/e/f -p

  <3>find:查找文件。

  用法:find inDir -name filename,inDir是你要在哪个目录找,filename是你要找的文件名(可以用通配符),用通配符时filename最好用单引号引起来,否则有时会出错,用例:find . -name test*,在当前目录查找以test开头的文件。

  <4>grep:在文件里查找指定的字符串。

  用法:grep string filename,在filename(可用通配符)里查找string(最好用双引号引起来)。参数:-r在所有子目录里的filename里找。用例:grep hello *.c -r在当前目录下(包括子目录)的所有.c文件里查找hello。

  <5>vi:编辑器。

  用法:vi filename。filename就是你要编辑的文本文件。用了执行vi filename后,你可能会发现你无法编辑文本内容,不要着急,这是因为vi还没进入编辑状态,按a或i就可以进入编辑状态了,进入编辑状态后你就可以编辑文本了。要退出编辑状态按Esc键就可以了。以下操作均要在非编辑状态下。查找文本:输入/和你要查找的文本并回车。退出:输入: 和q并回车,如果你修改了文本,那么你要用:q!回车才能退出。保存:输入: w回车,如果是只读文件要用: w!。保存退出:输入: wq回车,如果是只读就: wq!回车。取消:按u就可以了,按一次就取消一步,可按多次取消多步。复制粘贴一行文本:把光标移到要复制的行上的任何地方,按yy(就是连按两次 y),把光标移到要粘贴地方的上一行,按p,刚才那行文本就会被插入到光标所在行的下一行,原来光标所在行后面所有行会自动下移一行。复制粘贴多行文本:跟复制一行差不多,只是yy改成先输入要复制的行数紧接着按yy,后面的操作一样。把光标移到指定行,输入:和行号并回车,如移到123行:123回车,移到结尾:$回车

  1097 linux文本界面下如何关闭pc喇叭(labrun,sakulagi)

  1 将/etc/inputrc中的set bell-style none 前的#去掉;

  2 echo /"set bell-style none/" >> ~/.bashrc;

  3 去除vi的铃声,echo /"set vb t_vb=/" >> ~/.vimrc

  1098 重装windows导致linux不能引导的解决办法(好好先生)

  如果没有重新分区,拿linux启动盘(或者第一张安装光盘)引导,进入rescue模式。首先找到原来的/分区mount在什么地方。redhat通常是/mnt/sysp_w_picpath. 执行/"chroot /mnt/sysp_w_picpath/". 如果是grub,输入grub-install /dev/hd*(根据实际情况);如果是lilo,输入lilo -v,然后重新启动。如果分区有所改变,对应修改/etc/lilo.conf和/boot/grub/grub.conf然后再执行上述命令

  1099 为什么装了LINUX后win2K很慢(lnx3000,好好先生)

  你在2000应该能看见Linux的逻辑盘,但不能访问,解决方法是在磁盘管理里,选中这个盘,右击->更改/"驱动器名和路径/"->/"删除/"就可以了,注意不是删除这个盘

  1100 将linux发布版的iso文件刻录到光盘的方法(陈绪)

  在windows中使用nero软件,选择映象文件刻录->iso文件,刻录即可

  1101 linux中刻录iso的方法(hutuworm)

  1 使用xcdroast,选择制作光碟,选择ISO文件,刻录!

  参见[url]http://www.xcdroast.org/xcdr098/faq-a15.html#17[/url]

  2 找刻录机的命令:

  cdrecord --scanbus

  输出结果为:

  0,0,0 0) /'ATAPI /' /'CD-R/RW 8X4X32 /' /'5.EZ/' Removable CD-ROM

  刻录的命令:

  cdrecord -v speed=8 dev=0,0,0 hutuworm.iso

  3 使用k3b可以刻录CD/DVD

  k3b主页:[url]http://www.k3b.org/[/url]

  (实际上k3b是个图形界面,刻录CD利用了cdrecord,刻录DVD利用了dvd+rw-tools [url]http://fy.chalmers.se/~appro/linux/DVD+RW/[/url] )

  1102 屏幕变花时怎么办(双眼皮的猪)

  当您一不小心cat了一个并不是文本的文件时,屏幕会变花,那么您可以按两下/"Enter/"键,再敲/"reset/",那么屏幕就恢复正常了....

  1103 卸载软件包时得知具体包名(diablocom)

  删除软件包的命令是rpm -e XXX,如果不知道这个XXX的确切拼写时,可以用rpm -qa查询所有安装的软件包或者用rpm -qa |grep xxxx查询出名字

  1104 使用内存作linux下的/tmp文件夹(yulc)

  在/etc/fstab中加入一行:

  none /tmp tmpfs default 0 0

  或者在/etc/rc.local中加入

  mount tmpfs /tmp -t tmpfs -o size=128m

  注:size=128m 表示/tmp最大能用128m

  不管哪种方式,只要linux重启,/tmp下的文件全部消失

  1105 用ls只列出目录(yulc)

  ls -lF | grep ^d

  ls -lF | grep /$

  ls -F | grep /$

  1106 在命令行下列出本机IP地址,而不是得到网卡信息(yulc)

  ifconfig |grep /"inet/" |cut -c 0-36|sed -e /'s/[a-zA-Z: ]//g/'

  hostname –i

  1107 修改/etc/profile或者$HOME/.profile文件后如何立即生效(peter333)

  #source /etc/profile (或者source .profile)

  1108 bg和fg的使用(陈绪)

  输入ctrl+z,当前一个任务会被挂起并暂停,同时屏幕上返回进程号,此时用 /"bg %进程号/",会把这个进程放到后台执行,而用/" fg %进程号 /"就能让这个进程放到前台来执行。另外,job命令用来查看当前的被bg的进程

  1109 ctrl+s与ctrl+q(陈绪)

  ctrl-s用来暂停向终端发送数据的,屏幕就象死了一样,只能用ctrl-q来恢复

  1110 目录统计脚本(陈绪)

  保存成total.sh,然后用total.sh 绝对路径,就能统计路径下目录的大小了

  代码:

  #!/bin/sh

  du $1 --max-depth=1 | sort -n|awk /'{printf /"%7.2fM ----> %s//n/",$1/1024,$2}/'|sed /'s:/.*///([^/]//{1,//}//)$://1:g/'

  1111 grep不显示本身进程(陈绪)

  #ps -aux|grep httpd|grep -v grep

  grep -v grep可以取消显示你所执行的grep本身这个进程,-v参数是不显示所列出的进程名

  1112 删除目录中含输入关键字的文件(WongMokin)

  find /mnt/ebook/ -type f -exec grep /"在此输入关键字/" {} //; -print -exec rm {} //;

  1113 让cron中的任务不回馈信息, 本例5分钟检查一次邮件(WongMokin)

  0-59/5 * * * * /usr/local/bin/fetchmail > /dev/null 2>&1

  1114 在当前目录下解压rpm文件(陈绪)

  cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax –r

  1115 合并两个Postscript或PDF文件(noclouds)

  $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite //

  -sOutputFile=bar.ps -f foo1.ps foo2.ps

  $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite //

  -sOutputFile=bar.pdf -f foo1.pdf foo2.pdf

  1116 去掉apache的manual目录中的所有.en的后缀名(陈绪)

  进入到manual目录

  代码:

  find ./ -regex .*//.en|awk -F. /'{ printf /"mv %s.%s.%s.%s %s.%s.%s//n/",$1,$2,$3,$4,$1,$2,$3}/'|sh

  1117 如何起多个X(noclouds)

  startx默认以display :0.0起第一个X,通过传递参数给Xserver可以起多个X:

  # startx -- :1.0

  # startx -- :2.0

  ...

  然后用Ctrl-Alt-F7/F8...切换

  1118 split分割合并文件(陈绪)

  split -b1440k a_whopping_big_file chunk

  cat chunk* > a_whopping_big_file

  1119 看Linux启动时屏幕的显示信息(陈绪)

  启动完毕后用命令dmesg查看

  1120 我需要编译内核,内核源码在哪里(platinum)

  1、一般在发行版的盘里都有,比如 RedHat,一般在第二、第三张上

  2.4 内核的叫 kernel-source-2.4.xx-xx.rpm

  2.6 内核的叫 kernel-devel-2.6.xx-xx.rpm

  2、去[url]www.kernel.org[/url]下载一份你喜欢的

  1121 让fedora开机后自动login(dzho002)

  1 rpm -ihv autologin-1.0.0-7mdk.i586 rpm

  2 建立文件 /etc/sysconfig/autologin

  在里面加上一行.

  USER = root

  1122 如何配置让哪些服务启动(天外闲云,q1208c)

  1 运行ntsysv或者setup命令,进入菜单进行配置;

  2 chkconfig --list 显示服务

  chkconfig name on/off 打开/关闭“name”服务

  1123 安全删除linux(天外闲云)

  步骤1 dos下使用fdisk /mbr或者用win2000/xp的光盘启动进入故障恢复控制台,使用命令fixmbr

  步骤2 格式化linux分区为windows分区即可

  1124 用grub引导进文本界面(天外闲云)

  进入grub之后,按a,输入 空格 3 就可以引导进入文本界面,但是不修改系统的运行级,只在当次有效

  1125 先测试patch是否运行正常,暂不将更改应用到kernel(jiadingjun)

  patch --dry-run

  1126 redhat和debian上的软件安装卸载用法(NetDC)

  卸载一个软件包:

  rpm -e <package-name>

  dpkg -r <package-name>

  显示一个软件包的内容:

  rpm -qvl <package-name.rpm>

  dpkg -c <package-name.deb>

  显示所有已经安装的软件包:

  rpm -qvia

  dpkg -l

  打印一个包的信息:

  rpm -qpi <package-name.rpm>

  dpkg -I <package-name.deb>

  检验包characteristics:

  rpm -Va

  debsums -a

  检验一个文件属于哪个包:

  rpm -qf </path/to/file>

  dpkg -S </path/to/file>

  安装新软件包:

  rpm -Uvh <package-name.rpm>

  dpkg -i <package-name.deb>

  1127 强制新用户首次登陆后修改密码(猫小)

  #useradd -p /'/' testuser; chage -d 0 testuser

  1128 日志维护工具logrotate(hotbox)

  在/etc/logrotate.conf中配置,定义log文件达到预定的大小或时间时,自动压缩log文件

  1129 Linux中默认的管理员叫什么(陈绪)

  root

  1130 如何产生一个长度固定(例如文件长度为1M)字节的空文件,即每个字节的值全为0x00(sakulagi)

  dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024

  1131查看某文件的一部分(陈绪)

  如果你只想看文件的前5行,可以使用head命令,

  如:head -5 /etc/passwd

  如果你想查看文件的后10行,可以使用tail命令,

  如:tail -10 /etc/passwd

  你知道怎么查看文件中间一段吗?你可以使用sed命令

  如:sed –n /'5,10p/' /etc/passwd这样你就可以只查看文件的第5行到第10行。

  1132 查找当前目录下文件并更改扩展名(零二年的夏天)

  更改所有.ss文件为.aa

  # find ./ -name /"*.ss/" -exec rename .ss .aa /'{}/' //;

  1133 patch的使用(天才※樱木)

  语法是patch [options] [originalfile] [patchfile]

  例如:

  patch -p[num] <patchfile

  -p参数决定了是否使用读出的源文件名的前缀目录信息,不提供-p参数,则忽略所有目录信息,-p0(或者-p 0)表示使用全部的路径信息,-p1将忽略第一个/"//"以前的目录,依此类推。如/usr/src/linux-2.4.16/Makefile这样的文件名,在提供-p3参数时将使用linux-2.4.16/Makefile作为所要patch的文件。

  对于刚才举的Linux内核源码2.4.16升级包的例子,假定源码目录位于/usr/src/linux中,则在当前目录为/usr/src时使用/"patch -p0 <patch-2.4.16/"可以工作,在当前目录为/usr/src/linux时,/"patch -p1<patch-2.4.16/"也可以正常工作

  1134 将file.txt里的123改为456(hutuworm)

  方法1

  sed /'s/123/456/g/' file.txt > file.txt.new

  mv -f file.txt.new file.txt

  方法2

  vi file.txt

  输入命令:

  :%s/123/456/g

  1135 将一个分区格式化为ext3日志文件系统(hutuworm)

  mkfs -j /dev/xxxx

  1136 开启硬盘ATA66(laixi781211)

  /sbin/hdparm -d1 -X68 -c3 -m16 /dev/had

  1137 查看当前运行级别(双眼皮的猪)

  runlevel

  1138 查看当前登陆身份(双眼皮的猪)

  1 who am i

  2 whoami

  3 id

  注意1跟2的小区别

  1139 删除rpm -e删除不了的包(wwwzc)

  1、如果在删除包之前删除了包的目录

  rpm -e --noscripts

  2、如果系统里一个包被装两次(由于某些异常引起的)

  rpm -e multi-installed-pkgs –allmatches

  1140 如何定制用户登录时显示的信息(jiadingjun)

  在/etc目录下放一个名字叫motd的文本文件实现的,例如,建立自己的/etc/motd:

  $cat /etc/motd

  welcome to my server !

  那么,当用户登录系统的时候会出现这样的信息:

  Last login: Thu Mar 23 15:45:43 from *.*.*.*

  welcome to my server

  1141 用命令清空Root回收站中的文件(dtedu)

  cd /var/.Trash-root

  rm -rf *

  1142 在Red Hat上加Simsun.ttc字体(陈绪)

  以Red Hat 7.3为例,安装时选取简体中文安装,先复制一个simsun.ttc到/usr/X11R6/lib/X11/font/TrueType,改名为simsun.ttf;然后进入/usr/X11R6/lib/X11/font/TrueType目录下,运行ttmkfdir > fonts.dir命令;接着用vi编辑fonts.dir文件,把有simsun.ttf行修改如下:

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-ascii-0

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-iso10646-1

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-15

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-iso8859-1

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gbk-0

  接着运行cat fonts.dir > fonts.scale命令,修改/etc/X11/XF86config-4, 在Section“Files”加上下面这一行:

  FontPath “/usr/X11R6/lib/X11/fonts/TrueType”

  最后回到KDE桌面里, 在“开始”→“选项”→“观感”→“字体”,将所有字体改为Simsun

  1143 Unicon和Zhcon的区别和作用(陈绪)

  Unicon是内核态的中文平台,基于修改Linux FrameBuffer和Virtual Console(fbcon)实现的。由于是在系统底层实现的,所以兼容性极好,可以直接支持gpm鼠标。但是相对比较危险,稍有漏洞就可能会危及系统安全。Zhcon是用户态的中文平台,有点像UCDOS

  1144 如何卸载tar格式安装的软件(陈绪)

  进入安装该软件的原代码目录,运行make uninstall。如果不行,也可以查看一下Makefile文件,主要是看install部分,从其中找出tar格式的文件被复制到了什么路径,然后进入相应的目录进行删除即可

  1145 定制linux提示符(陈绪)

  在bash中提示符是通过一个环境变量$PS1指定的。用export $PS1查看现在的值,比较直观常用的提示符可以设定为export PS1=“[//u@//h //W]//$”。其中//u代表用户名,//h代表主机名,//W代表当前工作目录的最后一层,如果是普通用户//$则显示$,root用户显示#

  1146 在vi中搜索了一个单词,该单词以高亮显示,看起来很不舒服,怎么能将它去掉(陈绪)

  在vi的命令模式下输入:nohlsearch就可以了。另外可以在~/.vimrc中写上下面的语句就会有高亮显示:

  set hlsearch

  加上下面的语句就不会有高亮显示:

  set nohlsearch

  1147 如何找出系统中所有的*.cpp、*.h文件(陈绪)

  用find命令就可以了。不过如果从根目录查找消耗资源较高,使用下面的命令就可以:

  find / -name /"*.cpp/" -o -name /"*.h/"

  1148 如安装Debian需要几张盘就够了?7张盘全部都要下载吗(陈绪)

  如果经常有网络环境的话,下载第一张就可以了。要是没有网络环境的话不推荐使用Debian,因为Debian主要依赖网络来更新软件。实在要安装的话,要下载全部7张盘,否则可能会出现需要的软件包找不到的问题

  1149 Debian第一张光盘为什么有两个版本?debian-30r1-i386-binary-1.iso和debian-30r1-i386-binary-1_NONUS.iso该下载哪一个呢?它们有什么区别(陈绪)

  因为含有“non-US”(不属美国)的软件不能合法地存放在架设于美国境内的服务器中。以前,其原因通常是因为软件含有严密的密码编码,而今天,则是因为程序使用了美国专利保护的演算法。每个人应该取用“non-US”来供私人用途所用;而没有这个标识的iso则只对架设在美国的镜像及供应商才有用处。其它二进制的光盘则不会含有任何“US-sensitive”(与美国相关的)软件,它们和其它种binary-1光盘一样运作得很好。因此,个人使用还是下载debian-30r1-i386-binary-1_NONUS.iso版本

  1150 为何我使用umount /mnt/cdrom命令的时候出现device is busy这样的语句,不能umount(陈绪)

  在使用umount的时候一定要确保已退出/mnt/cdrom这个目录,退出这个目录就可以使用umount /mnt/cdrom了

  1151 我使用的是笔记本电脑,怎么才能在控制台下显示现在还剩多少电量呢(陈绪)

  使用apm -m就可以看到还有多少分钟了,具体参数可以用man apm查看

  1152 为什么我进入Linux的终端窗口时,man一条命令出来的都是乱码呢(陈绪)

  这是因为你的字符集设置有问题。临时解决办法可以使用export LANG=“en_US”。要想不必每次都修改的话,在/etc/sysconfig/i18n文件里面修改LANG=“en_US”就可以了。也可以针对某个用户来做,这样就可以改变个人的界面语言,而不影响别的用户。命令如下:# cp /etc/sysconfig/i18n $HOME/.i18n

  1153 编译内核的时候出错,提示“Too many open files”,请问怎么处理(陈绪)

  这是因为file-max默认值(8096)太小。要解决这个问题,可以root身份执行下列命令(或将它们加入/etc/rcS.d/*下的init脚本):

  # echo /"65536/" > /proc/sys/

  最后进入解压后的目录,运行安装命令。

  # cd vmware-linux-tools

  # ./install.pl

  1154 本来装有Linux与Windows XP,一次将Windows XP重装后,发现找不到Linux与Windows XP的启动选单,请问如何解决(陈绪)

  首先光盘启动,进入rescue模式,运行GRUB,进入grub提示符grub>,然后敲入下面的语句,重启就好了。

  root (hd0,2),setup (hd0)

  1155 安装了一台Linux服务器,想自己编译内核,一步一步做下来,GRUB也添加进去了,但出现“kernel Panic:VFS:Unable to mount root fs on 0:00”的错误,请问是怎么回事(陈绪)

  一般情况下initrd这个文件在台式机上不是必须的,但是在有SCSI设备的服务器上却是必须的。有可能因为编译内核的时候没有产生initrd那个文件,所以会有上面的错误提示。用户可以使用mkinitrd命令来生成一个initrd.img文件,然后加入GRUB,重启试一试

  1156 如何设置用户登录后的欢迎信息(陈绪)

  修改/etc/motd文件,往里面写入文本,就能使用户通过Telnet正确登录后,执行Shell之前得到相应的提示信息。

  motd就是“messages of the day”,也就是当日信息的意思。管理员可以往里面写一些需要注意的事项或通知等来提醒正式用户

  1157 我下载了rcs5.7,用./configure && make && make install时报错如下:./conf.sh: testing permissions ... ./conf.sh: This command should not be run with superuser permissions. 我是以root用户身份登录编译安装的,为什么会这样(陈绪)

  有些软件确实因为考虑到安全等其它原因不能用root用户编译。这时只要用其它用户编译,到make install这步时,如果该软件安装在不属于编译时的用户的主目录下时,需要使用su命令转换为root用户再执行make install

  1158 我在安装USBView时失败,具体情况如下:

  #rpm -ivh usbview-1.0-9.src.rpm warning:usbview-1.0-9.src.rpm:V3 DSAsignature:NOKEY,key IDab42a60e(陈绪)

  这行代码说明安装失败是因为你的系统上没有安装合适的钥匙来校验签名。要使该软件包通过校验,可以通过导入Red Hat的公匙来解决,具体的方式是在Shell下运行如下命令:

  #rpm -import /usr/share/rhn/RPM-GPG-KEY (注意大小写)

  1159 如何防止某个关键文件被修改(陈绪)

  在Linux下,有些配置文件是不允许任何人(包括root)修改的。为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable) ”。命令如下:

  # chattr +i /etc/fstab

  如果需要修改文件则采用下面的命令:

  # chattr -i /etc/fstab

  1160 怎样限制一个用户可以启动的进程数(陈绪)

  先确定一下/etc/pam.d/login文件中下面一行的存在:

  session required /lib/security/pam_limits.so

  然后编辑/etc/security/limits.conf,在里面可以设置限制用户的进程数、CPU占用率和内存使用率等,如hard nproc 20就是指限制20个进程,具体可以看man

  1161 如何限制Shell命令记录大小(陈绪)

  默认情况下,bash会在文件$HOME/.bash_history中存放多达500条命令记录。有时根据具体的系统不同,默认记录条数不同。系统中每个用户的主目录下都有一个这样的文件。为了系统的安全,在此强烈建议用户限制该文件的大小。用户可以编辑/etc/profile文件,修改其中的选项如下:

  HISTFILESIZE=30 或 HISTSIZE=30

  这样就将记录的命令条数减少到30条

  1162 我想将开机时显示的信息保留下来,以检查电脑出了问题的地方,请问怎么办(陈绪)

  可输入下面的命令:

  #dmesg > bootmessage

  该命令将把开机时显示的信息重定向输出到一个文件bootmessage中

  1163 我想在注销时删除命令记录,请问怎么做(陈绪)

  编辑/etc/skel/.bash_logout文件,增加如下行:

  rm -f $HOME/.bash_history

  这样,系统中的所有用户在注销时都会删除其命令记录。

  如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可

  1164 编译内核,支持ntfs的步骤(platinum,陈绪)

  1. # cd /usr/src/linux-2.4

  2. # make menuconfig

  3. 选中File System下的NTFS file system support (read only)为M

  4. # uname -a

  2.4.21-27.0.2.EL

  5. # vi Makefile

  确保前几行为

  VERSION = 2

  PATCHLEVEL = 4

  SUBLEVEL = 21

  EXTRAVERSION = -27.0.2.EL

  6. # make dep

  7. # make modules SUBDIRS=fs/ntfs

  8. # mkdir /lib/moduels/2.4.21-27.0.2.EL/kernel/fs/ntfs

  9. # cp -f fs/ntfs/*.o /lib/moduels/2.4.21-27.0.2.EL/kernel/fs/ntfs/

  10. # depmod -a

  11. # modprobe ntfs

  12. # lsmod

  确保有ntfs在里面

  1165 如何使用ssh通道技术(陈绪)

  本文讨论所有机器均为Linux操作系统。

  比如说我的机器是A,中间服务器为B,目标服务器是C。

  从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C。

  现在展示利用ssh通道技术从A直接传输文件到C。

  1. ssh -L1234:C:22 root@B

  input B/'s password

  2. scp -P1234 filename root@localhost:

  input C/'s password

  1166 使用rpm命令时没有任何响应,如何解决(初学摄影)

  rm -rf /var/lib/rpm/__db.*

  1167 向登陆到同一台服务器上的所有用户发一条信息(陈绪)

  1)输入wall并回车

  2)输入要发送的消息

  3)结束时按“Control-d”键,消息即在用户的控制窗口中显示

  1168 输入短消息到单个用户(陈绪)

  1)输入write username,当用户名出现在多个终端时,在用户名后可加tty,以表示在哪个tty下的用户。

  2)输入要发送的消息。

  3)结束时按“Control-d”键,消息即在用户的控制窗口中显示。

  4)对于接收消息方,可以设定是否允许别人送消息给你。

  指令格式为:mesg n[y]

  %write liuxhello! Everybody, I’llcome.

  %

  用户控制窗口中显示的消息:Message from liux on ttyp1 at 10:00…hello! Everybody, I’llcome.EOF

  当使用CDE或OpenWindows等窗口系统时,每个窗口被看成是一次单独的登录;如果用户登录次数超过一次则消息直接发送到控制窗口

  1169 发送文件中的消息到单个用户(陈绪)

  如果有一个较长的消息要发送给几个用户,用文件方式:

  1)创建要发送的消息文本的文件filename.

  2)输入write username<filename回车,用cat命令创建包含短消息的文件:

  % cat>message hello! Everybody, I’ll come.

  % write liux<message write:liux logged in more than once…write to console

  % 用户在一个以上窗口登录,消息显示在控制窗口中Message from liux on ttyp1 at 10:00…hello! Everybody, I’ll come. EOF

  1170 向远程机器上的所有用户发送消息(陈绪)

  使用rwall(向所有人远程写)命令同时发送消息到网络中的所有用户。

  rwall hostname file

  当使用CDE或OpenWindows等窗口系统时,每个窗口被看成是一次单个的登录;

  如果用户登录次数超过一次则消息直接发送到控制窗口

  1171 向网络中的所有用户发送消息(陈绪)

  发送消息到网络中的所有用户

  1)输入rwall -n netgroup并回车

  2)输入要发送的消息

  3)结束时按“Control-d”键,消息即在系统每个用户的控制窗口中显示,下面是系统管理员发消息到网络组Eng每个用户的例子:

  % rwall -n EngSystem will be rebooted at 11:00.(Control-d)

  %

  用户控制窗口中的消息:Broadcast message from root on console…System will be rebooted at 11:00.EOF

  注意:也可以通过rwall hostname(主机名)命令到系统的所有用户

  1172 我需要编译内核,内核源码在哪里?(platinum)

  1、一般在发行版的盘里都有,比如 RedHat,一般在第二、第三张上

  2.4 内核的叫 kernel-source-2.4.xx-xx.rpm

  2.6 内核的叫 kernel-devel-2.6.xx-xx.rpm

  2、去 [url]www.kernel.org[/url] 下载一份你喜欢的

  1173 将top的结果输出到文件中(bjweiqiong)

  top -d 2 -n 3 -b >test.txt

  可以把top的结果每隔2秒,打印3次,这样后面页的进程也能够看见了

  1174 vim中改变全文大小写的方法(陈绪)

  光标放在全文开头

  gUG 所有字母变大写

  guG 所有字母变小写

  g~G 所有字母,大写变小写,小写变大写

  2 网络相关篇

  2001 让apache的默认字符集变为中文(陈绪)

  vi httpd.conf,找到 AddDefaultCharset ISO-8859-1 一行

  apache版本如果是1.*,改为 AddDefaultCharset GB2312

  如果是2.0.1-2.0.52,改为 AddDefaultCharset off

  然后运行/etc/init.d/httpd restart重启apache即可生效。

  注意:对于2.0.53以上版本,不需要修改任何配置,即可支持中文

  2002 永久更改ip(陈绪)

  编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,修改ip,然后执行ifdown eth0; ifup eth0

  2003 从Linux上远程显示Windows桌面(lnx3000)

  安装rdesktop包

  2004 手动添加默认网关(陈绪)

  以root用户,执行: route add default gw 网关的IP

  想更改网关

  1 vi /etc/sysconfig/network-scripts/ifcfg-eth0

  更改GATEWAY

  2 /etc/init.d/network restart

  2005 redhat 8.0上msn和qq(陈绪)

  下载Gaim 0.58版:

  gaim-0.58-2.i386.rpm

  下载QQ插件 for gcc2.9版:

  libqq-0.0.3-ft-0.58-gcc296.so.gz

  将下载的文件放入/temp目录,然后将系统中已有的Gaim删除,即在终端仿真器中键入命令:rpm -e gaim。

  开始安装

  打开终端仿真器,继续执行下列命令安装Gaim 0.58版,即:

  cd /temp

  (进入temp目录)

  rpm -ivh gaim-0.58-2.i386.rpm

  (安装软件)

  当安装成功后,你就可以在GNOME或KDE桌面建立Gaim图标了。

  继续安装QQ插件,即键入命令:

  gunzip libqq-0.0.3-ft-0.58-gcc296.so.gz (解压缩文件)

  cp libqq-0.0.3-ft-0.58-gcc296.so /usr/lib/gaim (复制插件到gaim库目录中)

  软件设置

  首次启动Gaim 0.85版时,会出现的登录界面。先选择“插件”,在插件对话框中点击“加载”,分别将libmsn.so和libqq-0.0.3-ft-0.58-gcc296.so文件装入,确认后关闭。然后再选择“所有帐号”,在出现的帐号编辑器中继续点击“增加”,当出现的修改帐号页面时,我们就可以输入自己的QQ或MSN号了,登录名填写QQ号码或MSN邮箱,密码填写对应的QQ或MSN密码,Alias填写自己的昵称,协议选择相应的QQ或MSN,其他的设置按默认的即可。当全部设置完成后就可以登录使用了。

  Fedora core 5中的gaim,缺省对msn就可以支持,加上gaim的qq插件,即可支持qq

  2006 查出22端口现在运行什么程序(陈绪)

  lsof -i :22

  2007 查看本机的IP,gateway,dns(陈绪)

  IP:以root用户登录,执行ifconfig。其中eth0是第一块网卡,lo是默认的设备

  Gateway:以root用户登录,执行netstat -rn,以0.0.0.0开头的一行的Gateway为默认网关

  也可以查看/etc/sysconfig/network文件,里面有指定的地址

  DNS:more /etc/resolv.conf,内容指定如下:

  nameserver 202.96.69.38

  nameserver 202.96.64.38

  2008 RH8.0命令行下改变ping 的TTL值(cgweb,lnx)

  方法1(重启后有效):

  #sysctl -w net.ipv4.ip_default_ttl=N

  (N=0~255),若N>255,则ttl=0

  方法2(重启后无效):

  #echo N(N为0~255) > /proc/sys/net/ipv4/ip_default_ttl

  2009 开启LINUX的IP转发(houaq)

  编辑/etc/sysctl.conf, 例如,将

  net.ipv4.ip_forward = 0

  变为

  net.ipv4.ip_forward = 1

  重启后生效,用sysctl -a查看可知

  2010 mount局域网上其他windows机器共享出的目录(陈绪)

  mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom

  2011 允许|禁止root通过SSH登陆(Fun-FreeBSD)

  修改sshd_config:PermitRootLogin no|yes

  2012 让root直接telnet登陆(陈绪,platinum)

  方法1:

  编辑/etc/pam.d/login,去掉

  auth required /lib/security/pam_securetty.so 这句话

  方法2:

  vi /etc/securetty

  添加

  pts/0

  pts/1

  ...

  2013 在linux接adsl设备(wind521)

  需要一个运转正常的Linux + 至少一块网卡 + 宽带设备已经申请完毕,同时已经开通。目前市场上大概有几种ADSL设备,他们工作的方式有一些细微的差别。

  就是通过虚拟拨号来完成上网的这一过程,也就是利用pppoe设备来进行虚拟拨号的叫作全向猫,就是一种加电后自动的进行拨号的工作,然后留给我们的接口是RJ45,大连地区一般留给我们的网关都是10.0.0.2,这种设备最容易对付,最后是直接分配给用户一个固定的IP,相对大家来说也比较容易对付

  1.第一种需要进行拨号:

  这几种设备都是通过eth接口与计算机进行通讯的,所以先将硬件设备的连接作好,尤其是宽带猫的,一定要确认无误(否则一会儿要不去可不算我的事情)

  然后启动系统,确认系统上是否安装rp-pppoe这个软件(通过rpm -qa|grep pppoe来查找),如没有安装的用户,在光盘里或是到网上去down一个来,安装上后,以root用户执行adsl-setup,这样就进入了adsl的资料的设定状态,要求输入申请宽带的用户名以及其他一些信息,确认没有问题,接受直至最后(里面都是E文,但是一看即能懂,比较简单,有关一个防火墙的设置,我一般都不用,选0,大家可以具体考虑)。

  配置完成后,以root用户执行adsl-start,这样将进行adsl的拨号工作,正常就会一下上线,如有什么具体问题,去看一下日志(/var/log/messages)里面告诉你什么了。

  停掉adsl,执行adsl-stop就可以了(很简单的)

  2.另外两种比较容易对付:

  全向猫:只要将你的网卡的IP设置成一个10网段的IP,然后网关指到全向猫的IP,上(10.0.0.2),基本上不有太大的问题

  固定IP:就像配置本地的网卡一样,将IP,网关,DNS都按申请来的填写上就可以搞定了

  2014 让linux自动同步时间(shunz)

  vi /etc/crontab

  加上一句:

  00 0 1 * * root rdate -s time.nist.gov

  2015 linux的网上资源有哪些(陈绪)

  国外

  [url]http://lwn.net/[/url]

  [url]http://www.tldp.org/[/url]

  [url]http://www.yolinux.com/[/url](flying-dance big big pig)

  [url]http://www.justlinux.com/[/url]

  [url]http://www.linuxtoday.com/[/url]

  [url]http://www.linuxquestions.org/[/url]

  [url]http://www.fokus.gmd.de/linux/[/url]

  [url]http://www.linux-tutorial.info/[/url]

  [url]http://public.www.planetmirror.com/[/url]

  [url]http://www.freebsdforums.org/forums/[/url]

  [url]http://www.netfilter.org/documentation/[/url]

  [url]http://www-106.ibm.com/developerworks/linux/[/url]

  国内

  [url]http://www.linuxmine.com/[/url]

  [url]http://www.fanqiang.com/[/url]

  [url]http://www.linuxsir.com/[/url]

  [url]http://www.chinaunix.net/[/url]

  [url]http://www.linuxfans.org/[/url](deadcat)

  [url]http://www.linuxeden.com/[/url]

  [url]http://www.linuxforum.net/[/url]

  [url]http://www.linuxaid.com.cn/[/url]

  [url]http://freesoft.online.sh.cn/[/url]

  [url]http://www-900.ibm.com/developerWorks/cn/linux/index.shtml[/url]

  [url]http://www.neweasier.com/software.html[/url]

  [url]http://www.blueidea.com/bbs/archivecontent.asp?id=635906[/url](sqh)

  [url]http://westlinux.ywzc.net/[/url](onesun)

  2016 改变sshd的端口(陈绪)

  在/etc/ssh/sshd_config中加入一行:Port 2222,/etc/init.d/sshd restart重启守护进程

  2017 改变telnet的端口(陈绪)

  将/etc/services文件中telnet对应的端口号21改为你想要的值,/etc/init.d/xinetd restart重启守护进程

  2018 终端模式有问题(sakulagi)

  export TERM=vt100

  2019 模仿超级终端,LINUX里什么程序连接路由器和交换机(alstone)

  minicom

  2020 ssh上来能不能不自动断线(wind521,双眼皮的猪)

  修改自己HOME目录下的.bash_profile文件,加上

  export TMOUT=1000000 (以秒为单位)

  然后运行source .bash_profile

  2021 用什么工具做入侵检测(陈绪)

  Snort

  2022 Linux下检测程序内存泄漏的工具(陈绪)

  cchecker或是efence库都可以

  2023 linux下如何监视所有通过本机网卡的数据(陈绪)

  tcpdump或者iptraf

  2024 为什么root执行好多命令都说command not found(陈绪)

  你是telnet上来,然后su成root的吧,改改你的su命令格式,应该是su – root

  2025 关闭用户的POP3权限(tiansgx)

  把POP3的端口关了就可以了。在文件/etc/services中找到这一行 pop-3 110/tcp 把这一行前加个/'#/',把它注释掉就可以了

  2026 linux下播放flash动画(myxfc)

  linux下播放flash动画用这个东西,不会造成浏览器的关闭(其他的插件不好用)

  首先下载flash播放动画在linux的插件

  [url]http://www.collaborium.org/onsite/jos2000/related/soft/flash_linux.tar.gz[/url]

  tar zxvf flash_linux.tar.gz

  打开包之后,会看到Linux文件夹

  在linux文件颊里有两个文件libflashplayer.so 和shockwaveflash.class,把这两个文件拷贝到你的浏览器里的插件里(浏览器不一样,插件的位置可能也不一样)

  /usr/lib/mozilla-1.0.1/plugins,就可以了

  2027 锁定wu-ftp用户目录(wangla)

  编辑ftpaccess文件

  restricted-uid *

  这一句很重要,限制了ftp用户在自己的目录里

  2028 服务器怎么不让telnet(知秋一叶)

  服务器上必须启动telnet服务 && 服务器的防火墙优先级应该设为低

  2029 防止任何人使用su命令成为root(xiaohu0)

  1.vi /etc/pam.d/su

  auth sufficient /lib/security/pam_rootok.so debug

  auth required /lib/security/pam_wheel.so group=wheel

  2.在/etc/pam.d/su配置文件中定义了wheel组

  2030 如何使lynx浏览器能够浏览中文网页(Ghost_Vale)

  浏览简体中文网页就的修改如下设置

  Save options to disk: [X]

  Display and Character Set

  Display character set : [Chinese________________________]

  Assumed document character set(!): [iso-8859-1______]

  CJK mode (!) : [ON_]

  然后移到最下面的 Accept Changes 按下 Enter 保存就可以了

  当然你的系统要支持简体中文才可以

  2031 网卡激活了,却上不了网,怎么办(Slock,双眼皮的猪)

  traceroute,看看到底是在那一块被阻住的。

  1.ping自己

  2.ping网关

  3.ping DNS

  4.traceroute DNS

  如果一切正常

  nslookup [url]www.sina.com.cn[/url]

  ping sina的address

  traceroute sina的address

  基本上就可以知道结果了

  2032配置samba,win2000能访问,win98不能访问(squall2003)

  如果是win98,必须要修改注册表:HKEY_LOCAL_MACHINE/system/correntcontrolset/

  services/Vxd/VNETSUP下建个Dword值:EnablePlainTextpasswd,键值1

  2033 如何得到网卡的MAC地址(陈绪,hutuworm)

  arp -a | awk /'{print $4}/'

  ifconfig eth0 | head -1 | awk /'{print $5}/'

  2034 如何得到网卡的IP地址(mb)

  ifconfig eth0 |awk /'/inet addr/ {split($2,x,/":/");print x[2]}/'

  2035 如何修改Linux机器所在的工作组(hutuworm)

  vi /etc/samba/smb.conf,修改workgroup = 一行,将组名写在后面

  2036 一块网卡如何绑定两个ip(linuxloveu)

  #cd /etc/sysconfig/network-scripts

  #cp ifcfg-eth0 ifcfg-eth0:1

  #vi ifcfg-eth0:1

  修改IP和设备名

  Debian下一个网卡绑定多个ip的方法(NetDC)

  修改/etc/network/interfaces

  auto eth0

  iface eth0 inet static

  address 172.16.3.123

  netmask 255.255.255.0

  network 172.16.3.0

  broadcast 172.16.3.255

  gateway 172.16.3.1

  auto eth0:1

  iface eth0:1 inet static

  address 10.16.3.123

  netmask 255.255.0.0

  network 10.16.0.0

  broadcast 10.16.255.255

  修改/etc/network/ifstate

  lo=lo

  eth0=eth0

  eth0:1=eth0:1

  然后/etc/init.d/networking restart就可以了。

  一个网卡绑定多ip另一法(hotbox)

  在/etc/sysconfig/network-scripts/下创建一个文件:ifcfg-ethX-rangeX (/"X/"为网卡号)

  文件内容:

  IPADDR_START=<start ip>

  IPADDR_END=<end ip>

  CLONENUM=0

  可以有256个ip

  2037 一个ip如何绑定两块网卡(hutuworm)

  假设192.168.0.88是ip,192.168.0.1是网关:

  /sbin/modprobe bonding miimon=100 mode=1

  /sbin/ifdown eth0

  /sbin/ifdown eth1

  /sbin/ifconfig bond0 192.168.0.88

  /sbin/ifenslave bond0 eth0 eth1

  /sbin/route add default gw 192.168.0.1

  2038 192.168.1.0/24(双眼皮的猪)

  它与192.168.1.0/255.255.255.0是等价的,只是表示方式不同....

  2039 linux下清空arp表的命令(NetDC)

  #arp -d -a(适用于bsd)

  for HOST in `arp | sed /'/Address/d/' | awk /'{ print $1}/'` ; do arp -d $HOST; done

  2040 使用ntp协议从服务器同步时间(NetDC)

  ntpdate NTP-SERVER 例:ntpdate 172.16.2.1

  2041 host命令的用法(陈绪)

  host能够用来查询域名,它还能得到更多的信息

  host -t mx example.com可以查询出example.com的MX记录,以及处理mail的host的名字

  host -l example.com会返回所有注册在example.com下的域名

  host -a example.com则会显示这个主机的所有域名信息.

  2042 立刻让LINUX支持NAT(platinum)

  echo 1 > /proc/sys/net/ipv4/ip_forward

  iptables -t nat -I POSTROUTING -j MASQUERADE

  2043 rh8.0下rcp的用法设置(zhqh1)

  只对root用户生效

  1、在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去,在此之前应在双方的/etc/hosts文件中加入对方的IP和hostname

  2、把rsh服务启动起来,redhat默认是不启动的。方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。 然后执行:service xinetd restart即可。

  3、到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用“#”封掉即可。

  2044 在ethX设备上,使LINUX支持网络广播功能(默认不支持)(platinum)

  ip route add 255.255.255.255 dev ethX

  2045 路由设置手册(NetDC)

  查看路由信息:

  netstat -rn

  route -n

  手工增加一条路由:

  route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  手工删除一条路由:

  route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  好了,下面到了重要的了,让系统启动的时候自动启用路由设置。

  在redhat中添加一条路由,修改文件/etc/sysconfig/static-routes

  any net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  在debian中添加一条路由,

  方法一:修改/etc/network/interfaces

  代码:

  auto eth0

  iface eth0 inet static

  address 172.16.3.222

  netmask 255.255.0.0

  network 172.16.0.0

  broadcast 172.16.255.255

  gateway 172.16.2.1

  up route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  down route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  方法二:在/etc/network/if-up.d目录下建立一个简单的脚本文件,如static-route$(记得以$符号结尾,要不有个run-parts会跑出来告诉你一些东西)脚本最简单的就好啦,如:

  代码:

  #!/bin/bash

  route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

  嘿嘿,你也可以猜到/etc/network/目录下的其他目录的作用了吧。

  发觉在debian中这个route的设置其实只是它的那些配置文件的一个比较简单的应用而已,你完全可以做更复杂的应用

  2046 利用ssh复制文件(platinum)

  假如A、B都有SSH服务,现在在A的SSH里

  1、从A复制B(推过去)

  scp -rp /path/filename username@remoteIP:/path

  2、从B复制到A(拉过来)

  scp -rp username@remoteIP:/path/filename /path

  如果其中一个不是LINUX系统,可以在WINDOWS上用SecureFX软件

  2047 samba3.0中文显示问题的解决办法(linuxzfp,jiadingjun)

  在samba 3.0的配置文件中(/etc/samba/smb.conf)的[global]中加入下面两句:

  unix charset=cp936

  重启服务

  service smb restart

  2048 临时修改网卡MAC地址的方法

  关闭网卡:/sbin/ifconfig eth0 down

  然后改地址:/sbin/ifconfig eth0 hw ether 00:AA:BB:CCD:EE

  然后启动网卡:/sbin/ifconfig eth0 up

  2049 conntrack 表满的处理方法(cgweb)

  前段时间配置的iptables+squid做的proxy server,一直工作正常。今天我上控制台上发现

  Jun 18 12:43:36 red-hat kernel: ip_conntrack: table full, dropping packet.

  Jun 18 12:49:51 red-hat kernel: ip_conntrack: table full, dropping packet.

  Jun 18 12:50:57 red-hat kernel: ip_conntrack: table full, dropping packet.

  Jun 18 12:57:38 red-hat kernel: ip_conntrack: table full, dropping packet.

  IP_conntrack表示连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满,那么默认空间是多少?我以redhat为例在内存为64MB的机器上是4096,内存为128MB是 8192,内存为256MB是16376,那么就能在/proc/sys/net/ipv4/ip_conntrack_max里查看、设置。

  例如:增加到81920,可以用以下命令:

  echo /"81920/" > /proc/sys/net/ipv4/ip_conntrack_max

  那样设置是不会保存的,要重启后保存,可以在/etc/sysctl.conf中加:

  net.ipv4.ip_conntract_max =81920

  按照此方法改变后一切正常,要是再满了可以加大该值

  2050 Linux下怎么使用BT(atz0001)

  azureus,[url]http://azureus.sourceforge.net/[/url]

  2051 Linux下查看光纤网卡的工作模式(sakulagi)

  主板上PCI—X插槽中插入一块64位的光纤网卡,在LINUX9.0的环境下,要知道它是否工作在64位模式下,可使用# getconf WORD_BIT

  2052 在线更新RHEL的另类途径(hutuworm)

  1.安装相应的APT包:

  Red Hat EL 2.1 - i386

  rpm -ihv [url]http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.0.el2.dag.i386.rpm[/url]

  Red Hat EL 3 - i386

  rpm -ihv [url]http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.1.el3.dag.i386.rpm[/url]

  Red Hat EL 3 - x86_64

  rpm -ihv [url]http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.1.el3.dag.x86_64.rpm[/url]

  2.在线更新

  apt-get update

  apt-get upgrade

  2053 SOCKS5启动后一段时间停止工作。用命令ps auxw | grep socks5查看,发现有很多SOCKS defunct进程,为什么(陈绪)

  主要是打补丁的问题。如果socks5-tar.gz是没打过补丁的版本,必须下一个带补丁的v1.0-r11版本,重新安装、运行问题就可以解决了

  2054 在VMware WorkStation 4.0.5中安装Debian 3.0时,提示找不到硬盘,需要SCSI的驱动。但是我用的是IDE硬盘,请问该怎么办(陈绪)

  由于VMware将用户划分的硬盘空间虚拟成SCSI硬盘,而Debian安装盘中没有对应的驱动,而安装其它Linux版本时,有的在一开始会加载SCSI驱动,所以没有这个问题。用户可以修改VMware的配置,将其改为模拟IDE硬盘就可以了

  2055 如何让Linux网关后面的WIN32下的用户直接点击FTP连接下载(platinum)

  modprobe ip_nat_ftp

  2056 请问用户的IP是动态的,如何在squid中限定在同一时间内同一账户在线的数量(陈绪)

  例如限制单个用户只能打开12个HTTP连接,采用下面的方法:

  acl all src 0.0.0.0/0.0.0.0

  acl limit maxconn 12

  acl localnet src 192.168.0.0/24

  http_access deny localnet maxconn

  http_access allow localnet

  http_access deny all

  2057 如果我用Squid代理的代理服务器在192.168.1.0这个网段里,例如它的IP是192.168.1.1,我有一些客户端在192.168.2.0这个网段内,怎样设置才能通过这个代理服务器出去(陈绪)

  如果不用透明代理,直接在浏览器的代理选项里设置就可以了。否则首先是在代理服务器的网卡上再挂一个IP为192.168.2.1,添加相应的路由,再修改Squid的squid.conf文件里的监听地址和端口等,最后在192.168.2.0网段的客户端设置其网关为 192.168.2.1,再直接在浏览器的代理选项里设置一下就可以了

  2058 如何使用netrc文件进行自动FTP(陈绪)

  在自己的home目录下建立一个权限为600,后缀名为.netrc的文件,内容如下:

  machine 172.168.15.1 login admin password admin

  这样用户以后每次登录FTP服务器172.168.15.1的时候,系统都会帮用户以用户名admin、密码admin登录。用户利用这个特征可以实现自动FTP。例如用户想要每天6:00到172.168.15.1机器上面获得/admin目录下的文件admin.txt,可以按如下方法做。

  建立一个文件ftp_cmd,内容如下:

  cd admin

  get amin.txt

  bye

  然后使用crontab -e设置定时任务:

  0 6 * * * ftp 172.168.15.1 < ftp_cmd

  2059 怎样得到ipchains的日志(陈绪)

  用户设置规则的时候必须加入-l参数才会在/etc/messages里面做记录。不过建议还是不加的好,不然用户的/etc/messages会变得非常大

  2060 如何不显示其它用户的消息(陈绪)

  用户可以使用mesg n来禁止别人给自己发送信息,其实就是禁止别人往自己的终端上面的写的权限。当别人试图再使用write给自己发送信息时,发送者将会看见提示如下:

  write: user has messages disabled on pts/n

  2061 minicom彩色显示(双眼皮的猪)

  minicom -s进行serial port配置,然后配置好以后,

  minicom -o -c on

  -o表示不初始化

  -c on表示color on

  2062 启用SELinux的Apache的配置文件httpd.conf里面修改DocumentRoot无用或者出现403 Forbidden错误(arbor)

  # chcon -u system_u -t httpd_sys_content_t -R website目录

  2063 apache2 的log文件位置如何自定义目录(tomi)

  编辑httpd.conf里的

  ErrorLog /var/log/http/error_log <== 这是管errorlog的

  CustomLog /var/log/http/access_log common <== 这是管accesslog的

  2064 更改eth0是否混杂模式(wwy)

  网卡eth0改成混杂模式:

  ifconfig eth0 promisc

  关闭混杂模式:

  ifconfig eth0 –promisc

  2065 字符界面下的ftp中,下载整个文件夹(陈绪)

  1. lftp IP

  2. > user username

  password

  3. > mirror -c --parallel=number remotedir localdir

  3a. > help mirror

  2066 如何让ssh只允许指定的用户登录(xinyv,好好先生,wolfg,我爱钓鱼)

  方法1:在/etc/pam.d/sshd文件中加入

  auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail

  然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,重新起动sshd服务即可。

  方法2:pam规则也可以写成deny的

  auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed

  方法3:在sshd_config中设置AllowUsers,格式如

  AllowUsers a b c

  重启sshd服务,则只有a/b/c3个用户可以登陆

  2067 在Linux下如何绑定IP地址和硬件地址(陈绪)

  可以编辑一个地址对应文件,里面记录了IP地址和硬件地址的对应关系,然后执行“arp –f 地址对应文件”。如果没有指定地址对应文件,则通常情况下一默认文件/etc/ethers为准。地址对应文件的格式如下:

  192.168.0.1 00:0D:61:27:58:93

  192.168.0.2 00:40:F4:2A:2E:5C

  192.168.0.3 00:0A:EB:5E:BA:8E

  2068 已知网络中一个机器的硬件地址,如何知道它所对应的IP地址(陈绪)

  在Linux下,假定要查“00:0A:EB:27:17:B9”这样一个硬件地址所对应的IP地址,可以使用以下命令:

  # cat /proc/net/arp |grep 00:0A:EB:27:17:B9

  192.168.2.54 0x1 0x6 00:0A:EB:27:17:B9 *eth2

  另外,还可以用“arp -a”命令查询:

  # arp –a|grep 00:0A:EB:27:17:B9

  (192.168.2.54)at 00:0A:EB:27:17:B9[ether] on eth2

  2069 基于Apache的HTTPD或Sendmail服务在启动时被挂起了,如何解决此问题(陈绪)

  遇到此类问题,请确认/etc/hosts文件中是否包含如下一行:

  127.0.0.1 localhost.localdomain localhost

  127.0.0.1 是网络的回路地址

  2070 如何使Linux系统对ping不反应(陈绪)

  要使Linux对ping没反应,也就是使Linux系统忽略ICMP包。用如下命令可以达到此目的:

  # echo 1 > /proc/sys/net/ipv4/icmp-echo-ignore-all

  若想恢复,可用如下命令:

  # echo 0 > /proc/sys/net/ipv4/icmp-echo-ignore-all

  2071 压缩传输文件或目录(FunBSD)

  传输到远程:tar czf - www | ssh server /"tar zxf -/"

  压缩到远程:tar czf - www | ssh server /"cat > [url]www.tar.gz[/url]/"

  解压到远程:ssh server /"tar zxf -/" < [url]www.tar.gz[/url]

  解压到本地:ssh server /"cat [url]www.tar.gz[/url]/" | tar zxf -

  2072 rsync同步压缩传输文件或目录(FunBSD)

  rsync -aze ssh --delete sample_dir/ remote_host:remote_dir/sample_dir/

  目录最后的/不能少

  2073 无需输入密码使用ssh密钥登录(FunBSD)

  ssh-keygen -b 1024 -t rsa

  ssh server /"mkdir .ssh; chmod 0700 .ssh/"

  scp ~/.ssh/id_rsa.pub server:~/.ssh/authorized_keys

  这样就不在提示密码,直接可以登录server了

  对文件复制、同步等操作都比较方便

  在ssh_config里加入这两句就更方便了

  ForwardAgent yes

  StrictHostKeyChecking no

  2074 wget下载整个网站(陈绪)

  wget -t0 -c -nH -np -b -m -P /localdir [url]http://freesoft.online.sh.cn/mirrors/ftp.redhat.com[/url] -o wget.log

  2075 命令行下发送带附件的邮件(陈绪)

  方法1. uuencode <in_file> <remote_file> | mail -s /"title/" mail@address

  <in_file> 本地需要作为附件的文件名。

  <remote_file> 邮件中的附件文件名,可以和<in_file>不同,其实内容一样。

  方法2. cat <mailcontent.txt> | mutt -s /"title/" -a <attachfile> mail@address

  <mailcontent.txt>邮件正文内容。

  <attachfile>本地需要作为附件的文件名。

  2076 高效率使用1000兆网卡(陈绪)

  系统加载模块时,可以根据实际情况调节参数,使网卡工作在最佳状态。驱动重新提供的可选择参数有速率、工作模式、自适应和流控等

  在Linux下,可以定义合法速率参数为0、10、100和1000。却省为0,表示网卡工作在自适应状态下,其他值分别为10Mb、100Mb和1000Mb。

  工作模式有全、半双工方式。0表示适应;1表示半双工;2表示全双工。

  自适应方式的有效期值范围0~3。0表示不设置流控;1表示仅对Rx流控;2表示仅对Tz流控;3表示对Rx/Tx双向流控。缺省为3

  2077 管理SSH监听端口(陈绪)

  从安全角度考虑,SSH应当取代Telnet。目前在Linux上使用广泛的SSH服务器软件sshd-config(默认路径是 /etc/ssh/sshd-config)文件中,Port 22是sshd监听的端口,即为连接到主机时需要使用的端口。使用以下代码可以指定sshd监听的接口地址:

  ListenAddress 192.168.0.254

  这样,就可以避免向未知的用户提供登录服务

  3 程序开发篇

  3001 linux下调试core文件(陈绪)

  gdb <progname> <core>

  <progname>:出错产生core dump的可执行程序。

  <core>: core dump的文件名,缺省是“core”

  3002 gcc abc.c得到的a.out不能运行(陈绪)

  ./a.out

  3003 c++ 编译时为什么出错信息说cout没定义(陈绪)

  include头文件完后加入 using namespace std;

  3004 新编译生成的gcc ,使用的标准连接库都在/usr/local/lib 下了,但使用的缺省的连接路径是 /usr/lib 怎样添加?(除了在每次编译时 增加 -L /usr/local/lib 以外)(sakulagi, hutuworm)

  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

  写到~/.bash_profile里面。

  增加一种简便办法:

  将/usr/local/lib加入/etc/ld.so.conf,然后运行一次ldconfig

  3005 RH9下GCC的安装(一起走过的日子,hutuworm)

  三种方法选一:

  (1)利用CD上rpm安装

  CD-1:compat-gcc-7.3-2.96.118.i386.rpm

  CD-1:compat-gcc-c++-7.3-2.96.118.i386.rpm

  CD-1:libgcc-3.2.2-5.i386.rpm

  CD-2:compat-gcc-g77-7.3-2.96.118.i386.rpm

  CD-2:compat-gcc-java-7.3-2.96.118.i386.rpm

  CD-2:compat-gcc-objc-7.3-2.96.118.i386.rpm

  CD-2:gcc-3.2.2-5.i386.rpm

  CD-2:gcc-c++-3.2.2-5.i386.rpm

  CD-2:gcc-g77-3.2.2-5.i386.rpm

  CD-2:gcc-gnat-3.2.2-5.i386.rpm

  CD-2:gcc-java-3.2.2-5.i386.rpm

  CD-2:gcc-objc-3.2.2-5.i386.rpm

  比如碰到系统提示:

  warning : gcc-3.2.2-5.i386.rpm : V3 DSA signature :MOKEY key ID db42a60e

  error : Failed dependencies :

  binutils >=2.13.90.0.18-9 is needed by gcc-3.2.2-5

  glibc-devel >=2.3.2-11.9 is needed by gcc-3.2.2-5...

  就先安裝glibc-devel包,依此类推

  (2)更好的方法就是在X-window下选“主菜单”──>“系统设置”──>“添加/删除应用程序”──>“开发工具”中的gcc并安装它

  (3) up2date gcc便可自动解决dependency问题

  3006 shell脚本为何无法运行(GOD_Father)

  第一,脚本权限要为可执行 #chmod +x test.sh

  第二,脚本所在的目录在环境变量PATH中,或者直接执行 #./test.sh

  3007 查看某个文件被哪些进程在读写(魏琼)

  lsof 文件名

  3008 查看某个进程打开了哪些文件(魏琼)

  lsof –c 进程名

  lsof –p 进程号

  3009 lsof是什么意思(魏琼)

  list open files

  3010 lsof用法小全(魏琼)

  lsof abc.txt 显示开启文件abc.txt的进程

  lsof -i :22 知道22端口现在运行什么程序

  lsof -c nsd 显示nsd进程现在打开的文件

  lsof -g gid 显示归属gid的进程情况

  lsof +d /usr/local/ 显示目录下被进程开启的文件

  lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

  lsof -d 4 显示使用fd为4的进程

  lsof -i [i] 用以显示符合条件的进程情况

  语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

  46 --> IPv4 or IPv6

  protocol --> TCP or UDP

  hostname --> Internet host name

  hostaddr --> IPv4位置

  service --> /etc/service中的 service name (可以不止一个)

  port --> 端口号(可以不止一个)

  例子: TCP:25 - TCP and port 25

  @1.2.3.4 - Internet IPv4 host address 1.2.3.4

  [email]tcp@ohaha.ks.edu.tw[/email]:ftp - TCP protocol host:ohaha.ks.edu.tw service name:ftp

  lsof -n 不将IP转换为hostname,预设是不加上-n参数

  例子: lsof -i [email]tcp@ohaha.ks.edu.tw[/email]:ftp -n

  lsof -p 12 看进程号为12的进程打开了哪些文件

  lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新

  -r,lsof会永远不断的执行,直到收到中断讯号

  +r,lsof会一直执行,直到没有档案被显示

  例子:不断查看目前ftp连接的情况:lsof -i [email]tcp@ohaha.ks.edu.tw[/email]:ftp -r

  lsof -s 列出打开文件的大小,如果没有大小,则留下空白

  lsof -u username 以UID,列出打开的文件

  4 经典图书篇

  4001 GNU/Linux高级网络应用服务指南(陈绪)

  linuxaid网站

  机械工业出版社

  优点:又全又精,全都是实战之作

  缺点:针对版本较低,为redhat 6.2

  4002 Linux Apache Web Server管理指南(Linux Apache Web Server Administration)(陈绪)

  Charles Aulds 马树奇/金燕译

  电子工业出版社

  定价:46元

  优点:目前我还没有发现哪个关于apache的问题这本书没有讲过

  缺点:针对1.3.x,最新的针对2.0.*的英文版已出,中文版待出

  4003 Linux内核情景分析(陈绪)

  毛德操/胡希明

  浙江大学出版社

  优点:太透彻了,没法不懂

  缺点:还是版本问题,内核更新太快了,不过还是必读

  4004 Unix环境高级编程(陈绪)

  Richard Stevens

  机械工业出版社

  优点:博大精深

  缺点:初学者是很难理解的,否则怎么叫《高级编程》呢

  4005 编程精粹--Microsoft编写优质无错c程序秘诀(陈绪)

  Steve Maguire

  电子工业出版社

  优点:不说了,作者是微软的资深工程师

  缺点:很难找了,1994年出的

  4006 Understanding the Linux Kernel, 2nd Edition(hutuworm)

  Daniel P. Bovet & Marco Cesati

  O/'Reilly出版社

  优点:读了这本书之后,你就会明白在什么情况下Linux具有最佳的性能,以及它如何面对挑战,在各种环境中提供进程调度、文件访问和内存管理时的优良的系统响应。作者通过解释其重要性来引入每一个题目,并将内核操作与Unix程序员和用户熟悉的系统调用或实用程序联系起来。

  4007 UNIX操作系统教程(英文版)(弱智)

  Syed Mansoor Sarwar等

  机械工业出版社

  优点:浅显易懂,着重unix基础概念和整体理解,顺便复习英语。

  另外:机械工业出版社已经出版了中文版,名称为“UNIX 教程”

  4008 UNIX编程环境(弱智)

  Brian W.Kernighan, Rob Pike 陈向群等译

  机械工业出版社

  优点:深入浅出地讲解如何使用UNIX及各种工具,简单介绍Unix编程环境;对比“UNIX环境高级编程”,此书适合新手入门

  4009 The Art of UNIX Programming(hutuworm)

  Eric Steven Raymond

  [url]http://catb.org/~esr/writings/taoup/html/[/url]

  优点:E.S. Raymond的经典著作

  4010 unix网络编程--卷一 套接口API和X/Open传输接口API(slg1972)

  Richard Stevens

  清华大学出版社

  优点:详细地讲解unix网络的编程

  4011 unix网络编程--卷二 进程间通讯(slg1972)

  Richard Stevens

  清华大学出版社

  优点:详细讲解unix的进程之间,线程之间的关系,及各种不同标准的进程编程的异同

  4012 unix网络编程--卷三 应用程序(slg1972,hutuworm)

  未出,因为Richard Stevens大师英年早逝,再也不可能完成这计划中的第三卷了。据说其未竟稿可能由Gary R. Wright整理续写出来,但是自大师驾鹤以来一直杳无音信

  4013 基于C++ CORBA高级编程(slg1972)

  Michi Henning,Steve Vinoski

  清华大学出版社

  优点:中间件的好书,通向corba应用的必备资料

  4014 unix linux网管通鉴(odin_free)

  电子版的

  优点:我见过关于unix知识最全面、最实用的chm文档,相当于一个小型网站,里面支持全文检索,推荐所有还没有的兄弟姐妹们下载

  4015 [url]www.chinaoy.com[/url](aomin5555)

  不错,挺全的,图书下载的好网址:

  redhat linux9.0 官方入门指南

  ?redhat linux9.0 官方安装指南

  ?redhat linux9.0 官方定制设置手册

  ?redhat linux基础教程

  ?Linux 参考大全

  ?清华论坛linux精华

  ?Linux系统管理员指南中文手册

  ?Linux网站建设和维护全攻略

  ?redhat linux8.0 安装手册

  ?Linux环境database管理员指南

  4016 Linux Advanced Routing & Traffic Control(hutuworm)

  专门讲LINUX IPROUTE2的书,大概100页左右,[url]www.lartc.org[/url]

  中文版在:[url]http://www.lartc.org/LARTC-zh_CN.GB2312.pdf[/url]

  4017 Debian User强烈推荐看的书(NetDC)

  Debian Reference (Debian参考手册)

  [url]http://qref.sourceforge.net/[/url]

  简体中文版的pdf文档:

  [url]http://qref.sourceforge.net/Debian/reference/reference.zh-cn.pdf[/url]

  4018 Advanced Bash-Scripting Guide(hutuworm)

  An in-depth exploration of the art of shell scripting.

  Mendel Cooper. <[email]thegrendel@theriver.com[/email]>.

  [url]http://www.tldp.org/LDP/abs/abs-guide.pdf[/url]

  优点:Bash编程的圣经,而且该书作者不断在更新其内容,一两个月就会翻新一个版本,值得一读,一读再读

  4019 JAVA完美经典(陈绪)

  江义华 编著 林彩瑜 文编

  中国铁道出版社

  定价:65元

  优点:不愧是台湾同胞的力作,讲解清楚,知识全面,我看了之后,收获颇丰

  4020 Thinking in JAVA(陈绪)

  Burce Eckel著

  到[url]http://www.BruceEckel.com[/url]下载最新版本

  优点:经典之作,深入剖析java的核心问题

  5 mysql相关篇

  5001 mysql的数据库存放在什么地方(陈绪)

  1. 如果使用rpm包安装,应该在/var/lib/mysql目录下,以数据库名为目录名

  2. 如果源码安装在/usr/local/mysql中,应该在/usr/local/mysql/var中,以数据库名为目录名

  5002 从mysql中导出和导入数据(陈绪)

  导出数据库

  mysqldump 数据库名 > 文件名

  导入数据库

  mysqladmin create 数据库名

  mysql 数据库名 < 文件名

  5003 忘了mysql的root口令怎么办(陈绪)

  # service mysql stop

  # mysqld_safe --skip-grant-tables &

  # mysqladmin -u user password /'newpassword/'/'

  # mysqladmin flush-privileges

  5004 快速安装php/mysql(陈绪)

  确保使用系统自带的apache,从安装光盘中找出所有以mysql及php-mysql开头的rpm包,然后运行#rpm -ivh mysql*.rpm php-mysql*.rpm; mysql_install_db; service mysql start

  5005 修改mysql的root口令(陈绪,yejr)

  大致有2种方法:

  1、mysql>mysql -uroot -pxxx mysql

  mysql>update user set password=password(/'new_password/') where user=/'user/';

  mysql>flush privileges;

  2、格式:mysqladmin -u用户名 -p旧密码 password 新密码

  #mysqladmin -uroot -password ab12

  注:因为开始时root没有密码,所以-p旧密码一项就可以省略了

  5006 如何使用rpm方式安装mysql(yejr)

  首先下载合适的rpm包,例如下载了文件 MySQL-5.0.19-0.i386.rpm

  用一下方法安装:

  #rpm -ivhU MySQL-5.0.19-0.i386.rpm

  通常情况下,安装完这个rpm包后,只具备有mysqld服务功能,其它相关的client程序和开发包还需要另外安装

  #rpm -ivhU MySQL-devel-5.0.19-0.i386.rpm

  #rpm -ivhU MySQL-client-5.0.19-0.i386.rpm

  5007 如何安装已经编译好了的mysql二进制包(yejr)

  首先下载合适的二进制包,例如下载了文件 mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz

  #groupadd mysql

  #useradd -g mysql mysql

  #cd /usr/local

  #tar zxf mysql-standard-4.1.13-pc-linux-gnu-i686.tar.gz

  #ln -s mysql-standard-4.1.13-pc-linux-gnu-i686 mysql

  #cd mysql

  #scripts/mysql_install_db --user=mysql

  #chgrp -R mysql *

  #bin/mysqld_safe --user=mysql &

  有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现

  5008 如何自己编译mysql(yejr)

  以redhat linux 9.0为例:

  下载文件 mysql-4.1.13.tar.gz

  #tar zxf mysql-4.1.13.tar.gz

  #cd mysql-4.1.13

  #./configure --prefix=/usr/local/mysql --enable-assembler //

  --with-mysqld-ldflags=-all-static --localstatedir=/usr/local/mysql/data //

  --with-unix-socket-path=/tmp/mysql.sock --enable-assembler //

  --with-charset=complex --with-low-memory --with-mit-threads

  #make

  #make install

  #groupadd mysql

  #useradd -g mysql mysql

  #chgrp -R mysql /usr/local/mysql/

  #/usr/local/mysql/bin/mysqld_safe --user=mysql &

  有什么个性化的配置,可以通过创建 /etc/my.cnf 或者 /usr/local/mysql/data/my.cnf,增加相关的参数来实现

  5009 如何登录mysql(yejr)

  使用mysql提供的客户端工具登录

  #PATH_TO_MYSQL/bin/mysql -uuser -ppassword dateabase

  5010 mysqld起来了,却无法登录,提示/"/var/lib/mysql/mysql.sock/"不存在(yejr)

  这种情况大多数是因为你的mysql是使用rpm方式安装的,它会自动寻找 /var/lib/mysql/mysql.sock 这个文件,

  通过unix socket登录mysql。

  常见解决办法如下:

  1、创建/修改文件 /etc/my.cnf,至少增加/修改一行

  [mysql]

  [client]

  socket = /tmp/mysql.sock

  #在这里写上你的mysql.sock的正确位置,通常不是在 /tmp/ 下就是在 /var/lib/mysql/ 下

  2、指定IP地址,使用tcp方式连接mysql,而不使用本地sock方式

  #mysql -h127.0.0.1 -uuser -ppassword

  3、为 mysql.sock 加个连接,比如说实际的mysql.sock在 /tmp/ 下,则

  # ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock即可

  5011 如何新增一个mysql用户(yejr)

  格式:grant select on 数据库.* to 用户名@登录主机 identified by /"密码/"

  例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:

  mysql>grant select,insert,update,delete on *.* to test1@/"%/" Identified by /"abc/";

  但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。

  例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

  mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by /"abc/";

  如果你不想test2有密码,可以再打一个命令将密码消掉。

  mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by /"/";

  另外,也可以通过直接往user表中插入新纪录的方式来实现

  5012 如何查看mysql有什么数据库(yejr)

  mysql>show databases;

  5013 如何查看数据库下有什么表(yejr)

  mysql>show tables;

  5014 导出数据的几种常用方法(yejr)

  1、使用mysqldump

  #mysqldump -uuser -ppassword -B database --tables table1 --tables table2 > dump_data_20051206.sql

  详细的参数

  2、backup to语法

  mysql>BACKUP TABLE tbl_name[,tbl_name...] TO /'/path/to/backup/directory/';

  详细请查看mysql手册

  3、mysqlhotcopy

  #mysqlhotcopy db_name [/path/to/new_directory]

  或

  #mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory

  或

  #mysqlhotcopy db_name./regex/

  详细请查看mysql手册

  4、select into outfile

  详细请查看mysql手册

  5、客户端命令行

  #mysql -uuser -ppassword -e /"sql statements/" database > result.txt

  以上各种方法中,以mysqldump最常用

  5015 如何在命令行上执行sql语句(yejr)

  #mysql -uuser -ppassword -e /"sql statements/" database

  5016 导入备份出来文件的常见方法(yejr)

  1、由mysqldump出来的文件

  #mysql -uuser -ppassword [database] < dump.sql

  2、文件类型同上,使用source语法

  mysql>source /path_to_file/dump.sql;

  3、按照一定格式存储的文本文件或csv等文件

  #mysqlimport [options] database file1 [file2....]

  详细请查看mysql手册

  4、文件类型同上,也可以使用load data语法导入

  详细请查看mysql手册

  5017 让mysql以大内存方式启动(陈绪)

  将/usr/share/mysql下的某个mysql-*.cnf(如1G内存时为mysql-huge.cnf)拷贝为/etc/mysql.cnf文件,并重启mysql

linux dns 设置 小知识

smailes 转到全文
编辑resolv.conf,通常Unix下使用/etc/resolve.conf,Linux一般使用/etc/resolv.conf

增量备份 差量备份

smailes 转到全文
增量备份(incremental backup)

  增量备份比完全备份快得多。在进行增量备份,只有那些在上次完全或者增量备份后被
修改了的文件才会被备份。正是由于这个原因,增量备份所需时间仅为完全备份的几分之一
。为了确认一个文件是否在上次完全备份后被修改,备份软件会检查一个叫做归档位(arch
ive bit)的设置项。

  当一个文件以任何形式被更改或者从一个位置拷贝到了另一个位置,归档位都会记录下
这一变化,以便这个文件在下次备份时被包含在内。完全备份在进行前不会关心这些文件的
归档位是否已经被设置,不过完全备份会在完成后清除归档位。任何在随后时间里被修改过
的文件又会在归档位中记录下来。

  差量备份(differential backup)不会在备份完成后清除归档块,而增量备份会在完成
后清除归档块,这样就能避免有些文件不必要地再次被备份。使用归档块还能使用户真实地
查看到那些文件需要备份。

  速度更快的备份也需要付出有些代价——在这个情况下, 就是恢复的时间。当从增量备
份里恢复时,用户需要最近一次的完全备份和自此以后的所有增量备份。例如,如果用户在
星期五进行了完全备份,然后在星期一、星期二、星期三进行了增量备份,然后服务器在星
期四早上崩溃了,那么用户就需要4盒磁带 - 星期五的完全备份盒星期一、星期二、星期三
的增量备份。

  差量备份

  差量备份和增量备份往往容易被弄混淆,不过两者之间有一个明显的区别。增量备份会
备份那些自从上次完全备份或者增量备份之后被修改过的文件,差量备份会备份自从上次完
全备份后被修改过的文件。从差量备份中恢复也是很快的,因为只需要两份磁带——最后一
次完全备份和最后一次差量备份。

  差量备份在那些拥有充足空间和时间来进行备份的环境中很适用。在进行差量备份时,
软件会寻找那些设置了归档块的文件,然后仅仅备份这些文件。

  上面已经讲过了,差量备份拷贝任何自从上次完全备份经过了修改的文件,而完全备份
会清除归档块中的信息,差量备份不会改动归档块的状态。这样做的优点是恢复时只需要2份
磁带就可以进行完全的复原。不利之处是,每次进行差量备份,都非常有可能把那些在上次
完全备份后被修改了,不过在上次差量备份后没有被修改过的文件备份不止一次。

rpm Header V3 DSA signature: NOKEY 错误解决

smailes 转到全文
 rpm -ivh lm_sensors-2.8.8-5.i386.rpm lm_sensors-devel-2.8.8-5.i386.rpm --force --nodeps
warning: lm_sensors-2.8.8-5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Preparing...                ########################################### [100%]
   1:lm_sensors-devel       ########################################### [ 50%]
   2:lm_sensors             ########################################### [100%]

原有逻辑卷添加第二个硬盘

smailes 转到全文
 
fdisk /dev/sdb                                          
n
p
1
回车
回车
t
8e
w
 
 
pvcreate /dev/sdb1
vgextend VolGroup00 /dev/sdb1
lvextend -L +8G /dev/VolGroup00/LogVol00
ext2online /dev/VolGroup00/LogVol00
 

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告