Everything, Nothing ...

Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Wednesday, July 09, 2008

架设基于Linux的服务器集群

架设基于Linux的服务器集群
架设基于Linux的服务器集群
--------------------------------------------------------------------------------

作者: linuxaid 发布日期: 2002.11.12 22:14

一. 什么是服务器集群
  随着Internet的爆炸性增长,Internet与人的生活越来越息息相关,通过Internet上进行交易也就越来越受关注。近几年,电子商务的年增长均超过100%。服务器的工作量也迅速增长,所以服务器(特别是一个受人欢迎的WEB服务器)很容易在访问高峰时期过载。


  而另一方面,计算机从1946年单纯的科学计算任务到现在大量纷繁复杂的信息处理,工作量越来越大,需要越来越快的处理能力。所以计算机界就不得不不断研究更快的处理器,存储器,以适应这一需求。
  然而,科学家们意识到,单块处理器的速度发展空间是有限的,为什么不能让计算机象人一样协同工作,"群策群力"地将工作完成好呢!这时,就掀起了"并行计算"的研究。
  举个例子来说,我们架设了一台WWW服务器,上面构建了一个电子商务网站,然而随着时间的推移,名声越来越大,这时点击率也就越来越高,WWW服务器的负载也就越来越高。这种情况下,我们就必须提升WWW服务器的能力,以满足以益增长的服务请求。这时,我们就面临两种选择:
  1)升级WWW服务器,采用更快的CPU,增加更多的内存,使其更具有POWER;但日益增长的服务请求又会使服务器再次过载,需要再次升级,这样就陷入了升级的怪圈。还有,升级时还得考虑到服务如何接续,能否中止!
  2)增加WWW服务器,让多台服务器来完成相同的服务。
  这种方法就是服务器集群,通过并行技术来大大提升系统性能。也就是这一章的主要内容,这种方法具有很好的扩展性,而且可以最大限度地利用已有投资。
  1.1.集群的概念
  集群,是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
近几年来,微处理器、内存、总线技术、网络技术有了非常大的进步,软件的并行技术也有了非常大的进步,这使得让一组廉价的个人电脑与工作站协同工作成为可能,甚至可以与拥有强大的芯片处理能力的超级计算机竞争。
  比如,16个普通微处理器组成的集群系统可以达到亿次级浮点计算机能力,而且总的成本小于40万元。
不幸的是,建造一个集群并不是一件简单的事件。集群的组成部分必须根据要运行的主要应用进行调整,以使之运行在最佳状态。这此因素带来的结果就是,建造集群系统不是只有一个标准的方案,在本章中,我们就会看到许多种建造方案。
  集群技术是计算机系统结构的前沿领域,笔者也仅是略有了解,希望本文能起到抛砖引玉之用。 1.2.并行技术这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
二. 使用MPICH构建一个四节点的集群系统
  这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
2.1 所需设备
  1).4台采用Pentium II处理器的PC机,每台配置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器。
  2).5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接。)
  3).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线
  4).1个快速以太网(100BASE-Tx)的集线器或交换机
  5).1张Linux安装盘
  2.2 构建说明
  对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力。如果是这样,请找一些有经验的专业人士寻求帮助。
  1. 准备好要使用的采用Pentium II处理器的PC机。确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的PC机上安装上一块快速以太网卡。当然别忘了要加上附加的内存。确定完成后盖上机箱,接上电源。
  2. 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上。使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源。
  3. 使用LINUX安装盘在每一台PC机上安装。请确信在LINUX系统中安装了C编译器和C的LIB库。当你配置TCP/IP时,建议你为四台PC分别指定为192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC为你的服务器节点(拥有两块网卡的那台)。在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址。
  4.当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:
  192.168.1.1 node1 server
  192.168.1.2 node2
  192.168.1.3 node3
  192.168.1.4 node4
  编辑每台机器的/etc/hosts.equiv文件,使其包含以下几行:
    node1
    node2
    node3
    node4
  以下的这些配置是为了让其能使用MPICH's p4策略去执行分布式的并行处理应用。
  1. 在服务器节点,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:
/mirror node1(rw) node2(rw) node3(rw) node4(rw)


  2. 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:
    server:/mirror /mirror nfs rw,bg,soft 0 0
  3. /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发。
  4. 在服务器节点上,安装MPICH。MPICH的文档可在
http://www.mcs.anl.gov/mpi/mpich/docs.html获得。
  5.任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如/mirror/username,用来存放MPI程序和共享数据文件。这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序。
  2.3 MPICH安装指南
  1.如果你有gunzip,就d下载mpich.tar.gz,要不然就下载mpich.tar.Z。也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目录拿。(如果你觉得这个东西太大,你可以到pub/mpi/mpisplit中取分隔成块的几个小包,然后用cat命令将它们合并)
  2.解压:gunzip c mpich.tar.gz |tar xovf-(或zcat mpich.tar.Z|tar xovf-)
  3.进入mpich目录
  4.执行:./configure为MPICH选择一套适合你的实际软硬件环境的参数组,如果你对这些默认选择的参数不满意,可以自己进行配置(具体参见MPICH的配置文档)。最好选择一个指定的目录来安装和配置MPICH,例如:
    ./configure -prefix=/usr/local/mpich-1.2.0
  5.执行:make >& make.log 这会花一段较长的时间,不同的硬件环境花的时间也就不同,可能从10分钟到1个小时,甚至更多。
  6.(可选)在工作站网络,或是一台单独的工作站,编辑mpich/util/machines/machines.xxx(xxx是MPICH对你机器体系结构取的名称,你能很容易的认出来)以反映你工作站的当地主机名。你完全可以跳过这一步。在集群中,这一步不需要。
  7.(可选)编译、运行一个简单的测试程序:
    cd examples/basic
    make cpi
    ln s ../../bin/mpirun mpirun
    ./mpirun np 4 cpi
  此时,你就在你的系统上运行了一个MPI程序。


  8.(可选)构建MPICH其余的环境,为ch_p4策略使用安全的服务会使得任何启动速度加快,你可以执行以下命令构建:
    make serv_p4
  (serv_p4是一个较新的P4安全服务的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一个更快版本,但他需要tk 3.6版的源代码。如果你有这个包,你就用以下命令可以构建它:
     make nupshot
  9.(可选)如果你想将MPICH安装到一个公用的地方让其它人使用它,你可以执行:
  make install 或 bin/mpiinstall你可以使用-prefix选项指定MPICH安装目录。安装后将生成include、lib、bin、sbin、www和man目录以及一个小小的示例目录,(可选)到此你可以通告所有的用户如何编译、执行一个MPI程序。
  2.4 费用统计
  这个小的集群方案总的费用大致如下:
  设备费用:
  4台 Pentium II CPU /64MB内存, 2GB的硬盘带EIDE CD-ROM 的机器: 24000元
  5块快速以太网卡: 800元
  1个快速以太网的集线机:2000元
  5根双绞线:50元
  软件费用:
  LINUX安装光盘:50元
  MPICH:0元
  合计:26900元。
  这样一个集群系统可以用于一些大量的科学计算,信息处理,而且其性价比实在是太好了,仅需不到三万元。
你可以通过这个链接引用该篇文章:http://castep.bokee.com/viewdiary.12884306.html

RedHat MPI SSH科学集群安装指南

RedHat+MPI+SSH科学集群安装指南

赵亮 王忠(感谢中国Linux论坛王忠文章)


1.系统配置
CPU --- AMD athlon 1G;AMD athlon 1.1G
RAM --- SDRAM 768M;DDR 256M
OS --- RedHat linux 7.3,2.4.18
MPI --- mpich 1.2.4,http://www-unix.mcs.anl.gov/mpi/mpich源码下载
网络 --- 100M realtek8139,百兆交换机

2.linux安装
安装过程就不多说了。唯一需要注意的是安装时,要把SSH选为可信赖的服务。安装以后,
应该保证各节点之间能够用ssh相互登录。每个节点的sshd都应该能正常提供服务。Redhat
7.x对各服务的控制其实是通过在ipchains里面对各个端口进行访问控制来实现的,而不是
使用tcp-wrapper的hosts.allow和hosts.deny文件来进行控制。如果安装系统后,别的机器
无法用ssh登录,则可以用ipchains -L命令查看ipchains rules,进行正确的配置,使得ssh
服务正常工作。若你对系统安全不是太在乎,则可以使用ipchains -F命令将所有的规则清空。

主机名:shallow sea
● 修改/etc/hosts文件,将所有节点名称及其ip地址填入。例如:
211.64.128.129 shallow
211.64.128.217 sea

每个节点都进行类似的配置。这样做的目的是使节点之间能够通过shallow和sea的名称相
互访问。你可以通过ping noden 或 ssh noden进行测试。

● 修改(或创建)/etc/hosts.equiv文件
将所有你允许访问本机进行mpi计算的机器名填入,一行一个机器名。这一步是为了使节点
对其它的节点放权。
例如,我的机器shallow的/etc/hosts.equiv文件是这样的:
shallow #给自己放权,这样在只有一台机器时也可以模拟并行计算环境
sea

在sea的/etc/hosts.equiv文件:
shallow #对shallow放权
sea

● 使用nfs共享文件
首先决定一个用于启动集群计算的用户名,不提倡使用root进行集群计算。这里在每个节
点上建立新用户mpi,他们的主目录都是/home/mpi,假设用sea做为计算的服务节点,在sea
上建立~/mirror,修改文件/etc/exports,在其中增加一行:
/home/mpi/mirror shallow(rw) sea(rw)
使得机器shallow和sea的用户可以使用/home/mpi/mirror。
在其他节点shallow也建立/home/mpi/mirror,在/etc/fstab文件中增加一行:
sea:/home/mpi/mirror /home/mpi/mirror nfs rw,bg,soft 0 0
这样节点shallow即可使用mirror与sea共享文件。

● 修改~/.bash_profile文件
建议把将来计算程序放在相同的路径上,当然也可以不放在同一个目录下面,但是用起来比
较麻烦,需要一一指定每个节点程序的路径。譬如你的程序为:fpi.f和a.out,把a.out放在
~/mpi/mirror/下即可。
修改~/.bash_profile文件,主要是加入下列几行脚本:
export PATH=$PATH:/usr/local/mpich/bin
export MPI_USEP4SSPORT=yes
export MPI_P4SSPORT=22
export P4_RSHCOMMAND=ssh
这里我们预定了将来mpich的运行环境安装在目录/usr/local/mpich下面。其余的三个变量是
用来通知mpi运行环境采用ssh来作为远程shell。

linux的运行环境到此就配置完毕了。

3.配置ssh
以设定的用于启动mpi计算的用户登录,运行ssh-keygen -t dsa(SSH2)或是ssh-keygen(SSH1)
-t rsa1,这将生成一个私有/公开密钥对,分别存放在~/.ssh/id_dsa和~/.ssh/id_dsa.pub或是
~/.ssh/identity和~/.ssh/identity.pub文件中。然后进行访问授权,运行:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys 或是cp ~/.ssh/id-dsa.pub ~/.ssh/authorized_keys2
chmod go-rwx ~/.ssh/authorized_keys或是chmod go-rwx ~/.ssh/authorized_keys2
ssh-agent $SHELL
ssh-add
在每个节点干一遍。
将所有节点的密钥authorized_keys或是authorized_keys2收集起来,放到一个密钥文件中,
然后分发到各个节点。这样做的目的是使各节点相互之间访问无需输入密码。在每个节点登
录其它节点,ssh shallow,则在~/.ssh/下生成一个known_hosts文件,里面记录登录用户密钥。

4.下载、编译、安装mpich 1.2.3
下载最新的mpich 1.2.4:ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz。拷贝到一个临时目录下,
我放在/home/mpi/mirror下了。
首先,用tar xvfz mpich.tar.gz解压。生成mpich-1.2.4目录。
切换到mpich-1.2.4目录。
运行预处理:./configure -c++=pgCC -cc=pgcc -fc=pgf77 -f90=pgf90 \
-cflags="-Msignextend -tp athlon -DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1" \
-fflags="-tp athlon" -c++flags="-tp athlon" -f90flags="-tp athlon"\
-prefix=/usr/local/mpich -opt=-fast -rsh=ssh
我采用了Portland Group的编译器,因此需要在预处理时指定使用的编译器和常用的选项,
-tp athlon为AMD athlon产生代码。mpich的安装位置为/usr/local/mpich,运行环境的远程shell
为ssh。
-DUSE_U_INT_FOR_XDR -DHAVE_RPC_RPC_H=1在有的系统上不需要
有时候需要设置环境变量:
setenv LIBS "-L/usr/local/pgi/linux86/lib -lpgftnrtl -lpgc"

编译:make
安装:make install

修改文件/usr/local/mpich/share/util/machines/machines.LINUX。指定可供集群计算的节点,我
的是这个样子的:
shallow
sea
若是多CPU计算机,需要在节点名称后用:num加以说明。
每个节点都这样干一遍。

5. 测试并行计算
以设定的用户登录(我的是mpi)sea,将mpich-1.2.4/examples/basic/fpi.f文件拷贝到
~/mpi/mirror下,编译:
mpif77 fpi.f,生成a.out文件,运行:
mpirun -np 2 a.out
这里采用2个节点进行计算。进行ssh连接后,程序等待输入,这时可以在节点机上用命令:
ps -A | grep aout
查看进程,应该能看到数个fpi进程,其中第一个是本机所执行的进程,其它的是异地进程
镜像。在sea上输入一个整值,再次在各节点上执行
ps -A | grep a.out
可以发现计算时间在不断增长,表明计算的确是在多台主机上同时进行的。
至此,整个安装配置过程结束,如果有问题,多看看mpich手册都可以解决。


你可以通过这个链接引用该篇文章:http://castep.bokee.com/viewdiary.13145185.html

RedHat AS 3.0下高可用性集群配置

RedHat AS 3.0下高可用性集群配置

>
引用:
最后修改于2004-8-4,将console下的配置命令已经补充上来....请大家参考


此篇文章参考了chinaunix论坛rdd兄弟文章http://www.chinaunix.net/jh/4/325828.html(Vmware下RedHat AS2.1集群配置StepbyStep)的部分内容,另外参考了redhat官方网站上说明文档《Red Hat Cluster Suite Configuring and Managing a luster》,较之AS2.1的HA配置,AS3.0上的配置更加人性化,不过较之AS2.1的配置也有了不少不一样的地方,这也是我没能按rdd兄弟的文章配置成功的原因,网络上又几乎没有关于redhat AS3.0HA配置中文资料,连E文的很少,我找来找去只找到了redhat官方网站上的配置说明
―――――――――――――――――――――――――――――――――――――――
实施系统软硬件环境
硬件:p4 2.4G,80G,512M DDR
宿主机系统:win2000pro sp4
虚拟机软件:Vmware GSX Server 3.1
安装Vmware GSX Server 3.1和Redhat AS3.0的基本系统
1.安装Vmware GSX Server3.1
  相信大家都安装过workstation,过程都差不多,这里就不多废话了,有一点要提醒大家注意的是,VMware GSX Server2.5无法打开Vmware workstation4.52虚拟出来的系统,GSX Server2.5比4.52出来的要早,所以。。。。。。。
2.安装Redhat AS3.0
  切记安装上xwindows桌面系统,设置此系统hostname为linux1,ip为10.0.0.155
3.COPY并配置另一套AS3.0系统将安装的第一套系统的文件复制到另一个文件夹,用编辑器打开rhel3.vmx文件修改displayName?=?"Linux1"到"Linux2"
 然后修改此系统的虚拟硬件配置,将网卡删除如下图所示,进行此步的原因是因为从第一套系统COPY过来的文件如果同时运行,两个系统的MAC地址会发生冲突由于将网卡删除,所以必须删除后启动第二套系统,启动过程中kudzu进程会提示系统有多余的配置文件(就是已经被删除网卡的配置文件),选择将多余的配置文件删除,然后再关闭linux2系统,重新给linux2添一块网卡。再启动linux2
启动linux2,启动过程中,由于重新添加了网卡,所以系统检测到了它,再重新配置网卡,设置linux2 IP地址为10.0.0.156,其它同linux1。(注:这样有人可能会觉得麻烦,不过网卡MAC地址冲突,这也是没办法的事,谁让咱们偷懒不想再重装一套系统呢)
这时候检查以下各文件,修改主机名,网络配置文件
#vi?/etc/sysconfig/network
将HOSTNAME=linux1改为HOSTNAME=linux2
#vi?/etc/hosts
将10.0.0.155 linux1修改为10.0.0.156 linux2
(注:有些朋友可能会问,怎么不直接把hosts文件里把linux1,心跳地址都写进去,其实我现在这么做是为了让文档更清晰些,到下一步的时候再添加这些,虽然稍微麻烦点,但是可以避免一些朋友看不明白)
这样两套完整的AS3.0的系统就配置成功,进入第二阶段
二、使用Vmware虚拟出HA必需硬件设备,并进行配置
1.给两个系统各虚拟一个新的网卡
  关掉两个系统,给两系统各一个增加以网桥方式工作的网卡,方法与第一图类似
2.创建共享磁盘
给HA系统创建共享磁盘sdb,大小为500M(自定义),如下图所示
  先打开linux1系统的设置,创建磁盘,磁盘文件名为,share.vmdk 选中Allocate all disk space now这一选项
建议将新加磁盘的装入点设为scsi 1:0,如下图所示,这就是系统的裸设备
然后打开linux2的设置,同样给linux2添加共享磁盘,不过这次选择已经存在的磁盘,使用的共享磁盘就是刚才为linux1创建的那个磁盘,如下图所示
  同样在Configuration?editor?里面修改共享磁盘的”Vitual?disk?node”为scsi?1:0
  这样,就给两个系统各创建了一个新网卡,又创建了一个共享磁盘。由于系统启动的时候会锁定磁盘,所以当启动linux1后共享磁盘被锁定了,linux2就起不来了,因此必须做一下设置,用编辑器打开两个Vmware文件夹的rhel3.vmx文件,最后增加一行:
Disk.locking?=?false
这样硬件就配置好了
3.配置新添加的网卡
启动linux1系统,系统在启动时候会检测到新添加的网卡,选择配置,将第二块网卡的IP设置为192.168.123.1,其它默认
修改linux1系统的/etc/hosts文件,改后内容如下
10.0.0.155 linux1
192.168.123.1 linux1
10.0.0.156 linux2
192.168.123.2 linux2
同时启动linux2系统,设置方法同linux1
4.配置共享磁盘
在linux1在shell里运行
#fdisk /dev/sdb //注使用parted也可以
将添加的共享磁盘,分为两个区:sdb1和sdb2,各250M大小
在两台服务器上分别编辑/etc/sysconfig/rawdevices文件,将分区绑定到裸设备。
#vi?/etc/sysconfig/rawdevices
加入
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2?
重启服务
#service?rawdevices?restart
启动完成后执行
#raw –qa,会显示以下内容
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
格式化共享磁盘,每个块大小为4K
mkfs.ext3 -j -b 4096 /dev/sdb1
mkfs.ext3 -j -b 4096 /dev/sdb2
注明:使用-b选项将磁盘区块设置为4K,过小的区块会导致磁盘检查的时候耗费过多的时间
然后在linux2里修改/etc/sysconfig/rawdevices同上,然后重新启动rawdevices服务,raw –qa检查系统
至此,硬件准备工作完成
三、安装并配置基本的HA系统
在这里我们只将AS3.0自带的CLUSTER服务配置好,涉及到具体的http,ftp,mysql,oracle的HA服务会在下一部分介绍
安装确认系统内安装了AS3.0的HA软件包
我们在这里要用到的软件包主要有两个,clumanager和redhat-config-cluster
请用rpm –q 命令检查系统是否安装这两个软件包,如果没有安装可以通过以下方法安装

使用ISO或光盘,AS3.0共有八张光盘,我们平时常用的只有前四张,另外有四张扩展光盘,其中扩展光盘的第三张是集群软件,还包括了IPVS

等软件,从光盘上安装,如下图或者通过网络上下载到这两个软件包进行单独安装
rpm --Uvh clumanager-..rpm
rpm --Uvh redhat-config-cluster-.noarch.rpm
注:网络上比较多的是src软件包,下载下来以后得使用rpmbuild命令进行重新编译,然后在安装
开始基本的HA配置
在linux1系统上,启动xwindows,我这里是gnome,开始运行配置工具
选择左下角图标 => 系统设置 =>服务器设置 => Cluster(或者在命令行里运行#redhat-config-cluster)
出现以下画面(图里左上角乱码是因为我用的是远程XWINDOWS,设置有问题)

下一步操作,点菜单栏里的群集->配置
出现下图所示
在Cluster Name处可以更改你设置集群的名字,在这里我设置为test_cluster
然后我们开始添加集群内的成员,点菜单栏->新建 如下图所示
(注:此时保证列表处选中Members,才可以出现下面内容)
将两台机器Ip都填写进去,如下图
在这里选中菜单栏里的cluster->shared state,可以查看裸设备设置,如下图

点击确定继续
然后打开菜单栏clusterdaemon properties出现以下窗口

这个窗口就是集群的配置窗口,详细的说明请查看redhat的官方文档
有一个说明的就是中间的那个滑动条,就是配置服务器探测等待15秒,我们不能设的太小,这里我们就默认使用15秒
在clumembd这个窗口里选中Enable Broadcast Heartbeating然后点确定,这时候会弹出一个窗口提示,因为我们配置的就是双节点的HA,所以不

用管它,直接点确定然后在cluster configuration选择保存后退出此窗口
在菜单栏 群集启动本地群集守护进程,稍等一会儿,就会出现以下状态

这里就显示在linux1上的cluster配置成功
然后我们就要配置linux2了,配置linux2其实很简单,将linux1系统下/etc/cluster.xml文件COPY到linux2的/etc/目录下就可以了
(注:cluster.xml是在安装完两个软件包的时候不会产生,它是在第一次运行redhat-config-cluster命令的时候产生的,和AS2.1里的cluster.conf储存内容相同,只不过换了格式而已。这就是集群主要的配置文件,一定要确保集群上每个节点的此文件都是相同的,另外在redhat的官方文档上强烈警告用户:不要去手动的修改这个xml文件,)
将此文件copy上linux2以后,在linux2命令行里执行
#service clumanager start
系统显示执行成功,再稍等一会儿,你就会发现在linux1上出现了变化,如下图

启动关闭集群服务的命令是service clumanager start | stop
(注:如果你在配置完成以后不想用图形界面监控节点运行,在shell里运行
#clustat –i 10 / / 状态监控,每10秒中刷新一次
出现如下结果
Cluster Status - test_cluster 13:57:22
Cluster Quorum Incarnation #1
Shared State: Shared Raw Device Driver v1.2
Member Status
------------------ ----------
10.0.0.155 Active <-- You are here
10.0.0.156 Active
Service Status Owner (Last) Last Transition Chk Restarts
-------------- -------- ---------------- --------------- --- --------

这样,一个没有包含任何服务的“裸”的集群系统就配置成功了,因为它没有包含任何应用,也没有什么意义,下一步我们就在上面配置一个大家最常用的http服务来测试一下
四、举例说明:配置HTTP Server的HA服务
1.给http服务增加共享磁盘
  磁盘上将存储两个系统上apache共用的程序文件,也就是说,把apache的DocumnetRoot放到这个共享磁盘上,创建方法同创建裸设备时一样,请注意,这个共享磁盘的作用不同于上面的裸设备
2.创建共享磁盘加载点,配置两台机器上的http服务
  启动两台机器,我这里新添加硬盘为sdc,我以ext3格式将其格式化,在每个机器的根目录下创建文件夹www,为apache的web目录,同时将创建的sdc1分区加载到/www目录下
 #mkdir /www
 #mount /dev/sdc1 /www //这一步只在linux1上进行就行
  然后安装apache,这就不用多说了吧,指出一点是,两台机器上的apache安装必须完全一样,包括配置文件,安装完成后,修改httpd.conf,将其根目录指向/www,我这里是用的是AS3.0自带的apache2.0的RPM包,
在linux1上,进入/www目录,在此目录下保存一个index.html作测试使用
这样,两台机器上的http服务就完全配置完成
3.配置基于此集群的http服务
 在linux1的xwindows,启动集群配置工具(参看上),增加名为httpd的服务如图点菜单栏"新建"服务名为”httpd”,检测时间间隔设置为4秒,httpd服务的启动脚本就是apache的启动脚本,我这里使用的是rpm包默认安装的脚本/etc/rc.d/init.d/httpd 
点"确定",就增加了一个服务如下图所示

如上图所示,选中httpd这个service,单击菜单栏的”Add Child”,出现如下图

先给httpd服务增加共享设备Add Device,设备点为我们创建的sdc1,加载点为/www,格式为ext3,模式为”rw”读写模式,点确定,在给此服务添加一个IP地址,这个IP就是客户浏览器访问的IP,我们设置为10.0.0.157,掩码同网络设置,这里设置为255.0.0.0,广播地址设置为10.0.0.255
这样就完全添加成功了,如下图
保存设置,回到集群监控状态
以上所有操作均是在linux1上进行,现在为保证linux1和linux2集群配置相同,将linux1的/etc/cluster.xml复制到linux2的/etc/cluster.xm

l,同时启动两台机器上的集群服务,再次查看监控状态图,就发现有新的服务添加了,点击上面的"启用"及"运行"此服务,HTTP服务就开始运行了

这样,整个集群下的http服务就配置完成,并开始运行了
五、对配置好的服务进行简单的测试
1.基本功能的测试
在win的机器上IE里输入10.0.0.157,你就可以看到你准备在/www目录下的测试页
2.故障测试  任意的关闭掉其中一台机器,你就会发现10.0.0.157依然可以访问,你用ssh工具去连接这个IP地址,就会发现你连接的就是现在正在运行的机器了。
3.手动的去关闭apache服务,集群软件依然会将apache服务启动起来,也就是说:此时的服务由集群软件控制,而不是人为去控制了,除非你将clumanger服务停掉。

六、后记
使用AS3.0的集群软件,配置还是相当灵活的,在其官方文档上,就举例说明了如何里用这个软件来配置Oracle、MySQL、Samba、NFS、HTTP等多种服务,我也正在准备去配置一下Oracle的HA服务。由于本人水平有限,本文里肯定有不少错误,其实有的地方我也是一知半解,有错误的地方请大家指出,最近无事,我一直在研究集群、负载均衡这方面的东西,下一步就是作研究一下lvs了,对此感兴趣的朋友可以一起来研究研究,Email:xushli@163.net。
在CU里混了两年多了,第一次认真的写篇东西,真是惭啊。。。。。。。。


转载时请保留作者的个人信息,谢谢[/quote]

------------------------------------------------------------------------------

此篇文章于前日写的那篇文章相对应,其实在console下redhat也提供了一组强大
的配置命令,其中最主要的就是redhat-config-cluster-cmd这个命令,此外还有
clusvcadm,clushutdown等多个命令,下面我们就对照上一篇文章用控制台下的命令将
配置重新做一边.


1、列出当前集群名字

redhat-config-cluster-cmd --cluster

2、设置当前集群名字为“test_cluster”

redhat-config-cluster-cmd --cluster --name='test_cluster'

3、显示当前裸设备状态

redhat-config-cluster-cmd –sharedstate

4、添加一个集群节点,名字为“10.0.0.155”

redhat-config-cluster-cmd --add_member --name=10.0.0.155

5、修改一个节点名字由member2到member3

redhat-config-cluster-cmd --member=member2 --name=member3

6、删除一个名为member3的节点

redhat-config-cluster-cmd --member=member3 --del_member

7、列出当前集群内的服务

redhat-config-cluster-cmd –services

8、添加一个名为httpd的服务

redhat-config-cluster-cmd --add_service --name=httpd

9、列出名为httpd的这个服务下的子节点

redhat-config-cluster-cmd --service=httpd

10、设置httpd服务的相关信息,检测时间,启动脚本等等

redhat-config-cluster-cmd --service=httpd \

--checkinterval=15 \

--userscript=/etc/rc.d/init.d/httpd

11、删除名为httpd的集群服务

redhat-config-cluster-cmd --service=httpd \

--del_service

12、列出httpd服务的ip地址

redhat-config-cluster-cmd --service=httpd \

--service_ipaddresses

13、设置httpd的对外服务IP地址为10.0.0.157

redhat-config-cluster-cmd --service=httpd \

--add_service_ipaddress \

--ipaddress=10.0.0.157

14、设置对方服务ip的掩码地址及广播地址

 redhat-config-cluster-cmd --service=httpd \

--service_ipaddress=10.0.0.157 \

--netmask=255.0.0.0 \

--broadcast=10.0.0.255

15、删除httpd服务的10.0.0.157的这个IP地址

redhat-config-cluster-cmd --service=httpd \

--service_ipaddress=10.0.0.157 \

--del_service_ipaddress

16、列出httpd服务的设备

redhat-config-cluster-cmd --service=httpd \

--devices

17、给httpd服务添加共享磁盘sdc1

redhat-config-cluster-cmd --service=httpd \

--add_device \

--name=/dev/sdc1

18、设置共享磁盘的参数

redhat-config-cluster-cmd --service=httpd \

--device=/dev/sdc1 \

--mount \

--mountpoint=/www \

--fstype=ext3 \

--options=rw \

19、启用10.0.0.155节点上的httpd服务

 clusvcadm -e httpd -m 10.0.0.155

20、禁用10.0.0.155节点上的httpd服务

clusvcadm -d httpd -m 10.0.0.155

21、停止10.0.0.155节点上的httpd服务

clusvcadm -s httpd -m 10.0.0.155

更多命令请在控制台执行以下命令

#man redhat-config-cluster-cmd

http://castep.bokee.com/viewdiary.13145140.html

非常全面的NFS文档

非常全面的NFS文档(FOR LINUX)
来源: 作者: 2006-08-11 出处:pcdog.com

> name=google_ads_frame marginWidth=0 marginHeight=0 src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1193231012218&lmt=1188851358&alt_color=F5FAFA&format=468x15_0ads_al_s&output=html&correlator=1193231012218&google_ad_channel=3984443469&url=http%3A%2F%2Fwww.pcdog.com%2Fedu%2Flinux%2F2006%2F11%2Fb169390.html&color_bg=F5FAFA&color_text=000000&color_link=000000&color_url=F5FAFA&color_border=F5FAFA&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Flm%3D0%26si%3D%26rn%3D10%26ie%3Dgb2312%26ct%3D0%26wd%3DNFS%2B%2BLINUX%26pn%3D10%26cl%3D3&cc=100&ga_vid=512593634.1193231012&ga_sid=1193231012&ga_hid=1629508279&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameBorder=0 width=468 scrolling=no height=15 allowTransparency>

.net linux msn 操作系统 局域网

  这是我写的第一份笔记式文档,是对自己最近在研究NFS方面的一个小小的总结,这个稳定也参考和引用了一部分别人的文档,这里表示感谢,这篇是根据LINUX来写的,有空的话我还会写一篇FOR FREEBSD和SOLARIS的。请斑竹帮忙加个精华,万分感谢



超全的NFS文档(FOR LINUX)
上海 天俊
欢迎大家和我交流网络方面的技术问题
msn:bcst@citiz.net qq:11300242
如果要转载的话请保留以上信息,谢谢配合
一、NFS简介
NFS-Network FileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案 MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。
NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
二、各NFS协议版本的主要区别
V3相对V2的主要区别:
1、文件尺寸
V2最大只支持32BIT的文件大小(4G),而NFS V3新增加了支持64BIT文件大小的技术。
2、文件传输尺寸
V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。
3、完整的信息返回
V3增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。
4、增加了对TCP传输协议的支持
V2只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持
*5、异步写入特性
6、改进了SERVER的mount性能
7、有更好的I/O WRITES 性能。
9、更强网络运行效能,使得网络运作更为有效。
10、更强的灾难恢复功能。

异步写入特性(v3新增加)介绍:
NFS V3 能否使用异步写入,这是可选择的一种特性。NFS V3客户端发发送一个异步写入请求到服务器,在给客户端答复之前服务器并不是必须要将数据写入到存储器中(稳定的)。服务器能确定何时去写入数据或者将多个写入请求聚合到一起并加以处理,然后写入。客户端能保持一个数据的 copy以防万一服务器不能完整的将数据写入。当客户端希望释放这个copy的时候,它会向服务器通过这个操作过程,以确保每个操作步骤的完整。异步写入能够使服务器去确定最好的同步数据的策略。使数据能尽可能的同步的提交何到达。与V2比较来看,这样的机制能更好的实现数据缓冲和更多的平行(平衡)。而 NFS V2的SERVER在将数据写入存储器之前不能再相应任何的写入请求。

V4相对V3的改进:
1:改进了INTERNET上的存取和执行效能
2:在协议中增强了安全方面的特性
3:增强的跨平台特性
三、CLIENT和SERVER的具体操作和设置
在讲NFS SERVER的运作之前先来看一些与NFS SERVER有关的东西:
RPC(Remote Procedure Call)
NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议勇士用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER.所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT 的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

NFS需要启动的DAEMONS
pc.nfsd:主要复杂登陆权限检测等。
rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理
NFS SERVER在REDHAT LINUX平台下一共需要两个套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件
portmap:NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。

一:服务器端的设定(以LINUX为例)
服务器端的设定都是在/etc/exports这个文件中进行设定的,设定格式如下:
欲分享出去的目录 主机名称1或者IP1(参数1,参数2) 主机名称2或者IP2(参数3,参数4)
上面这个格式表示,同一个目录分享给两个不同的主机,但提供给这两台主机的权限和参数是不同的,所以分别设定两个主机得到的权限。
可以设定的参数主要有以下这些:
rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。
root_squash:在登入 NFS 主機使用分享之目錄的使用者如果是 root 時,那麼這個使用者的權限將被壓縮成為匿名使用者,通常他的 UID 與 GID 都會變成 nobody 那個身份;
all_squash:不管登陆NFS主机的用户是什么都会被重新设定为nobody。
anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
anongid:同 anonuid ,但是變成 group ID 就是了!
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。

例如可以编辑/etc/exports为:
/tmp     *(rw,no_root_squash)
/home/public 192.168.0.*(rw)   *(ro)
/home/test  192.168.0.100(rw)
/home/linux  *.the9.com(rw,all_squash,anonuid=40,anongid=40)
设定好后可以使用以下命令启动NFS:
/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start

exportfs命令:
如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :在 export 的時候,将详细的信息输出到屏幕上。
具体例子:
[root @test root]# exportfs -rv <==全部重新 export 一次!
exporting 192.168.0.100:/home/test
exporting 192.168.0.*:/home/public
exporting *.the9.com:/home/linux
exporting *:/home/public
exporting *:/tmp
reexporting 192.168.0.100:/home/test to kernel

exportfs -au <==全部都卸载了。



客户段的操作:
1、showmout命令对于NFS的操作和查错有很大的帮助,所以我们先来看一下showmount的用法
showmout
-a :这个参数是一般在NFS SERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。
-e :显示指定的NFS SERVER上export出来的目录。
例如:
showmount -e 192.168.0.30
Export list for localhost:
/tmp *
/home/linux *.linux.org
/home/public (everyone)
/home/test 192.168.0.100
2、mount nfs目录的方法:
mount -t nfs hostname(orIP):/directory /mount/point
具体例子:
Linux: mount -t nfs 192.168.0.1:/tmp /mnt/nfs
Solaris:mount -F nfs 192.168.0.1:/tmp /mnt/nfs
BSD: mount 192.168.0.1:/tmp /mnt/nfs

3、mount nfs的其它可选参数:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

rsize和wsize:
文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
fg:和bg正好相反,是默认的参数
nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
mountport:设定mount的端口
port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
tcp:使用tcp作为nfs的传输协议
namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255
acregmin=n:设定最小的在文件更新之前cache时间,默认是3
acregmax=n:设定最大的在文件更新之前cache时间,默认是60
acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
acdirmax=n:设定最大的在目录更新之前cache时间,默认是60
actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。
retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
noac:关闭cache机制。
同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。


4、/etc/fstab的设定方法
/etc/fstab的格式如下:
fs_spec   fs_file  fs_type   fs_options  fs_dump fs_pass 
fs_spec:该字段定义希望加载的文件系统所在的设备或远程文件系统,对于nfs这个参数一般设置为这样:192.168.0.1:/NFS
fs_file:本地的挂载点
fs_type:对于NFS来说这个字段只要设置成nfs就可以了
fs_options:挂载的参数,可以使用的参数可以参考上面的mount参数。
fs_dump - 该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0
fs_pass - 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0 。

5、与NFS有关的一些命令介绍
nfsstat:
查看NFS的运行状态,对于调整NFS的运行有很大帮助
rpcinfo:
查看rpc执行信息,可以用于检测rpc运行情况的工具。



四、NFS调优
调优的步骤:
1、测量当前网络、服务器和每个客户端的执行效率。
2、分析收集来的数据并画出图表。查找出特殊情况,例如很高的磁盘和CPU占用、已经高的磁盘使用时间
3、调整服务器
4、重复第一到第三步直到达到你渴望的性能


与NFS性能有关的问题有很多,通常可以要考虑的有以下这些选择:

WSIZE,RSIZE参数来优化NFS的执行效能
WSIZE、RSIZE对于NFS的效能有很大的影响。
wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等)。
下面这个命令可以测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数。对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试。在每次测试的时候最好能重复的执行一次MOUNT和unmount。
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于测试的WSIZE,RSIZE最好是1024的倍数,对于NFS V2来说8192是RSIZE和WSIZE的最大数值,如果使用的是NFS V3则可以尝试的最大数值是32768。
如果设置的值比较大的时候,应该最好在CLIENT上进入mount上的目录中,进行一些常规操作(LS,VI等等),看看有没有错误信息出现。有可能出现的典型问题有LS的时候文件不能完整的列出或者是出现错误信息,不同的操作系统有不同的最佳数值,所以对于不同的操作系统都要进行测试。

设定最佳的NFSD的COPY数目。
linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的,默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值。

UDP and TCP
可以手动进行设置,也可以自动进行选择。
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的 Performance 大幅降低甚至使网络瘫痪。所以对于不同情况的网络要有针对的选择传输协议。nfs over tcp比较稳定, nfs over udp速度较快。在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议)。在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让NFS在复杂的网络环境中保持最好的传输稳定性。可以参考这篇文章:http: //www.hp.com.tw/ssn/unix/0212/unix021204.asp

版本的选择
V3作为默认的选择(RED HAT 8默认使用V2,SOLARIS 8以上默认使用V3),可以通过vers= mount option来进行选择。
LINUX通过mount option的nfsvers=n进行选择。

五、NFS故障解决
1、NFSD没有启动起来
首先要确认 NFS 输出列表存在,否则 nfsd 不会启动。可用 exportfs 命令来检查,如果 exportfs 命令没有结果返回或返回不正确,则需要检查 /etc/exports 文件。
2、mountd 进程没有启动
mountd 进程是一个远程过程调用 (RPC) ,其作用是对客户端要求安装(mount)文件系统的申请作出响应。mountd进程通过查找 /etc/xtab文件来获知哪些文件系统可以被远程客户端使用。另外,通过mountd进程,用户可以知道目前有哪些文件系统已被远程文件系统装配,并得知远程客户端的列表。查看mountd是否正常启动起来可以使用命令rpcinfo进行查看,在正常情况下在输出的列表中应该象这样的行:
100005 1 udp 1039 mountd
100005 1 tcp 1113 mountd
100005 2 udp 1039 mountd
100005 2 tcp 1113 mountd
100005 3 udp 1039 mountd
100005 3 tcp 1113 mountd
如果没有起来的话可以检查是否安装了PORTMAP组件。
rpm -qa|grep portmap
3、fs type nfs no supported by kernel
kernel不支持nfs文件系统,重新编译一下KERNEL就可以解决。
4、can't contact portmapper: RPC: Remote system error - Connection refused
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
5、mount clntudp_create: RPC: Program not registered
NFS没有启动起来,可以用showmout -e host命令来检查NFS SERVER是否正常启动起来。
6、mount: localhost:/home/test failed, reason given by server: Permission denied
这个提示是当client要mount nfs server时可能出现的提示,意思是说本机没有权限去mount nfs server上的目录。解决方法当然是去修改NFS SERVER咯。
7、被防火墙阻挡
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。


六、NFS安全
NFS的不安全性主要体现于以下4个方面:

1、新手对NFS的访问控制机制难于做到得心应手,控制目标的精确性难以实现
2、NFS没有真正的用户验证机制,而只有对RPC/Mount请求的过程验证机制
3、较早的NFS可以使未授权用户获得有效的文件句柄
4、在RPC远程调用中,一个SUID的程序就具有超级用户权限.

加强NFS安全的方法:
1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。
2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACCEPT
3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。
4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 192.168.0.0/255.255.255.0 : allow
portmap: 140.116.44.125 : allow

/etc/hosts.deny
portmap: ALL : deny
5、改变默认的NFS 端口
NFS默认使用的是111端口,但同时你也可以使用port参数来改变这个端口,这样就可以在一定程度上增强安全性。
6、使用Kerberos V5作为登陆验证系统

Redhat Linux修改机器名和Ip方法

Redhat Linux修改机器名和Ip方法



用vi编辑 /etc/sysconfig/network and /etc/sysconfig/network-scripts/ifcfg-eth0

1) /etc/sysconfig/network

NETWORKING = yes
FORWARD_IPV4 = yes
HOSTNAME = xxxx.com #你的主机名
GATEWAY = 123.123.123.123 #网关
GATEWAYDEV = eth0

2) /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE = eth0
IPADDR = xxx.xxx.xxx.xxx #你的IP地址
NETMASK = xxx.xxx.xxx.xxx #你的子网掩码
NETWORK = xxx.xxx.xxx.xxx #你的工作网络
BROADCAST = xxx.xxx.xxx.xxx #你的广播址
ONBOOT = yes

然后运行 /etc/sysconfig/network-scripts/ifup eth0 启动。

Materials Studio在cluster上的安装指南

Materials Studio在cluster上的安装指南
ID:205 分类:Materials Studio/安装与编译 日期:2005-8-18

关键词:MS, Materials Studio, cluster, install, 安装

推荐使用 Rocks (http://www.rocksclusters.org/),安装和管理比较方便

一、安装Rocks 4.0 (详见 rocks-usersguide-4.0.0.pdf)


二、装好之后Enabling RSH on frontend and all Compute Nodes (详见 rocks-usersguide-4.0.0.pdf)
# cp /home/install/rocks-dist/lan/arch/build/graphs/default/base-rsh.xml \
/home/install/site-profiles/4.0.0/graphs/default/
Where arch is your architecture ("i386", "x86_64" or "ia64").

edit /home/install/site-profiles/4.0.0/graphs/default/base-rsh.xml and change the
following:


to:

xinetd
rsh

(也就是去掉这段中的第一行和最后一行)

To apply your customized configuration scripts to compute nodes, rebuild the distribution:
# cd /home/install
# rocks-dist dist
Then, reinstall your compute nodes.

最重要的是别忘了在frontend上也要启动rsh
具体方法是到安装包中找到
rsh-0.17-25.1.i386.rpm
rsh-server-0.17-25.1.i386.rpm
并安装, 然后启动
#/sbin/chkconfig --level 345 rsh on
#/sbin/chkconfig --level 345 rlogin on
#/sbin/chkconfig --level 345 rexec on
#service xinetd restart


三、安装MS Modeling (参考zixia量化版上qchem写的指南)
1. 获得MS Modeling 3.1的安装光盘或镜象文件
2. 用普通用户执行/mnt/cdrom/UNIX/Install --type cluster
3. 输入要安装的目标全路径,如/home/public/MSI/MaterialsStudio
4. 选择要安装的模块,如17全安装
5. 选择License管理软件的安装目标目录,输入两个回车即可
6. 选择是否启动Gateway服务,一般选是
7. 选择安装license文件,选择3不装
8. 复制你的license文件到/home/public/MSI/License_Pack/licenses (目录要与安装
License管理软件的目录相一致)文件名必须改成msilicense.dat


至此就可以跑串行的程序了,要并行还必须加把劲



四、copy MaterialsStudio\hosts.equiv to /etc/hosts.equiv或者自己新建一个
内容如下:
localhost
localhost.localdomain
compute-0-0
compute-0-1
compute-0-2
.
.
.
compute-0-6
compute-0-7
.
.
.

在安装用户根目录下建一个.rhosts文件, 内容跟hosts.equiv一样



五、修改 MaterialsStudio/MPICH/share/machines.LINUX 文件,把要用的计算节点写上去,格式如下:
compute-0-0:2
compute-0-1:2
compute-0-2:2
.
.
.
compute-0-6:2
compute-0-7:2
.
.
.
冒号后为每个节点的cpu


六、如果用的是csh, 在安装用户根目录下修改.cshrc(bash用户修改.bashrc), 内容如下:
eval `/home/msi/MaterialsStudio/Licensing/Setup/lic_setup.sh -s csh`
eval `/home/msi/MaterialsStudio/share/bin/ms_setup.sh -s csh`

setenv TMPDIR /home/msi/tmp
setenv DMOL3_DATA /home/msi/MaterialsStudio/Data/Resources/Quantum/DMol3

setenv DMOL_TMP /home/msi/tmp
setenv MESODYN_HOME /home/msi/tmp
setenv PATH ${PATH}:/home/msi/MaterialsStudio/DMol3/bin

并在安装用户根目录下建一个tmp临时文件夹



七、 修改MaterialsStudio/Gateway/root_default/dsd/conf下两个文件gw-info.sbd gwparams.cfg中的total cpu
否则在客户机上的job_control中只能看到安装节点上的cpu



八、远程客户机用Server Console工具
选中左边的Server Gateways,右键新建server gateway
输入前述主机的IP地址
建好的server gateway,可以在上面点右键运行测试作业,以测试正常与否。

记得先用小任务测试一切是否正常。

...

enjoying it and good luck!

组建linux集群(P4+SU)及编译并行VASP(libgoto+Lam-mpi)

我们现在主要是用做高性能计算,下面就是我的集群的组建过程。
集群的硬件环境:做一个集群,节点机器的硬件最好相同,这样计算的效率就会高很多,同时组建集群也相对容易。以下是我的机器的配置情况(全新,组装)另外要说的是,我们的节点机没有配置显示器,全部工作由服务器完成。连接就是通过交换机连接,和一般局域网连接相同。
服务器:P4 3.2, 内存2 G ,硬盘:160G ,显示器 ,网卡:2个千兆网卡 (money:8千多)
节点(10台): P4 3.2, 内存:2 G, 硬盘:80G , 网卡:千兆网卡 (5千多每台)
华为24口千兆交换机(4千多)
集群软件环境:建一个简单的集群,其实并不难,主要配置nis,nfs,rsh,mpi就好了。推荐大家看一本书《微机集群组建、优化和管理》车静光著,机械工业出版社。我的集群,采用suse9.3,操作系统其实也很重要,这次试了很多操作系统,redhat9,rhas4无法识别网卡,rocks无法安装,如果硬件没有什么问题,建议大家可以试下rocks cluster这个集群系统,rocks集操作系统和集群于一体,安装完成并行环境就已经建立,而且还配备了pbs管理软件,非常简单,容易上手,只是我的硬件不太兼容,本来是想装rocks的,无奈,只有自己动手了。
Suse配置nis,nfs非常简单,因为suse强大的yast,就像window一样方便,只要鼠标轻点几下就ok。
1.Linux系统的安装,suse安装也非常简单,在此不想详细讲太多,主要是在分区的时候要注意,最要自己手动分区,对于服务器来说,最好能分一个独立的分区/home,因为节点机器要通过nfs共享服务器的/home。注意的是一下几个软件包一定要安装nfs(nfs-utils),nis(ypbind),rsh(rsh-server)。
2.基本的网络配置(通过yast的网卡配置)
服务器的:192.168.1.253 hostname:node0 域名:node0.cluster
节点机器:192.168.1-192.168.1.10 hostname:node1-node10 域名:node*.cluser
掩码:255.255.255.0
3.服务器的配置
3.1.Nfs设置
NFS(NetWork File System)是一种使用比较多的网络文件系统,它以它的安装容易,使用方便得到很多Linux爱好者的使用。在使用NFS时,我们把需要共享的分区或者文件按照一定的规范共享出去,想使用这个资源的机器使用mount 命令把共享的资源加载到自己的系统上,然后就可以像使用自己的本地文件系统一样方便。
进入图形yast-network-nfs server,之后开始配置, 点击add directory:之后设置两个共享目录, /home,/usr/local/,然后加入共享这两个目录的主机通配符192.168.1.0/255.255.255.0 rw,root_squash, sync。其实配置nfs就是修改/etc/exports 文件,你也可以直接修改成
/home/ 192.168.1.1/255.255.255.0(rw,root_squash,sync)
/usr/local 192.168.1.1/255.255.255.0(rw,root_squash,sync)
Ok,NFS就这样配置好了。
3.2 NIS的配置
NIS(Network Information Service)是实现网络上各Linux机器之间的重要数据分享。这些数据包括用户帐号,密码,组文件,主机文件,等等。在集群中我们要做到单一的镜象就需要NIS的一些服务。比如我们不需要在每个节点上建立各自的用户,而是在master上建立一个用户以后,就同时在其它的节点上能够访问到这个用户。
下面是我的配置过程:
Yast-network-nis server-create nis master server之后填入nis domain name,就是域名,我们填node0.Cluster,之后一些信息一般选默认就可以了,之后要配置hosts:
netmask:255.255.255.255 network:127.0.0.1
netmask:255.255.0.0 network:192.168.0.0
ok,之后完成,进入/var/yp目录,执行make就最后完成nis的配置。注意的是如果你新建用户了,要注意执行make命令更新nis信息。
最后启动网络服务yast-network-start service进入设置,开启shell,login两项服务。
3.3 rsh的配置
注意修改这两个文件/etc/hosts /etc/hosts.equiv 所建立用户的.rhosts,这个文件和/hosts.equiv文件内容设置相同。
Hosts的文件信息,最后修改成:
127.0.0.1 localhost
192.168.1.253 node0.cluster node0
192.168.1.1 node1.cluster node1

192.168.1.10 node10.cluster node10
Hosts.equiv:
Node0
Node1

Node10
把所有节点的信息输入到这两个文件,等节点机器的配置好后,你就可以用命令rlogin node*,登陆节点机器,这样就可以对节点机器进行操作了。
节点机器的配置
配置nis,nfs的情况基本和服务器类似,只是进入yast的时候选择的是nis客户端,和nfs客户端即可,这里不再详细说明。之后启动rsh服务,启动过程,编辑/etc/xinetd.d/rsh 将其中内容“disable=yes”改成“disable=no”,重新restart xinetd,激活rsh #chkconfig –level 345 rsh on
#/etc/rc.d/xinetd restart,这样就配置好rsh了,

Lam-mpi的编译安装使用。
(1) 到lam-mpi官方网站www.lam-mpi.org下载最新的源代码,注意不要下载rpm格式的,要自己编译tar.gz格式的
(2) 用“tar zxvf lam-7.1.1.tar.gz”解压
(3) 进入该目录配置编译信息(后面编译vasp中的makefile有)
./configure—prefix =/usr/local/lam-7.1.1 ――with CFLAGS=―O ―with –fc=ifort ―― with ―f77flags=―O ―without ―romio
几点说明,前面是配置lam-mpi的安装路径/usr/local/lam-7.1.1,指定的编译器是intel的fortran编译器ifort
(4) 然后执行make进行编译,最后执行make install安装,ok成功安装lam-mpi
之后最好把/usr/local/lam-7.1.1/bin加入到搜索路径中,具体做法vi编辑/etc/profile找到
#make path more comfortable
#if test ………then
PATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/usr/local/lam-7.1.1/bin
Ok, 这样就设置好路径了,注意的是服务器和节点机器都要设置,因为我们是通过nfs共享lam。之后新建一个文件,lamhosts,输入node0,执行lamboot - lamhosts
如果显示有lam的相关信息,那说明安装成功。
之后顺便说一下lam的使用的几个命令,注意执行lam不能在root下操作
1) 新建一个文件,说明要使用并行计算的几个机器,vi lamhosts
加入你要计算的机器,比如node0 node1 node2 …每个机器一行
2) lamboot -v lamhosts 启动lam-mpi
3) mpirun - np * program *为你运行机器的台数,progran为并行程序,在vasp中我就直接运行mpirun -np 10 vasp
4) 运行结束,记得wipe -v lamhosts 释放机器,否则节点机器无法关机,我经常忘记执行这个命令,导致关机的时候无法正常关机.。
Ifc8.0并行vasp的编译(参考了本论坛的[转帖]VASP程序的编译(valenhou))
感觉vasp安装不同操作系统不同的版本情况有很大不一样,在suse中并行vasp4.6我编译不成功,并行vasp4.5成功,串行4.6也成功,在rhas4.0中串行vasp4.6无法成功编译,vasp4.5则没有问题,大家如果编译不成功的话,可以试试不同版本。下面讲讲我的并行编译。首先要安装好fortran的编译器ifc这个不详细讲了,重要是要配置好路径,节点机器也是同样问题,ifc可以通过nfs共享,节点机器只要设置好路径就好了。
1. 下载数学库libgoto,我的是intel平台我下libgoto_prescott32p-r1.00.so,之后我把他放在vasp上一级目录/usr/local/lib中
2. 解压vasp.4.5.tar.gz和vasp.4.lib.tar.gz,注意把vasp安装在usr/local的共享目录中
Tar zxvf vasp.4.5.tar.gz tar zxvf vasp.4.lib.tar.gz
3. cd vasp.4.lib
cp makefile.linux_ifc_P4 makefile
vi makefile 把当中的编译命令ifc改为ifort,在8.0中的命令是ifort不是ifc
之后执行make命令得到libdmy.a。
4. cd vasp.4.5
cp makefile.linux_ifc_P4 makefile
vi makefile 把前面第50行的FC=IFC部分用#注释掉,第80-82的cpp部分也注释掉
之后就是136行blas=/usr/local/lib/libgoto_prescott32p-r1.00.so -lsvml
LAPACK用139行vasp自带的lapack,
把第166行和167行有关FFT3D的行前加上注释号,如下面的
#FFT3D = fft3dfurth.o fft3dlib.o
#FFT3D = fftw3d.o fft3dlib.o /opt/libs/fftw-3.0.1/lib/libfftw3.a
之后把202,203行mpi部分fc=mpif77的#去掉
把212行有关CPP的行前的注释号去掉
把226和227行有关SCA的行,加上注释号
把239和243行有关FFT3D的行,改成如下的内容:
# FFT: fftmpi.o with fft3dlib of Juergen Furthmueller
FFT3D = fftmpi.o fftmpi_map.o fft3dlib.o
# fftw.3.0.1 is slighly faster and should be used if available
#FFT3D = fftmpiw.o fftmpi_map.o fft3dlib.o
/opt/libs/fftw-3.0.1/lib/libfftw3.a
把这些都修改后,保存,再make得到vasp的可执行程序,为了和串行区别之后我把vasp修改为vaspmpi,copy到/bin中去。这样就大功告成了。

http://blog.chinaunix.net/u2/63591/showart_523768.html
原文地址 http://bbs.zixia.net/disparticle.php?boardName=Gaussian&ID=23870&pos=8

Saturday, June 21, 2008

linux指令大全

名称:cat
  使用权限:所有使用者
  使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
  说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
  参数:
  -n 或 --number 由 1 开始对所有输出的行数编号
  -b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
  -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
  -v 或 --show-nonprinting
  
  范例:
  cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
  cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3
  
  名称 : cd
  使用权限 : 所有使用者
  
  使用方式 : cd [dirName]
  
  说明 : 变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录)。
  
  另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
  
  范例 : 跳到 /usr/bin/ :
  cd /usr/bin
  
  跳到自己的 home directory :
  cd ~
  
  跳到目前目录的上上两层 :
  cd ../..
  
  指令名称 : chmod
  使用权限 : 所有使用者
  
  使用方式 : chmod [-cfvR] [--help] [--version] mode file...
  
  说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。
  
  把计 :
  
  mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
  -c : 若该档案权限确实已经更改,才显示其更改动作
  -f : 若该档案权限无法被更改也不要显示错误讯息
  -v : 显示权限变更的详细资料
  -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
  --help : 显示辅助说明
  --version : 显示版本
  
  范例 :将档案 file1.txt 设为所有人皆可读取 :
  chmod ugo+r file1.txt
  
  将档案 file1.txt 设为所有人皆可读取 :
  chmod a+r file1.txt
  
  将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
  chmod ug+w,o-w file1.txt file2.txt
  
  将 ex1.py 设定为只有该档案拥有者可以执行 :
  chmod u+x ex1.py
  
  将目前目录下的所有档案与子目录皆设为任何人可读取 :
  chmod -R a+r *
  
  此外chmod也可以用数字来表示权限如 chmod 777 file
  语法为:chmod abc file
  
  其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
  
  r=4,w=2,x=1
  若要rwx属性则4+2+1=7;
  若要rw-属性则4+2=6;
  若要r-x属性则4+1=7。
  
  范例:
  chmod a=rwx file
  
  和
  chmod 777 file
  
  效果相同
  chmod ug=rwx,o=x file
  
  和
  chmod 771 file
  
  效果相同
  
  
  
  若用chmod 4755 filename可使此程式具有root的权限

  指令名称 : chown
  使用权限 : root
  
  使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
  
  说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
  
  把计 :
  
  user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help : 显示辅助说明--version : 显示版本
  
  范例 :
  将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
  chown jessie:users file1.txt
  
  将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
  chmod -R lamport:users *
  
  
  名称:cp
  使用权限:所有使用者
  
  使用方式:
  
  cp [options] source dest
  cp [options] source... directory
  
  说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
  
  把计
  
  -a 尽可能将档案状态、权限等资料都照原状予以复制。
  -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
  -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
  范例:
  将档案 aaa 复制(已存在),并命名为 bbb :
  cp aaa bbb
  
  将所有的C语言程式拷贝至 Finished 子目录中 :
  cp *.c Finished
  
  名称:cut
  
  使用权限:所有使用者
  
  用法:cut -cnum1-num2 filename
  
  说明:显示每行从开头算起 num1 到 num2 的文字。
  
  范例:
  
  shell>> cat example
  test2
  this is test1
  shell>> cut -c0-6 example ## print 开头算起前 6 个字元
  test2
  this i
  
  
  名称 : find
  用法 : find
  使用说明 :
  
  将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
  
  find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression
  
  expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
  
  -mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
  -amin n : 在过去 n 分钟内被读取过
  -anewer file : 比档案 file 更晚被读取过的档案
  -atime n : 在过去 n 天过读取过的档案
  -cmin n : 在过去 n 分钟内被修改过
  -cnewer file :比档案 file 更新的档案
  -ctime n : 在过去 n 天过修改过的档案
  -empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
  -ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
  -name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
  -size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
  d: 目录
  c: 字型装置档案
  b: 区块装置档案
  p: 具名贮列
  f: 一般档案
  l: 符号连结
  s: socket
  -pid n : process id 是 n 的档案
  
  你可以使用 ( ) 将运算式分隔,并使用下列运算。
  exp1 -and exp2
  ! expr
  -not expr
  exp1 -or exp2
  exp1, exp2
  范例:
  将目前目录及其子目录下所有延伸档名是 c 的档案列出来。
  # find . -name "*.c"
  
  
  将目前目录其其下子目录中所有一般档案列出
  # find . -ftype f
  
  
  将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出
  # find . -ctime -20
瑞星杀毒免费下载

  名称:less
  
  使用权限:所有使用者
  
  使用方式:
  
  less [Option] filename
  
  说明:
  less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动
  以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。
  
  
  范例:
  
  
  指令名称 : ln
  使用权限 : 所有使用者
  
  使用方式 : ln [options] source dist,其中 option 的格式为 :
  
  [-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
  [--help] [--version] [--]
  说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
  ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
  
  不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
  
  
  -f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本
  范例 :
  将档案 yy 产生一个 symbolic link : zz
  ln -s yy zz
  
  将档案 yy 产生一个 hard link : zz
  ln yy xx
  
  名称:locate
  使用权限:所有使用者
  使用方式: locate [-q] [-d ] [--database=]
  locate [-r ] [--regexp=]
  locate [-qv] [-o ] [--output=]
  locate [-e ] [-f ] <[-l ] [-c]
  <[-U ] [-u]>
  locate [-Vh] [--version] [--help]
  说明:
  locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。
  
  在一般的 distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
  
  # locate your_file_name
  
  的型式就可以了。 参数:
  -u
  -U
  
  建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。
  
  -e
  
  将
  排除在寻找的范围之外。
  
  -l
  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
  
  -f
  将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。
  
  -q
  安静模式,不会显示任何错误讯息。
  
  -n
  至多显示 个输出。
  
  -r
  使用正规运算式 做寻找的条件。
  
  -o
  指定资料库存的名称。
  
  -d
  
  指定资料库的路径
  
  -h
  显示辅助讯息
  
  -v
  显示更多的讯息
  
  -V
  显示程式的版本讯息 范例:
  
  locate chdrv : 寻找所有叫 chdrv 的档案
  locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
  locate -u : 建立资料库
  
  
  名称 : ls
  使用权限 : 所有使用者
  
  使用方式 : ls [-alrtAFR] [name...]
  
  说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
  
  
  -a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
  -l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
  -r 将档案以相反次序显示(原定依英文字母次序)
  -t 将档案依建立时间之先后次序列出
  -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
  -F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
  -R 若目录下有档案,则以下之档案亦皆依序列出
  
  范例:
  列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
  ls -ltr s*
  
  将 /bin 目录以下所有目录及档案详细资料列出 :
  ls -lR /bin
  
  列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
  ls -AF
  
  名称:more
  使用权限:所有使用者
  使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
  说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
  参数:-num 一次显示的行数
  -d 提示使用者,在画面下方显示 [Press space to continue, q to quit.] ,如果使用者按错键,则会显示 [Press h for instructions.] 而不是 哔 声
  -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
  -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
  -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
  -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
  -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
  -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
  +/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
  +num 从第 num 行开始显示
  fileNames 欲显示内容的档案,可为复数个数
  范例:
  more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
  more +20 testfile 从第 20 行开始显示 testfile 之档案内容。

  名称:mv
  使用权限:所有使用者
  
  使用方式:
  
  mv [options] source dest
  mv [options] source... directory
  说明:将一个档案移至另一档案,或将数个档案移至另一目录。
  参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。
  
  范例:
  
  将档案 aaa 更名为 bbb :
  mv aaa bbb
  
  将所有的C语言程式移至 Finished 子目录中 :
  mv -i *.c
  
  名称:rm
  使用权限:所有使用者
  
  使用方式:rm [options] name...
  
  说明:删除档案及目录。
  
  把计
  
  -i 删除前逐一询问确认。
  -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  -r 将目录及以下之档案亦逐一删除。
  范例:
  删除所有C语言程式档;删除前逐一询问确认 :
  rm -i *.c
  
  将 Finished 子目录及子目录中所有档案删除 :
  rm -r Finished
  
  名称:rmdir
  使用权限:于目前目录有适当权限的所有使用者
  
  使用方式: rmdir [-p] dirName
  
  说明: 删除空的目录。
  
  参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
  
  范例:
  
  将工作目录下,名为 AAA 的子目录删除 :
  rmdir AAA
  
  在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
  rmdir -p BBB/Test
  
  名称:split
  使用权限:所有使用者
  
  使用方式:split [OPTION] [INPUT [PREFIX]]
  
  说明:
  
  将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 ****x。若

没有 INPUT 档或为 ****-,则从标准输入读进资料。
  
  匡兜
  
  -b, --bytes=SIZE
  
  SIZE 值为每一输出档案的大小,单位为 byte。
  -C, --line-bytes=SIZE
  
  每一输出档中,单行的最大 byte 数。
  -l, --lines=NUMBER
  
  NUMBER 值为每一输出档的列数大小。
  -NUMBER
  
  与 -l NUMBER 相同。
  --verbose
  
  于每个输出档被开启前,列印出侦错资讯到标准错误输出。
  --help
  
  显示辅助资讯然后离开。
  --version
  
  列出版本资讯然后离开。
  SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。
  
  范例:
  
  PostgresSQL 大型资料库备份与回存:
  
  因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用 split进行档案分割。
  
  
  % pg_dump dbname | split -b 1m - filename.dump.
  
  重新载入
  
  
  % createdb dbname
  % cat filename.dump.* | pgsql dbname
  
  名称:touch
  使用权限:所有使用者
  
  使用方式:
  touch [-acfm]
  [-r reference-file] [--file=reference-file]
  [-t MMDDhhmm[[CC]YY][.ss]]
  [-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
  [--no-create] [--help] [--version]
  file1 [file2 ...]
  
  
  说明:
  touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。
  
  
  参数:
  a 改变档案的读取时间记录。
  m 改变档案的修改时间记录。
  c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
  f 不使用,是为了与其他 unix 系统的相容性而保留。
  r 使用参考档的时间记录,与 --file 的效果一样。
  d 设定时间与日期,可以使用各种不同的格式。
  t 设定档案的时间记录,格式与 date 指令相同。
  --no-create 不会建立新档案。
  --help 列出指令格式。
  --version 列出版本讯息。
  
  
  范例:
  
  
  最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。
  
  touch file
  touch file1 file2
  
  将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm ,就是月日时与

分。
  
  touch -c -t 05061803 file
  touch -c -t 050618032000 file
  
  将 file 的时间记录改变成与 referencefile 一样。
  
  touch -r referencefile file
  
  将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6

May 2000 。
  
  touch -d "6:03pm" file
  touch -d "05/06/2000" file
  touch -d "6:03pm 05/06/2000" file
  名称 : at
  使用权限 : 所有使用者
  
  使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
  
  说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你

也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。
  
  如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用

者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks
  
  另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或

程式,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。
  
  把计 :
  
  -V : 印出版本编号
  -q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b,

c... z 以及 A, B, ... Z 共 52 个
  -m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者
  -f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
  -l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
  -d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
  -v : 列出所有已经完成但尚未删除的指定
  
  例子 :
  三天后的下午 5 点锺执行 /bin/ls :
  at 5pm + 3 days /bin/ls
  
  三个星期后的下午 5 点锺执行 /bin/ls :
  at 5pm + 2 weeks /bin/ls
  
  明天的 17:20 执行 /bin/date :
  at 17:20 tomorrow /bin/date
  
  1999 年的最后一天的最后一分钟印出 the end of world !
  at 23:59 12/31/1999 echo the end of world !

  名称:cal
  
  使用权限:所有使用者
  
  使用方式:cal [-mjy] [month [year]]
  
  说明:
  
  显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:********cal 89 将不会是显示 1989 年的年历

。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
  1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋

旧历。
  
  匡兜
  
  -m : 以星期一为每周的第一天方式显示。
  -j : 以凯撒历显示,即以一月一日起的天数显示。
  -y : 显示今年年历。
  
  范例:
  
  cal : 显示本月的月历。
  
  [root@mylinux /root]# date
  Tue Aug 15 08:00:18 CST 2000
  [root@mylinux /root]# cal
  August 2000
  Su Mo Tu We Th Fr Sa
  1 2 3 4 5
  6 7 8 9 10 11 12
  13 14 15 16 17 18 19
  20 21 22 23 24 25 26
  27 28 29 30 31
  
  [root@mylinux /root]#
  
  
  cal 2001 : 显示公元 2001 年年历。
  
  [root@mylinux /root]# cal 2001
  2001
  
  January February March
  Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6 1 2 3 1 2 3
  7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
  14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
  21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
  28 29 30 31 25 26 27 28 25 26 27 28 29 30 31
  
  April May June
  Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6 7 1 2 3 4 5 1 2
  8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
  15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
  22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
  29 30 27 28 29 30 31 24 25 26 27 28 29 30
  
  July August September
  Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6 7 1 2 3 4 1
  8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
  15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
  22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
  29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
  30
  October November December
  Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6 1 2 3 1
  7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
  14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
  21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
  28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
  30 31
  
  [root@mylinux /root]#
  
  
  
  cal 5 2001 : 显示公元 2001 年 5 月月历。
  
  [root@mylinux /root]# cal 5 2001
  May 2001
  Su Mo Tu We Th Fr Sa
  1 2 3 4 5
  6 7 8 9 10 11 12
  13 14 15 16 17 18 19
  20 21 22 23 24 25 26
  27 28 29 30 31
  
  [root@mylinux /root]#
  
  
  
  cal -m : 以星期一为每周的第一天方式,显示本月的月历。
  
  [root@mylinux /root]# cal -m
  August 2000
  Mo Tu We Th Fr Sa Su
  1 2 3 4 5 6
  7 8 9 10 11 12 13
  14 15 16 17 18 19 20
  21 22 23 24 25 26 27
  28 29 30 31
  
  [root@mylinux /root]#
  
  
  
  cal -jy : 以一月一日起的天数显示今年的年历。
  
  [root@mylinux /root]# cal -jy
  2000
  
  January February
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  1 32 33 34 35 36
  2 3 4 5 6 7 8 37 38 39 40 41 42 43
  9 10 11 12 13 14 15 44 45 46 47 48 49 50
  16 17 18 19 20 21 22 51 52 53 54 55 56 57
  23 24 25 26 27 28 29 58 59 60
  30 31
  March April
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  61 62 63 64 92
  65 66 67 68 69 70 71 93 94 95 96 97 98 99
  72 73 74 75 76 77 78 100 101 102 103 104 105 106
  79 80 81 82 83 84 85 107 108 109 110 111 112 113
  86 87 88 89 90 91 114 115 116 117 118 119 120
  121
  May June
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  122 123 124 125 126 127 153 154 155
  128 129 130 131 132 133 134 156 157 158 159 160 161 162
  135 136 137 138 139 140 141 163 164 165 166 167 168 169
  142 143 144 145 146 147 148 170 171 172 173 174 175 176
  149 150 151 152 177 178 179 180 181 182
  
  July August
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  183 214 215 216 217 218
  184 185 186 187 188 189 190 219 220 221 222 223 224 225
  191 192 193 194 195 196 197 226 227 228 229 230 231 232
  198 199 200 201 202 203 204 233 234 235 236 237 238 239
  205 206 207 208 209 210 211 240 241 242 243 244
  212 213
  September October
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  245 246 275 276 277 278 279 280 281
  247 248 249 250 251 252 253 282 283 284 285 286 287 288
  254 255 256 257 258 259 260 289 290 291 292 293 294 295
  261 262 263 264 265 266 267 296 297 298 299 300 301 302
  268 269 270 271 272 273 274 303 304 305
  
  November December
  Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
  306 307 308 309 336 337
  310 311 312 313 314 315 316 338 339 340 341 342 343 344
  317 318 319 320 321 322 323 345 346 347 348 349 350 351
  324 325 326 327 328 329 330 352 353 354 355 356 357 358
  331 332 333 334 335 359 360 361 362 363 364 365
  366
  
  [root@mylinux /root]#
  
  
  名称 : crontab
  使用权限 : 所有使用者
  
  使用方式 :
  
  crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
  说明 :
  crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的

时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
  
  餐数 :
  
  -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那

个文字编辑器(比如说 setenv VISUAL joe)
  -r : 删除目前的时程表
  -l : 列出目前的时程表
  
  时程表的格式如下 :
  f1 f2 f3 f4 f5 program
  
  其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的

程式。
  当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
  当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
  当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
  当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
  
  使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
  例子 :
  
  每月每天每小时的第 0 分钟执行一次 /bin/ls :
  0 7 * * * /bin/ls
  
  在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
  0 6-12/3 * 12 * /usr/bin/backup
  
  周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
  0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
  
  每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
  20 0-23/2 * * * echo "haha"
  
  注意 :
  
  当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加

上 > /dev/null 2>&1 即可。
  
  名称 : date
  使用权限 : 所有使用者
  
  使用方式 :
  
  date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT]

[MMDDhhmm[[CC]YY][.ss]]
  
  说明 :
  
  date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用

的标记列表如下 :
  
  时间方面 :
  
  % : 印出 %
  %n : 下一行
  %t : 跳格
  %H : 小时(00..23)
  %I : 小时(01..12)
  %k : 小时(0..23)
  %l : 小时(1..12)
  %M : 分钟(00..59)
  %p : 显示本地 AM 或 PM
  %r : 直接显示时间 (12 小时制,格式为 hh:mms [AP]M)
  %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  %S : 秒(00..61)
  %T : 直接显示时间 (24 小时制)
  %X : 相当于 %H:%M:%S
  %Z : 显示时区
  
  日期方面 :
  %a : 星期几 (Sun..Sat)
  %A : 星期几 (Sunday..Saturday)
  %b : 月份 (Jan..Dec)
  %B : 月份 (January..December)
  %c : 直接显示日期与时间
  %d : 日 (01..31)
  %D : 直接显示日期 (mm/dd/yy)
  %h : 同 %b
  %j : 一年中的第几天 (001..366)
  %m : 月份 (01..12)
  %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
  %w : 一周中的第几天 (0..6)
  %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
  %x : 直接显示日期 (mm/dd/yy)
  %y : 年份的最后两位数字 (00.99)
  %Y : 完整年份 (0000..9999)
  
  若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟

,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
  把计 :
  
  -d datestr : 显示 datestr 中所设定的时间 (非系统时间)
  --help : 显示辅助讯息
  -s datestr : 将系统时间设为 datestr 中所设定的时间
  -u : 显示目前的格林威治时间
  --version : 显示版本编号
  
  例子 :
  显示时间后跳行,再显示目前日期 :
  date +%T%n%D
  
  显示月份与日数 :
  date +%B %d
  
  显示日期与设定时间(12:34:56) :
  date --date 12:34:56
  
  注意 :
  
  当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的

0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
  
  当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最

新的正确值。

瑞星杀毒免费下载


  名称 : sleep
  使用权限 : 所有使用者
  
  使用方式 : sleep [--help] [--version] number[smhd]
  
  说明 : sleep 可以用来将目前动作延迟一段时间
  
  参数说明 :
  
  --help : 显示辅助讯息
  --version : 显示版本编号
  number : 时间长度,后面可接 s、m、h 或 d
  其中 s 为秒,m 为 分钟,h 为小时,d 为日数
  
  例子 :
  显示目前时间后延迟 1 分钟,之后再次显示时间 :
  date;sleep 1m;date
  
  名称: time
  使用权限: 所有使用者
  
  使用方式: time [options] COMMAND [arguments]
  
  说明: time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特

别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time

指令无法取得这些资料。
  
  把计
  
  -o or --output=FILE
  设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
  -a or --append
  配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
  -f FORMAT or --format=FORMAT
  以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如

此一来就不必每次登入系统都要设定一次。
  一般设定上,你可以用
  t
  表示跳栏,或者是用
  n
  表示换行。每一项资料要用 % 做为前导。如果要在字串中使用百分比符号,就用 。(学过 C 语言的人大概会觉得很熟悉)
  time 指令可以显示的资源有四大项,分别是:
  
  Time resources
  Memory resources
  IO resources
  Command info
  
  详细的内容如下:
  
  
  Time Resources
  E 执行指令所花费的时间,格式是:[hour]:minuteecond。请注意这个数字并不代表实际的 CPU 时间。
  e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的 CPU 时间。
  S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
  U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
  P 执行指令时 CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的 CPU 时间除以总时间。
  
  
  Memory Resources
  M 执行时所占用的实体记忆体的最大值。单位是 KB
  t 执行时所占用的实体记忆体的平均值,单位是 KB
  K 执行程序所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
  D 执行程序的自有资料区(unshared data area)的平均大小,单位是 KB
  p 执行程序的自有堆叠(unshared stack)的平均大小,单位是 KB
  X 执行程序间共享内容(shared text)的平均值,单位是 KB
  Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数
  
  
  IO Resources
  F 此程序的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给

其他程序。此时该页的内容必须从置换档里再读出来。
  R 此程序的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程序。

此时该页的内容并未被破坏,不必从置换档里读出来
  W 此程序被交换到置换档的次数
  c 此程序被强迫中断(像是分配到的 CPU 时间耗尽)的次数
  w 此程序自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
  I 此程序所输入的档案数
  O 此程序所输出的档案数
  r 此程序所收到的 Socket Message
  s 此程序所送出的 Socket Message
  k 此程序所收到的信号 ( Signal )数量
  
  
  Command Info
  C 执行时的参数以及指令名称
  x 指令的结束代码 ( Exit Status )
  
  
  -p or --portability
  这个选项会自动把显示格式设定成为:
  real %e
  user %U
  sys %S
  这么做的目的是为了与 POSIX 规格相容。
  -v or --verbose
  这个选项会把所有程式中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个

指令的人相当有用。
  
  范例:
  利用下面的指令
  time -v ps -aux
  
  我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
  root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
  root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
  ......
  root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux
  
  Command being timed: "ps -aux"
  User time (seconds): 0.05
  System time (seconds): 0.06
  Percent of CPU this job got: 68%
  Elapsed (wall clock) time (h:mms or ms): 0:00.16
  Average shared text size (kbytes): 0
  Average unshared data size (kbytes): 0
  Average stack size (kbytes): 0
  Average total size (kbytes): 0
  Maximum resident set size (kbytes): 0
  Average resident set size (kbytes): 0
  Major (requiring I/O) page faults: 238
  Minor (reclaiming a frame) page faults: 46
  Voluntary context switches: 0
  Involuntary context switches: 0
  Swaps: 0
  File system inputs: 0
  File system outputs: 0
  Socket messages sent: 0
  Socket messages received: 0
  Signals delivered: 0
  Page size (bytes): 4096
  Exit status: 0
  
  名称: uptime
  使用权限: 所有使用者
  使用方式: uptime [-V]
  说明: uptime 提供使用者下面的资讯,不需其他参数:
  
  现在的时间
  系统开机运转到现在经过的时间
  连线的使用者数量
  最近一分钟,五分钟和十五分钟的系统负载
  参数: -V 显示版本资讯。
  范例: uptime
  其结果为:
  10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99
  
  名称:chfn
  
  使用权限:所有使用者
  
  用法:shell>> chfn
  
  说明:提供使用者更改个人资讯,用于 finger and mail username
  
  范例:
  
  shell>> chfn
  Changing finger information for user
  Password: [del]
  Name[]:Johnney Huang ### 提供 finger 时的资料
  Office[]:NCCU
  Office Phone[]: [del]
  Home Phone[]: [del]
  
  
  名称:chsh
  
  使用权限:所有使用者
  
  用法:shell>> chsh
  
  说明:更改使用者 shell 设定
  
  范例:
  
  shell>> chsh
  Changing fihanging shell for user1
  Password: [del]
  New shell [/bin/tcsh]: ### [是目前使用的 shell]
  [del]
  
  shell>> chsh -l ### 展示 /etc/shells 档案内容
  /bin/bash
  /bin/sh
  /bin/ash
  /bin/bsh
  /bin/tcsh
  /bin/csh
  
  ” finger [返回]
  名称: finger
  使用权限: 所有使用者
  
  使用方式: finger [options] user[@address]
  
  说明:finger 可以让使用者查询一些其他使用者的资料。会列出来的资料有:
  
  Login Name
  User Name
  Home directory
  Shell
  Login status
  mail status
  .plan
  .project
  .forward
  
  其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等档案里的资料。如果

没有就没有。finger 指令并不限定于在同一伺服器上查询,也可以寻找某一个远端伺服器上的使用者。只要给一个像是 E-mail address 一般

的地址即可。
  把计
  
  -l
  多行显示。
  
  -s
  单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远

端伺服器的使用者,这个选项无效。
  
  范例:下列指令可以查询本机管理员的资料:
  finger root
  
  其结果如下:
  Login: root Name: root
  Directory: /root Shell: /bin/bash
  Never logged in.
  No mail.
  No Plan.

瑞星杀毒免费下载


  名称:last
  
  使用权限:所有使用者
  
  使用方式:shell>> last [options]
  
  说明:显示系统开机以来获是从每月初登入者的讯息
  
  把计
  
  -R 省略 hostname 的栏位
  -num 展示前 num 个
  username 展示 username 的登入讯息
  tty 限制登入讯息包含终端机代号
  
  范例:
  
  shell>> last -R -2
  johnney pts/1 Mon Aug 14 20:42 still logged in
  johnney pts/0 Mon Aug 14 19:59 still logged in
  
  wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp
  
  
  shell>> last -2 minery
  minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
  minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
  
  wtmp begins Tue Aug 1 09:01:10 2000
  
  
  名称:login
  
  这个命令都不会就不要干算了!呵呵我也不在这里多费笔墨耽误大家美好青春了^_^
  
  名称:passwd
  
  使用权限:所有使用者
  
  使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
  
  说明:用来更改使用者的密码
  
  参数:
  -k
  
  -l
  
  -u
  
  -f
  
  -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用.
  
  -S 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用.
  
  [username] 指定帐号名称.
  
  名称 : who
  使用权线 : 所有使用者都可使用
  
  使用方式 : who - [husfV] [user]
  
  说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU

使用量,动作等等。
  
  把计 :
  
  -h : 不要显示标题列
  -u : 不要显示使用者的动作/工作
  -s : 使用简短的格式来显示
  -f : 不要显示使用者的上线位置
  -V : 显示程式版本
  名称:/etc/aliases
  使用权限:系统管理者
  使用方式: 请用 newaliases 更新资料库
  说明:
  sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据

aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在

mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际

aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
  
  /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转

换成一个 sendmail 所能了解的资料库。范例:
  # newaliases
  
  下面命令会做相同的事,
  # sendmail -bi
  
  相关命令:
  mail, mailq, newaliases, sendmail
  
  ” mail [返回]
  名称:mail
  
  使用权限:所有使用者
  
  
  使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
  
  
  说明:
  mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,

因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
  
  
  参数:
  i 忽略 tty 的中断讯号。 (interrupt)
  I 强迫设成互动模式。 (Interactive)
  v 列印出讯息,例如送信的地点、状态等等。 (verbose)
  n 不读入 mail.rc 设定档。
  s 邮件标题。
  c cc 邮件地址。
  b bcc 邮件地址。
  
  
  范例:
  
  
  将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会

送给邮件伺服器的 user2 使用者。
  
  mail user1@email.address
  mail user1@email.address user2
  
  将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
  
  mail -s 标题 -c user1 user2 < mail.txt
  
  指令:mesg
  使用权限 : 所有使用者
  
  使用方式 : mesg [y|n]
  
  说明 : 决定是否允许其他人传讯息到自己的终端机介面
  
  
  把计 
  
  y : 允许讯息传到终端机介面上。
  n : 不允许讯息传到终端机介面上 。
  如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
  
  例子 :
  改变目前讯息设定,改成不允许讯息传到终端机介面上 :
  mesg n
  
  
  与 mesg 相关的指令有: talk,write,wall。
  
  
  名称:/etc/aliases
  使用权限:系统管理者
  使用方式: newaliases
  说明:
  sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据

aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在

mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际

aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
  
  /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转

换成一个 sendmail 所能了解的资料库。
  
  参数:没有任何参数。 范例:
  # newaliases
  
  下面命令会做相同的事,
  # sendmail -bi
  
  相关命令:
  mail, mailq, newaliases, sendmail
  
  名称 : talk
  使用权限 : 所有使用者
  
  使用方式 :
  
  talk person [ttyname]
  说明 : 与其他使用者对谈
  
  把计 :
  
  person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入 person@machine.name
  ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
  
  例子.1 :
  
  与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
  talk Rollaend
  
  
  接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 ****talk jzlee****即可开始对谈,结束请按 ctrl+c
  
  例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
  talk Rollaend@linuxfab.cx pts/2
  
  
  接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 ****talk jzlee@jzlee.home****即可开始对谈,结束请按 ctrl+c
  
  注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
  
  
  名称 : wall
  使用权限 : 所有使用者
  
  使用方式 :
  
  wall [ message ]
  使用说明:
  wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用

Ctrl+D)
  
  例子 :
  
  传讯息"hi" 给每一个使用者 :
  wall hi
  
  
  名称 : write
  使用权限 : 所有使用者
  
  使用方式 :
  
  write user [ttyname]
  说明 : 传讯息给其他使用者
  
  把计 :
  
  user : 预备传讯息的使用者帐号
  ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
  
  例子.1 :
  
  传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
  write Rollaend
  
  
  接下来就是将讯息打上去,结束请按 ctrl+c
  
  例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
  write Rollaend pts/2
  
  
  接下来就是将讯息打上去,结束请按 ctrl+c
  
  注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
  
  名称:kill
  使用权限:所有使用者
  
  使用方式:
  
  kill [ -s signal | -p ] [ -a ] pid ...
  kill -l [ signal ]
  说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM)

的信号
  把计
  
  -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
  -p : 印出 pid , 并不送出信号
  -l (signal) : 列出所有可用的信号名称
  范例:
  
  将 pid 为 323 的行程砍掉 (kill) :
  kill -9 323
  
  将 pid 为 456 的行程重跑 (restart) :
  kill -HUP 456

  名称:nice
  使用权限:所有使用者
  
  使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]
  
  说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先

序) 到 19 (最低优先序)
  
  
  把计
  
  -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
  --help 显示求助讯息
  --version 显示版本资讯
  范例:
  将 ls 的优先序加 1 并执行 :
  nice -n 1 ls
  
  将 ls 的优先序加 10 并执行 :
  nice ls将 ls 的优先序加 10 并执行
  
  注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先

序越高,所可能获得的 CPU时间就越多。
  
  名称:ps
  使用权限:所有使用者
  使用方式:ps [options] [--help]
  说明:显示瞬间行程 (process) 的动态
  参数:
  ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
  -A 列出所有的行程
  -w 显示加宽可以显示较多的资讯
  -au 显示较详细的资讯
  -aux 显示所有包含其他使用者的行程
  
  au(x) 输出格式 :
  
  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  USER: 行程拥有者
  PID: pid
  %CPU: 占用的 CPU 使用率
  %MEM: 占用的记忆体使用率
  VSZ: 占用的虚拟记忆体大小
  RSS: 占用的记忆体大小
  TTY: 终端的次要装置号码 (minor device number of tty)
  STAT: 该行程的状态:
  D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
  R: 正在执行中
  S: 静止状态
  T: 暂停执行
  Z: 不存在但暂时无法消除
  W: 没有足够的记忆体分页可分配
  <: 高优先序的行程
  N: 低优先序的行程
  L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
  START: 行程开始时间
  TIME: 执行的时间
  COMMAND:所执行的指令
  
  范例:
  
  ps
  PID TTY TIME CMD
  2791 ttyp0 00:00:00 tcsh
  3092 ttyp0 00:00:00 ps
  % ps -A
  PID TTY TIME CMD
  1 ? 00:00:03 init
  2 ? 00:00:00 kflushd
  3 ? 00:00:00 kpiod
  4 ? 00:00:00 kswapd
  5 ? 00:00:00 mdrecoveryd
  .......
  % ps -aux
  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
  root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
  root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
  root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
  ........
  
  名称:pstree
  使用权限:所有使用者
  使用方式:
  pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
  pstree -V
  说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则

树状图会只显示该使用者所拥有的行程
  参数:
  -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
  -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
  范例:
  
  pstree
  
  init-+-amd
  |-apmd
  |-atd
  |-httpd---10*[httpd]
  %pstree -p
  init(1)-+-amd(447)
  |-apmd(105)
  |-atd(339)
  %pstree -c
  init-+-amd
  |-apmd
  |-atd
  |-httpd-+-httpd
  | |-httpd
  | |-httpd
  | |-httpd
  ....
  
  名称:renice
  使用权限:所有使用者
  
  使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
  
  说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
  
  把计
  
  -p pid 重新指定行程的 id 为 pid 的行程的优先序
  -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
  -u user 重新指定行程拥有者为 user 的行程的优先序
  范例:
  将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
  renice +1 987 -u daemon root -p 32
  
  注意 : 每一个行程(Process)都有一个唯一的 (unique) id
  
  名称:top
  使用权限:所有使用者
  
  使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
  
  说明:即时显示 process 的动态
  
  把计
  
  d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行

程 ( dead child process ) 的 CPU time 累积起来
  s : 安全模式,将交谈式指令取消, 避免潜在的危机
  i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
  n : 更新的次数,完成后将会退出 top
  b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
  
  范例:
  显示更新十次后退出 ;
  top -n 10
  
  使用者将不能利用交谈式指令来对行程下命令 :
  top -s
  
  将更新显示二次的结果输入到名称为 top.log 的档案里 :
  top -n 2 -b < top.log
  
  名称:skill
  
  使用权限:所有使用者
  
  使用方式: skill [signal to send] [options] 选择程序的规则
  
  说明:
  
  送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0
  
  讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。
  
  一般参数:
  
  -f 快速模式/尚未完成
  
  -i 互动模式/ 每个动作将要被确认
  
  -v 详细输出/ 列出所选择程序的资讯
  
  -w 智能警告讯息/ 尚未完成
  
  -n 没有动作/ 显示程序代号
  
  参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。
  
  -t 终端机代号 ( tty 或 pty )
  
  -u 使用者名称
  
  -p 程序代号 ( pid )
  
  -c 命令名称 可使用的讯号:
  
  以下列出已知的讯号名称,讯号代号,功能。
  
  名称 (代号) 功能/ 描述
  
  ALRM 14 离开
  
  HUP 1 离开
  
  INT 2 离开
  
  KILL 9 离开/ 强迫关闭
  
  PIPE 13 离开
  
  POLL 离开
  
  PROF 离开
  
  TERM 15 离开
  
  USR1 离开
  
  USR2 离开
  
  VTALRM 离开
  
  STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体
  
  UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体
  
  TSTP 停止 /产生与内容相关的行为
  
  TTIN 停止 /产生与内容相关的行为
  
  TTOU 停止 /产生与内容相关的行为
  
  STOP 停止 /强迫关闭
  
  CONT 从新启动 /如果在停止状态则从新启动,否则忽略
  
  PWR 忽略 /在某些系统中会离开
  
  WINCH 忽略
  
  CHLD 忽略
  
  ABRT 6 核心
  
  FPE 8 核心
  
  ILL 4 核心
  
  QUIT 3 核心
  
  SEGV 11 核心
  
  TRAP 5 核心
  
  SYS 核心 /或许尚未实作
  
  EMT 核心 /或许尚未实作
  
  BUS 核心 /核心失败
  
  XCPU 核心 /核心失败
  
  XFSZ 核心 /核心失败
  
  范例:
  
  停止所有在 PTY 装置上的程序
  skill -KILL -v pts/*
  
  停止三个使用者 user1 , user2 , user3
  skill -STOP user1 user2 user3
  
  其他相关的命令: kill
  
  名称:expr
  
  使用权限:所有使用者
  ### 字串长度
  
  shell>> expr length "this is a test"
  14
  
  ### 数字商数
  
  shell>> expr 14 % 9
  5
  
  ### 从位置处抓取字串
  
  shell>> expr substr "this is a test" 3 5
  is is
  
  ### 数字串 only the first character
  
  shell>> expr index "testforthegame" e
  2
  
  ### 字串真实重现
  
  shell>> expr quote thisisatestformela
  thisisatestformela

瑞星杀毒免费下载


  名称: tr
  
  ### 1.比方说要把目录下所有的大写档名换为小写档名?
  
  似乎有很多方式,"tr"是其中一种:
  
  #!/bin/sh
  
  dir="/tmp/testdir";
  files=****find $dir -type f****;
  for i in $files
  do
  dir_name=****dirname $i****;
  ori_filename=****basename $i****
  new_filename=****echo $ori_filename | tr [:upper:] [:lower:]**** > /dev/null;
  #echo $new_filename;
  mv $dir_name/$ori_filename $dir_name/$new_filename
  done
  
  
  ### 2.自己试验中...lowercase to uppercase
  
  tr abcdef...[del] ABCDE...[del]
  tr a-z A-Z
  tr [:lower:] [:upper:]
  
  shell>> echo "this is a test" | tr a-z A-Z > www
  shell>> cat www
  THIS IS A TEST
  
  ### 3.去掉不想要的字串
  
  shell>> tr -d this ### 去掉有关 t.e.s.t
  this
  
  man
  man
  test
  e
  
  ### 4.取代字串
  
  shell>> tr -s "this" "TEST"
  this
  TEST
  th
  TE
  
  
  指令:clear
  用途:清除萤幕用。
  
  使用方法:在 console 上输入 clear。
  
  
  名称: reset, tset
  使用方法: tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]
  
  使用说明:
  
  reset 其实和 tset 是一同个命令,它的用途是设定终端机的状态。一般而言,这个命令会自动的从环境变数、命令列或是其它的组态档

决定目前终端机的型态。如果指定型态是 ? 的话,这个程式会要求使用者输入终端机的型别。
  
  由于这个程式会将终端机设回原始的状态,除了在 login 时使用外,当系统终端机因为程式不正常执行而进入一些奇怪的状态时,你也可

以用它来重设终端机o 例如不小心把二进位档用 cat 指令进到终端机,常会有终端机不再回应键盘输入,或是回应一些奇怪字元的问题。此时

就可以用 reset 将终端机回复至原始状态。选项说明:
  
  
  -p
  将终端机类别显示在萤幕上,但不做设定的动作。这个命令可以用来取得目前终端机的类别。
  -e ch
  将 erase 字元设成 ch
  -i ch
  将中断字元设成 ch
  -k ch
  将删除一行的字元设成 ch
  -I
  不要做设定的动作,如果没有使用选项 -Q 的话,erase、中断及删除字元的目前值依然会送到萤幕上。
  -Q
  不要显示 erase、中断及删除字元的值到萤幕上。
  -r
  将终端机类别印在萤幕上。
  -s
  将设定 TERM 用的命令用字串的型式送到终端机中,通常在 .login 或 .profile 中用
  范例:
  让使用者输入一个终端机型别并将终端机设到该型别的预设状态。
  # reset ?
  
  将 erase 字元设定 control-h
  # reset -e ^B
  
  将设定用的字串显示在萤幕上
  # reset -s
  Erase is control-B (^B).
  Kill is control-U (^U).
  Interrupt is control-C (^C).
  TERM=xterm;
  
  名称:compress
  
  使用权限:所有使用者
  
  
  使用方式:compress [-dfvcV] [-b maxbits] [file ...]
  
  
  说明:
  compress 是一个相当古老的 unix 档案压缩指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案可以以

uncompress 解压。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。由于 gzip 可以产生更理想的压缩比例,一般人多已改

用 gzip 为档案压缩工具。
  
  
  参数:
  c 输出结果至标准输出设备(一般指荧幕)
  f 强迫写入档案,若目的档已经存在,则会被覆盖 (force)
  v 将程式执行的讯息印在荧幕上 (verbose)
  b 设定共同字串数的上限,以位元计算,可以设定的值为 9 至 16 bits 。由于值越大,能使用的共同字串就 越多,压缩比例就越大,所

以一般使用预设值 16 bits (bits)
  d 将压缩档解压缩
  V 列出版本讯息
  
  
  范例:
  
  
  将 source.dat 压缩成 source.dat.Z ,若 source.dat.Z 已经存在,内容则会被压缩档覆盖。
  
  compress -f source.dat
  
  将 source.dat 压缩成 source.dat.Z ,并列印出压缩比例。
  -v 与 -f 可以一起使用
  
  compress -vf source.dat
  
  将压缩后的资料输出后再导入 target.dat.Z 可以改变压缩档名。
  
  compress -c source.dat > target.dat.Z
  
  -b 的值越大,压缩比例就越大,范围是 9-16 ,预设值是 16 。
  
  compress -b 12 source.dat
  
  将 source.dat.Z 解压成 source.dat ,若档案已经存在,使用者按 y 以确定覆盖档案,若使用 -df 程式则会自动覆盖档案。由于系统

会自动加入 .Z 为延伸档名,所以 source.dat 会自动当作 source.dat.Z 处理。
  
  compress -d source.dat
  compress -d source.dat.Z

  名称: lpd
  
  使用权限: 所有使用者
  
  使用方式:lpd [-l] [#port]
  lpd 是一个常驻的印表机管理程式,它会根据 /etc/printcap 的内容来管理本地或远端的印表机。/etc/printcap 中定义的每一个印表机

必须在 /var/lpd 中有一个相对应的目录,目录中以 cf 开头的档案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生。
  
  lpr 和 lpd 组成了一个可以离线工作的系统,当你使用 lpr 时,印表机不需要能立即可用,甚至不用存在。lpd 会自动监视印表机的状

况,当印表机上线后,便立即将档案送交处理。这个得所有的应用程式不必等待印表机完成前一工作。
  
  参数:
  
  
  -l: 将一些除错讯息显示在标准输出上。
  #port: 一般而言,lpd 会使用 getservbyname 取得适当的 TCP/IP port,你可以使用这个参数强迫 lpd 使用指定的 port。
  
  范例:
  这个程式通常是由 /etc/rc.d 中的程式在系统启始阶段执行。
  
  名称 lpq
  -- 显示列表机贮列中未完成的工作 用法
  
  lpq [l] [P] [user]
  
  说明
  lpq 会显示由 lpd 所管理的列表机贮列中未完成的项目。
  
  范例
  范例 1. 显示所有在 lp 列表机贮列中的工作
  
  
  # lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes
  
  
  相关函数
  lpr,lpc,lpd
  
  名称: lpr
  
  使用权限: 所有使用者
  
  使用方式:lpr [ -P printer ]
  将档案或是由标准输入送进来的资料送到印表机贮列之中,印表机管理程式 lpd 会在稍后将这个档案送给适当的程式或装置处理。lpr 可

以用来将料资送给本地或是远端的主机来处理。
  
  参数:
  
  
  -p Printer: 将资料送至指定的印表机 Printer,预设值为 lp。
  
  范例:
  将 www.c 和 kkk.c 送到印表机 lp。
  lpr -Plp www.c kkk.c
  
  
  名称: lprm
  -- 将一个工作由印表机贮列中移除 用法
  
  /usr/bin/lprm [P] [file...]
  
  说明
  尚未完成的印表机工作会被放在印表机贮列之中,这个命令可用来将常未送到印表机的工作取消。由于每一个印表机都有一个独立的贮列

,你可以用 -P 这个命令设定想要作用的印列机。如果没有设定的话,会使用系统预设的印表机。
  
  这个命令会检查使用者是否有足够的权限删除指定的档案,一般而言,只有档案的拥有者或是系统管理员才有这个权限。
  
  范例
  将印表机 hpprinter 中的第 1123 号工作移除
  
  
  lprm -Phpprinter 1123
  
  
  将第 1011 号工作由预设印表机中移除
  
  
  lprm 1011
  
  
  名称: fdformat
  
  使用权限: 所有使用者
  
  使用方式:fdformat [-n] device
  
  使用说明 :
  对指定的软碟机装置进行低阶格式化。使用这个指令对软碟格式化的时候,最好指定像是下面的装置:
  
  
  /dev/fd0d360 磁碟机 A: ,磁片为 360KB 磁碟
  /dev/fd0h1440 磁碟机 A: ,磁片为 1.4MB 磁碟
  /dev/fd1h1200 磁碟机 B: ,磁片为 1.2MB 磁碟
  如果使用像是 /dev/fd0 之类的装置,如果里面的磁碟不是标准容量,格式化可能会失败。在这种情况之下,使用者可以用 setfdprm 指

令先行指定必要参数。
  
  参数:
  
  
  -n 关闭确认功能。这个选项会关闭格式化之后的确认步骤。
  
  范例:
  
  fdformat -n /dev/fd0h1440
  
  将磁碟机 A 的磁片格式化成 1.4MB 的磁片。并且省略确认的步骤。
  
  名称: mformat
  
  使用权限: 所有使用者
  
  使用方式:
  
  mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2

sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0

rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:
  
  在已经做过低阶格式化的磁片上建立 DOS 档案系统。如果在编译 mtools 的时候把 USE_2M 的参数打开,部分与 2M 格式相关的参数就会

发生作用。否则这些参数(像是 S,2,1,M)不会发生作用。
  
  参数:
  
  -t 磁柱(synlider)数
  -h 磁头(head)数
  -s 每一磁轨的磁区数
  -l 标签
  -F 将磁碟格式化为 FAT32 格式,不过这个参数还在实验中。
  -I 设定 FAT32 中的版本号。这当然也还在实验中。
  -S 磁区大小代码,计算方式为 sector = 2^(大小代码+7)
  -c 磁丛(cluster)的磁区数。如果所给定的数字会导致磁丛数超过 FAT 表的限制,mformat 会自动放大磁区数。
  -s
  -M 软体磁区大小。这个数字就是系统回报的磁区大小。通常是和实际的大小相同。
  -a 如果加上这个参数,mformat 会产生一组 Atari 系统的序号给这块软碟。
  -X 将软碟格式化成 XDF 格式。使用前必须先用 xdfcopy 指令对软碟作低阶格式化的动作。
  -C 产生一个可以安装 MS-DOS 档案系统的磁碟影像档(disk image)。当然对一个实体磁碟机下这个参数是没有意义的。
  -H 隐藏磁区的数目。这通常适用在格式化硬碟的分割区时,因为通常一个分割区的前面还有分割表。这个参数未经测试,能不用就不用。
  -n 磁碟序号
  -r 根目录的大小,单位是磁区数。这个参数只对 FAT12 和 FAT16 有效。
  -B 使用所指定的档案或是设备的开机磁区做为这片磁片或分割区的开机磁区。当然当中的硬体参数会随之更动。
  -k 尽量保持原有的开机磁区。
  -0 第 0 轨的资料传输率
  -A 第 0 轨以外的资料传输率
  -2 使用 2m 格式
  -1 不使用 2m 格式
  
  范例:
  mformat a:
  
  这样会用预设值把 a: (就是 /dev/fd0)里的磁碟片格式化。
  
  名称: mkdosfs
  
  使用权限: 所有使用者
  
  使用方式: mkdosfs [ -c | -l filename ]
  [ -f number_of_FATs ]
  [ -F FAT_size ]
  [ -i volume_id ]
  [ -m message_file ]
  [ -n volume_name ]
  [ -r root_dir_entry ]
  [ -s sector_per_cluster ]
  [ -v ]
  device
  [ block_count ]
  
  说明: 建立 DOS 档案系统。 device 指你想要建立 DOS 档案系统的装置代号。像是 /dev/hda1 等等。 block_count 则是你希望配置的

区块数。如果 block_count 没有指定则系统会自动替你计算符合该装置大小的区块数。
  
  参数:
  
  
  -c 建立档案系统之前先检查是否有坏轨。
  -l 从得定的档案中读取坏轨记录。
  -f 指定档案配置表(FAT , File Allocation Table)的数量。预设值为 2 。目前 Linux 的 FAT 档案系统不支援超过 2 个 FAT 表。通

常这个不需要改。
  -F 指定 FAT 表的大小,通常是 12 或是 16 个位元组。12 位元组通常用于磁碟片,16 位元组用于一般硬碟的分割区,也就是所谓的

FAT16 格式。这个值通常系统会自己选定适当的值。在磁碟片上用 FAT16 通常不会发生作用,反之在硬碟上用 FAT12 亦然。
  -i 指定 Volume ID。一般是一个 4 个位元组的数字,像是 2e203a47 。如果不给系统会自己产生。
  -m 当使用者试图用这片磁片或是分割区开机,而上面没有作业系统时,系统会给使用者一段警告讯息。这个参数就是用来变更这个讯息的

。你可以先用档案编辑好,然后用这个参数指定,或是用
  -m -
  这样系统会要求你直接输入这段文字。要特别注意的是,档案里的字串长度不要超过 418 个字,包括展开的跳栏符号(TAB)和换行符号

(换行符号在 DOS 底下算两个字元!)
  -n 指定 Volume Name,就是磁碟标签。如同在 DOS 底下的 format 指令一样,给不给都可以。没有预设值。
  -r 指定根目录底下的最大档案数。这里所谓的档案数包括目录。预设值是在软碟上是 112 或是 224 ,在硬碟上是 512。没事不要改这个

数字。
  -s 每一个磁丛(cluster)的磁区数。必须是 2 的次方数。不过除非你知道你在作什么,这个值不要乱给。
  -v 提供额外的讯息
  
  范例:
  mkdosfs -n Tester /dev/fd0 将 A 槽里的磁碟片格式化为 DOS 格式,并将标签设为 Tester

linux命令

一. 启动,关机,登入,登出相关命令

  login 登录

  logout 登出

  exit 登出

  shutdown 停止系统

  halt 停止系统

  reboot 重启动

  poweroff 切断电源

  sync 把内存里的内容写入磁盘

  lilo 安装lilo启动管理程序

  grub 安装lilo启动管理程序

  二. Shell相关命令

  chsh 切换Shell

  history 显示命令履历

  alias 设置命令别名

  unalias 取消命令别名

  which 显示命令所在位置

  type 查询命令种类

  echo 显示字符串或者变量内容

  set 设置/显示Shell变量

  printenv 显示环境变量

  export 设置环境变量

  env 设置临时环境变量

  unset 释放环境变量

  setenv 设置环境变量

  unsetenv 释放环境变量

  source 执行文件当中的命令

  man 查询命令手册

  info 查询超文本命令手册

  whatis 显示命令简介

  apropos 通过关键字查询手册

  三. 用户管理相关命令

  su 切换到其他用户

  useradd 追加用户

  adduser 追加用户

  userdel 删除用户

  usermod 修改用户设置

  chfn 修改用户私人信息

  groupadd 追加组

  groupdel 删除组

  groupmod 修改组设置

passwd 更改密码

  whoami 显示用户名

  logname 显示登录用户帐号

  users 显示所有登录用户信息

  who 查询登录用户信息

  w 查询登录用户信息

  id 显示指定用户的ID信息

  groups 显示指定用户的所属组

  finger 显示指定用户的个人信息

  mesg 开关与他人收发消息

  write 给其他用户发消息

  wall 给所有用户发消息

  talk 和其他用户聊天

  四. 系统消息相关命令

  date 显示/设置当前时间

  uptime 显示系统运行时间

  arch 显示机器的核心构架(如i386)

  uname 显示操作系统信息

  tty 显示终端名

  last 显示登录/登出在履历

  lastb 显示非法登录信息

  dumpkeys 显示当前键盘配置

  loadkeys 变更键盘配置

  df 查询磁盘使用信息

  du 查询磁盘使用信息

  dmesg 显示系统启动消息

  script 保存输入输出到文件

  五. 文件操作相关命令

  ls 显示文件列表

  tree 显示目录树

  pwd 显示当前路径

  cd 更改当前路径

  pushd 追加路径到目录堆栈

  popd 从目录堆栈删除路径

  dirs 显示目录堆栈的内容

  mkdir 创建路径

  rmdir 删除路径

  cp 复制文件/目录

  rm 删除文件/目录

mv 移动文件/目录,修改文件名

  chown 更改文件/目录的所有者

  chgrp 修改文件/目录的所有组

  chmod 修改文件/目录的权限

  touch 更改文件时间

  ln 建立文件/目录链接

  find 查找文件

  whereis 显示文件存在的路径名

  file 查询文件种类

  size 查询文件大小

  六. 文件编辑相关命令

  cat 显示文件内容

  tee 输出到文件和屏幕

  more 分屏显示文件内容

  less 分屏显示文件内容

  head 显示文件头部内容

  tail 显示文件尾部内容

  fold 折叠显示长行

  sort 排列文件的行

  cmp 比较文件内容

  diff 显示文件差异

  nkf 更改日语文件编码

  dd 变更文件之后复制

  wc 统计文本单词数,文件大小等

  split 分割文件 ---http://www.bianceng.cn

  paste 以行连接文件

  join 以字段连接文件

  grep 查询文字

  uniq 过滤重复部分显示文件内容

  tr 替换文字

  sed 替换文字

  七. 压缩/解压缩相关命令

  ar 压缩/解压缩文件

  tar 压缩/解压缩文件

  compress 压缩/解压缩文件

  uncompress 解压缩

  gzip 压缩/解压缩文件

  gunzip 解压缩

  zcat 显示压缩文件的内容

  lha 压缩/解压缩文件
uuencode 把二进制文件编码为文本文件

  uudecode 把经过编码的文本文件还原为二进制文件

  八. MS-DOS工具集[mtools]命令

  mdir 显示文件列表

  mcd 改变当前目录

  mmd 新建目录

  mrd 删除目录

  mdeltree 删除目录树

  mcopy 复制文件

  mdel 删除文件

  mmove 移动文件

  mren 更改文件或目录名

  mattrib 修改文件属性

  mtype 显示文件内容

  mdu 查询文件或目录大小

  minfo 显示磁盘信息

  mformat 以MS-DOS方式格式化磁盘

  mlabel 设置磁盘标签

  九. 控制外部设备相关命令

  mount mount上设备

  umount 解除已经mount上的设备

  eject 弹出(CD/DVD等)

  fdformat 格式化软盘

  fdisk 配置/显示硬盘分区

  mkfs 格式化磁盘分区

  fsck 检查/修复磁盘错误

  lpr 打印到打印机

  lprm 中断打印任务

  lpq 显示打印任务的状态

  lpc 管理/控制打印任务

  ifconfig 显示/设定NIC配置

  十. 进程及任务管理相关命令

  ps 显示正在运行的进程

  jobs 显示后台运行任务

  fg 把任务切换到前台

  bg 把任务切换到后台

  kill 中止进程或任务

  killall 中止进程或任务

  wait 等待进程或任务的结束
at 设置定时执行任务

  atq 显示尚未执行的任务

  atrm 删除定时执行任务

  batch 在系统负荷减轻的时候执行任务

  nice 改变优先度并执行任务

  nohup 在后台执行任务,Logout之后也不退出

  sleep 休眠一定的时间

  十一. 网络管理相关命令

  netstat 显示当前网络连接状况

  route 显示/设置路由

  host 显示网络主机情况

  hostname 显示/设置当前主机的名字

  ping 确认和远程机器的连接情况

  traceroute 显示路由信息

  rwho 查询网上机器的登陆用户

  ruptime 查询网上机器的系统运行时间

  rlogin 登陆到远程机器

  telnet 用telnet登陆到远程机器

  rsh 给远程机器发送命令

  rcp 在远程机器之间复制文件

  mail 收取邮件

  sendmail 发送邮件

  mailq 确认邮件队列

  ftp 用ftp传输文件

  十二. 其他命令

  cal 显示日历

  clear 清屏

  gcc 编译C语言代码

  as 汇编

  bc 计算

  rpm Redhat的包管理

  dpkg Debian的包管理

  installpkg Slackware的包安装(删除命令则是removepkg)

  XF86Setup,turboxfg,Xconfigurator 配置 X 服务器

  startx 启动 X-Window 系统

  附:组合命令

  重定向,如

  $ ls -l /bin ls-output

  $ more ls-output

  管道命令,如

  $ cat file1 file2 | sort | uniq

redhat linux命令大全

一. 启动,关机,登入,登出相关命令
login 登录
logout 登出
exit 登出
shutdown 停止系统
halt 停止系统
reboot 重启动
poweroff 切断电源
sync 把内存里的内容写入磁盘
lilo 安装lilo启动管理程序
grub 安装lilo启动管理程序

二. Shell相关命令
chsh 切换Shell
history 显示命令履历
alias 设置命令别名
unalias 取消命令别名
which 显示命令所在位置
type 查询命令种类
echo 显示字符串或者变量内容
set 设置/显示Shell变量
printenv 显示环境变量
export 设置环境变量
env 设置临时环境变量
unset 释放环境变量
setenv 设置环境变量
unsetenv 释放环境变量
source 执行文件当中的命令
man 查询命令手册
info 查询超文本命令手册
whatis 显示命令简介
apropos 通过关键字查询手册

三. 用户管理相关命令
su 切换到其他用户
useradd 追加用户
adduser 追加用户
userdel 删除用户
usermod 修改用户设置
chfn 修改用户私人信息
groupadd 追加组
groupdel 删除组
groupmod 修改组设置
passwd 更改密码
whoami 显示用户名
logname 显示登录用户帐号
users 显示所有登录用户信息
who 查询登录用户信息
w 查询登录用户信息
id 显示指定用户的ID信息
groups 显示指定用户的所属组
finger 显示指定用户的个人信息
mesg 开关与他人收发消息
write 给其他用户发消息
wall 给所有用户发消息
talk 和其他用户聊天

四. 系统消息相关命令
date 显示/设置当前时间
uptime 显示系统运行时间
arch 显示机器的核心构架(如i386)
uname 显示操作系统信息
tty 显示终端名
last 显示登录/登出在履历
lastb 显示非法登录信息
dumpkeys 显示当前键盘配置
loadkeys 变更键盘配置
df 查询磁盘使用信息
du 查询磁盘使用信息
dmesg 显示系统启动消息
script 保存输入输出到文件

五. 文件操作相关命令
ls 显示文件列表
tree 显示目录树
pwd 显示当前路径
cd 更改当前路径
pushd 追加路径到目录堆栈
popd 从目录堆栈删除路径
dirs 显示目录堆栈的内容
mkdir 创建路径
rmdir 删除路径
cp 复制文件/目录
rm 删除文件/目录
mv 移动文件/目录,修改文件名
chown 更改文件/目录的所有者
chgrp 修改文件/目录的所有组
chmod 修改文件/目录的权限
touch 更改文件时间
ln 建立文件/目录链接
find 查找文件
whereis 显示文件存在的路径名
file 查询文件种类
size 查询文件大小

六. 文件编辑相关命令
cat 显示文件内容
tee 输出到文件和屏幕
more 分屏显示文件内容
less 分屏显示文件内容
head 显示文件头部内容
tail 显示文件尾部内容
fold 折叠显示长行
sort 排列文件的行
cmp 比较文件内容
diff 显示文件差异
nkf 更改日语文件编码
dd 变更文件之后复制
wc 统计文本单词数,文件大小等
split 分割文件
paste 以行连接文件
join 以字段连接文件
grep 查询文字
uniq 过滤重复部分显示文件内容
tr 替换文字
sed 替换文字

七. 压缩/解压缩相关命令
ar 压缩/解压缩文件
tar 压缩/解压缩文件
compress 压缩/解压缩文件
uncompress 解压缩
gzip 压缩/解压缩文件
gunzip 解压缩
zcat 显示压缩文件的内容
lha 压缩/解压缩文件
uuencode 把二进制文件编码为文本文件
uudecode 把经过编码的文本文件还原为二进制文件

八. MS-DOS工具集[mtools]命令
mdir 显示文件列表
mcd 改变当前目录
mmd 新建目录
mrd 删除目录
mdeltree 删除目录树
mcopy 复制文件
mdel 删除文件
mmove 移动文件
mren 更改文件或目录名
mattrib 修改文件属性
mtype 显示文件内容
mdu 查询文件或目录大小
minfo 显示磁盘信息
mformat 以MS-DOS方式格式化磁盘
mlabel 设置磁盘标签

九. 控制外部设备相关命令
mount mount上设备
umount 解除已经mount上的设备
eject 弹出(CD/DVD等)
fdformat 格式化软盘
fdisk 配置/显示硬盘分区
mkfs 格式化磁盘分区
fsck 检查/修复磁盘错误
lpr 打印到打印机
lprm 中断打印任务
lpq 显示打印任务的状态
lpc 管理/控制打印任务
ifconfig 显示/设定NIC配置

十. 进程及任务管理相关命令
ps 显示正在运行的进程
jobs 显示后台运行任务
fg 把任务切换到前台
bg 把任务切换到后台
kill 中止进程或任务
killall 中止进程或任务
wait 等待进程或任务的结束
at 设置定时执行任务
atq 显示尚未执行的任务
atrm 删除定时执行任务
batch 在系统负荷减轻的时候执行任务
nice 改变优先度并执行任务
nohup 在后台执行任务,Logout之后也不退出
sleep 休眠一定的时间

十一. 网络管理相关命令
netstat 显示当前网络连接状况
route 显示/设置路由
host 显示网络主机情况
hostname 显示/设置当前主机的名字
ping 确认和远程机器的连接情况
traceroute 显示路由信息
rwho 查询网上机器的登陆用户
ruptime 查询网上机器的系统运行时间
rlogin 登陆到远程机器
telnet 用telnet登陆到远程机器
rsh 给远程机器发送命令
rcp 在远程机器之间复制文件
mail 收取邮件
sendmail 发送邮件
mailq 确认邮件队列
ftp 用ftp传输文件

十二. 其他命令
cal 显示日历
clear 清屏
gcc 编译C语言代码
as 汇编
bc 计算
rpm Redhat的包管理
dpkg Debian的包管理
installpkg Slackware的包安装(删除命令则是removepkg)
XF86Setup,turboxfg,Xconfigurator 配置 X 服务器
startx 启动 X-Window 系统
附:组合命令
重定向,如
$ ls -l /bin ls-output
$ more ls-output
管道命令,如
$ cat file1 file2 | sort | uniq
经常被用于管道的命令
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc