分页: 2/8 第一页 上页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Apr 6
使用权限
所有用户
语法格式
打开一个编辑器去修改或重新执行以前输入的命令  
fc [ -r ] [ -e Editor ] [ First [ Last ] ]
生成一个以前输入的命令的列表  
fc -l [ -n ] [ -r ] [ First [ Last ] ]
生成带执行时间的以前输入的命令的列表  
fc -t [ -n ] [ -r ] [ First [ Last ] ]  
重新执行以前输入的命令
fc -s [ Old= New ] [ First ]

使用说明

fc 命令显示了历史命令文件内容或调用一个编辑器去修改并重新执行以前在 shell 中输入的命令。 以下环境变量会影响 fc 命令的执行:  
EXTENDED_HISTORY 用来控制历史文件中命令执行时间的记录。                
                     如果变量设置为 ON,则记录时间,否则不记录时间。  
FCEDIT 当 shell 扩展该环境变量时,该变量确定了 -e editor 变量的缺省值。      
        如果环境变量 FCEDIT 为空值或没有被设置,则缺省使用 ed 编辑器。  
HISTDATEFMT 它用于控制 fc –t 命令显示的时间格式。            
               例如,如果 HISTDATEFMT=%Y,则 fc -t 将显示执行命令的年份。格式与 date 命令所做的相似。  
HISTFILE 确定历史命令文件的路径名。          
         如果环境变量 HISTFILE 没有被设置,则 shell 可能会尝试访问或创建在用户主目录中的          
         .sh_history 文件。 HISTSIZE 确定一个十进制数值,该数值表示了可以访问的以前输入的命令的数量限值。 如果没有设置该变量,则使用缺省值 128。

主要参数

-e Editor 使用指定的编辑器编辑命令。 Editor 参数应是一个命令名称。该命令用 PATH 环境变量指定位置。 当没有指定 -e 标志时,环境变量 FCEDIT 中的值被用作缺省值。 如果环境变量 FCEDIT 是空值或   没有设置,则使用 ed 编辑器。  

-l (L 的小写)列出了历史文件中的命令。不调用编辑器去修改它们。 按照 First 和 Last 参数所指定的顺序写命令,就象 -r 标志所作用的,在每一个命令的前面有一个命令编号。  

-n 当与 -l 标志一起使用时,隐藏命令编号。  

-r 逆转所列出命令的顺序(当使用 -l 标志)或者逆转所编辑的命令顺序(当没有指定 -l 标志时)。  

-s 不调用编辑器重新执行一个命令。如果也没有指定 First参数,则 -s 标志重新执行前一个命令。  

-t 在历史文件中列出命令及其执行时间。工作过程与 -l 标志类似,但是还显示命令的执行时间。 First or Last 选择要列出或编辑的命令。HISTSIZE 环境变量值确定了能够访问到的以前所输入命令的数量。

First 参数和 Last 参数必须具有以下数值中的一个:

[+] Number表示一个特定的命令编号。-l 标志可以显示命令编号。缺省值为一个 +(加符号)字符。

-Number表示一个以前执行的命令,由存储在历史列表中的命令编号指定。例如,-1 指出了前一个刚执行过的命令。

String 指出了最近所输入的命令,该命令以指定的字符串开头。 如果指定了 Old=New 参数但没有指定 -s 标志,则来自 First 参数的字符串中不能包含一个嵌入的 =(等于符号)。 当使用 -s 标志时,省略 First 参数将导致使用前一个命令。

应用实例

要对最近所使用的命令调用环境变量 FCEDIT 所定义的编辑器(缺省的编辑器是 /usr/bin/ed),请输入:
fc 当完成编辑之后,执行该命令。
要列出执行过的前两个命令,请输入:
fc -l -2
要找到以 cc 字符开始的命令,且将 foo 更改为 bar,并显示和执行该命令,请输入:
fc -s foo=bar cc
要列出先前执行的命令及其执行时间,请输入:
fc –t
Tags: , ,
May 17
最近有一服务器被攻击了,攻击我的80端口,还好这个服务器上没有开网页服务,于是做acl禁掉。
创建并进入acl 3000
acl number 3000
创建rule 0 禁止 目的地址 xxx.xxx.xxx.xxx 0(这个0是反掩码) 目的端口是80
rule 0 deny tcp destination xxx.xxx.xxx.xxx 0 destination-port eq www
进入上行端口
interface GigabitEthernet 1/1
下发规则
packet-filter inbound ip-group 3000 rule 0
Apr 10
·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

#-print 将查找到的文件输出到标准输出
#-exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
=============================================================================
-name   filename             #查找名为filename的文件
-perm                        #按执行权限来查找
–user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n               #按文件访问时间来查GIN: 0px”>

-ctime    -n +n              #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                     #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2              找文件,-n指n天以内,+n指n天以前
-ctime    -n +n               #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                     #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                      #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer   f1 !f2               #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]               #查长度为n块[或n字节]的文件
-depth                       #使查找在进入子目录前先行查找完本目录
-fstype                     #查更改时间比f1新但比f2旧的文件
-type    b/d/c/p/l/f         #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]               #查长度为n块[或n字节]的文件
-depth                       #使查找在进入子目录前先行查找完本目录
-fstype                      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                %;      #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount                       #查文件时不跨越文件系统mount点
-follow                      #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio                        #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune                       #忽略某个目录
=============================================================================
$find   ~   -name   “*.txt”   -print    #在$HOME中查.txt文件并显示
$find   .    -name   “*.txt”   -print
$find   .    -name   “[A-Z]*”   -print   #查以大写字母开头的文件
$find   /etc   -name   “host*”   -print #查以host开头的文件
$find   .   -name   “[a-z][a-z][0–9][0–9].txt”    -print   #查以两个小写字母和两个数字开头的txt文件
$find .   -perm   755   -print
$find   .   -perm -007   -exec ls -l {} \;   #查所有用户都可读写执行的文件同-perm 777
$find   . -type d   -print
$find   .   !   -type   d   -print
$find   .   -type l   -print

$find   .   -size   +1000000c   -print        #查长度大于1Mb的文件
$find   .   -size   100c         -print       # 查长度为100c的文件
$find   .   -size   +10   -print              #查长度超过期作废10块的文件(1块=512字节)

$cd /
$find   etc   home   apps    -depth   -print   | cpio   -ivcdC65536   -o   /dev/rmt0
$find   /etc -name “passwd*”   -exec grep   “cnscn”   {}   \;   #看是否存在cnscn用户
$find . -name “yao*”   | xargs file
$find   . -name “yao*”   |   xargs   echo    “” > /tmp/core.log
$find   . -name “yao*”   | xargs   chmod   o-w

=============================================================================

find   -name april*                     在当前目录下查找以april开始的文件
find   -name   april*   fprint file        在当前目录下查找以april开始的文件,并把结果输出到file中
find   -name ap* -o -name may*   查找以ap或may开头的文件
find   /mnt   -name tom.txt   -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find   /mnt   -name t.txt ! -ftype vfat   在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find   /tmp   -name wa* -type l            在/tmp下查找名为wa开头且类型为符号链接的文件
find   /home   -mtime   -2                 在/home下查最近两天内改动过的文件
find /home    -atime -1                  查1天之内被存取过的文件
find /home -mmin    +60                  在/home下查60分钟前改动过的文件
find /home   -amin   +30                  查最近30分钟前被存取过的文件
find /home   -newer   tmp.txt             在/home下查更新时间比tmp.txt近的文件或目录
find /home   -anewer   tmp.txt            在/home下查存取时间比tmp.txt近的文件或目录
find   /home   -used   -2                  列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find   /home   –user cnscn                列出/home目录内属于用户cnscn的文件或目录
find   /home   -uid   +501                  列出/home目录内用户的识别码大于501的文件或目录
find   /home   -group   cnscn              列出/home内组为cnscn的文件或目录
find   /home   -gid 501                   列出/home内组id为501的文件或目录
find   /home   -nouser                    列出/home内不属于本地用户的文件或目录
find   /home   -nogroup                   列出/home内不属于本地组的文件或目录
find   /home    -name tmp.txt    -maxdepth   4   列出/home内的tmp.txt 查时深度最多为3层
find   /home   -name tmp.txt   -mindepth   3   从第2层开始查
find   /home   -empty                     查找大小为0的文件或空目录
find   /home   -size   +512k                查大于512k的文件
find   /home   -size   -512k               查小于512k的文件
find   /home   -links   +2                查硬连接数大于2的文件或目录
find   /home   -perm   0700                查权限为700的文件或目录
find   /tmp   -name tmp.txt   -exec cat {} \;
find   /tmp   -name   tmp.txt   -ok   rm {} \;

find    /   -amin    -10        # 查找在系统中最后10分钟访问的文件
find    /   -atime   -2          # 查找在系统中最后48小时访问的文件
find    /   -empty               # 查找在系统中为空的文件或者文件夹
find    /   -group   cat         # 查找在系统中属于 groupcat的文件
find    /   -mmin   -5          # 查找在系统中最后5分钟里修改过的文件
find    /   -mtime   -1         #查找在系统中最后24小时里修改过的文件
find    /   -nouser              #查找在系统中属于作废用户的文件
find    /   –user    fred       #查找在系统中属于FRED这个用户的文件
=============================================================================
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们:
$ find logs/ -type f -mtime +7 -exec rm -f {} \;
在/ l o g s目录中查找更改时间在7日以内的文件并删除它们:
$ find logs/ -type f -mtime -7 -exec rm -f {} \;
然后加入的计划任务中每日执行便可
Tags: ,
Apr 25
    名称: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: 新的档案拥有者的使用者ID
            group: 新的档案拥有者的使用者群体(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

    名称:cat
            使用权限:所有使用者
            用法:cat -cnum1-num2 filename
            说明:显示每行从开头算起 num1 到 num2 的文字。
            范例:
            shell>> cat example
            test2
            this is test1
            shell>> cat -c0-6 example ## print 开头算起前 6 个字元
            test2
            this i

    名称: find
            用法: find
            使用说明:
            将档案系统内符合e­xpression的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
            find根据下列规则判断path和e­xpression,在命令列上第一个 - ( ) , ! 之前的部份为path,之后的是e­xpression。如果path是空字串则使用目前路径,如果e­xpression是空字串则使用-print为预设e­xpression
            参数:
            e­xpression中可使用的选项有二三十个之多,在此只介绍最常用的部份。
            -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: 显示本月的月历。
            cal 2001: 显示公元2001年年历。
            cal 5 2001: 显示公元2001年5月月历。
            cal -m: 以星期一为每周的第一天方式,显示本月的月历。
            cal -jy: 以一月一日起的天数显示今年的年历。

    名称: 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:mm:ss[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]:minute:second。请注意这个数字并不代表实际的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的结果和所花费的系统资源。

    名称: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 [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

    名称: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]
            说明:用来更改使用者的密码
            参数:
            -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档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如mailinglist就会用到这个功能,在mailinglist中,我们可能会创造一个叫redlinux@link.ece.uci.edu的mailinglist,但实际上并没有一个叫redlinux的使用者。实际aliases档的内容是将送给这个使用者的信都收给mailinglist处理程式负责分送的工作。
            /etc/aliases是一个文字模式的档案,sendmail需要一个二进位格式的/etc/aliases.db。newaliases的功能传是将/etc/aliases转换成一个sendmail所能了解的资料库。
            范例:
            # newaliases
            下面命令会做相同的事,
            # sendmail -bi
            相关命令:
            mail, mailq, newaliases, sendmail

    名称: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。

    名称: 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: 不可中断的静止(进行I/O动作)
            R: 正在执行中
            S: 静止状态
            T: 暂停执行
            Z: 不存在但暂时无法消除
            W: 没有足够的记忆体分页可分配
            <: 高优先序的行程
            N: 低优先序的行程
            L: 有记忆体分页分配并锁在记忆体内(即时系统或捱A I/O)
            START: 行程开始时间
            TIME: 执行的时间
            COMMAND:所执行的指令

    名称:pstree
            使用权限:所有使用者
            使用方式:
            pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
            pstree -V
            说明:将所有行程以树状图显示, 树状图将会以pid(如果有指定)或是以init这个基本行程为根(root),如果有指定使用者id, 则树状图会只显示该使用者所拥有的行程
            参数:
            -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
            -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上*>

    名称: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至16bits 。由于值越大,能使用的共同字串就越多,压缩比例就越大,所以一般使用预设值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会自动放大磁区数。
            -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
Mar 15
Wake on LAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的Magic Packet这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。Magic Packet格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此 许多具有网络唤醒功能的网卡都能与之兼容。
Boeing、IBM、Cisco、United States Army、Canada Customs and Revenue Agency、Intel Corp、Compaq、Lucent、Microsoft Ltd、Dell Computer Corporation、Hewlett-Packard、Siemens、Walt Disney World Co.、Compuware Corp、AMD (Isn't that ironic)、Nortel Networks、Macromedia Inc.、British Telecommunications plc、eBay等等公司均在使用WOL技术。
要实现远程唤醒,还需要硬件的设置:
主板和网卡必须都支持远程唤醒功能。一般目前的主板都支持这个功能(2002年以后的板都有),支持的主板上通常都有一个专门的3芯插座,以便在关机时为网卡供电。但并非所有的网卡都支持该功能(特别是一些价格较便宜的低档网卡),要判断网卡是否支持远程唤醒功能的方法很简单,支持远程唤醒的网卡上都有一个3针的WOL接口和一条3芯的远程唤醒电缆,通过判断网卡是否带有WOL接口即可(有些较新的网卡可能没有WOL接口也能支持远程唤醒。这是因为现在流行的主板支持PCI2.2标准,而PCI 2.2标准不需要通过专门的WOL接口为网卡供电,允许主板直接通过PCI插槽向网卡提供Standby电源)。
字串6


1.硬件连接
网卡安装完毕后将远程唤醒电缆的一端插入到网卡的WOL接口上,另外一端与主板的3针WOL远程唤醒接口相连(该接口旁通常标有WOL_CON的字样,当然如果主板和网卡都支持PCI2.2标准则无须做这一步)。
需要说明的是,某些主板上已经集成了具有网络唤醒功能的网卡,只要开启“Wake on PCI Card”功能就可以了,没有什么三脚插座,更不需要专用的三芯连线。
2.CMOS设置
打开CMOS远程唤醒功能很简单,只要将CMOS设置中的“Power Management Setup”的“Wake Up On LAN”或“Resume by LAN”项设置为“Enable”或“On”即可。
ATX电源
必须要使用ATX电源,而且其+5V Standby电流必须比较大,根据Intel的建议,它需要在600mA以上。该电流的大小可以从电源外部标识中的+5VSB(或+5AUX,5VSB)栏里查到。(绝大部分的网卡在0.7A以下都可唤醒)
如果远程计算机最后一次关机的时候是属于非正常关机(突然断电或者关机时死机等),唤醒就有可能会失败。在Windows 2000/XP系统中如果在关闭计算机时使用休眠 ,也可能会造成唤醒失败。这是因为一些网卡需要复位一个标记,这只有在操作系统正常关闭的时候才会发生。
字串9


软件的实现方面,其实就是通过socket向目标的机器发送Magic Packet(魔术包),魔术包的格式,包含有连续6个字节的“FF”和连续重复16次的MAC地址。你可以在任何协议的数据包(如在TCP/IP、IPX包)中填上 "FFFFFFFFFFFF"+连续重复16次的MAC地址,就可利用该协议作出一个使用该协议的Magic Packet。只要NIC检测到数据包中任何地方有这样的片段,便会将计算机唤醒。
假设被控计算机的Mac地址为01:02:03:04:05:06 (6 bytes),那么那台机器的网卡在数据帧内发现以下的片断便会将计算机唤醒。
    FFFFFFFFFFFF010203040506010203040506010203040506010203040506
    010203040506010203040506010203040506010203040506010203040506
    010203040506010203040506010203040506010203040506010203040506
    010203040506010203040506
正是因为这个Magic Packet可以封装在任何协议的数据包中,可以在各种Router和switch之间传送,而不会影响Magic Packet唤醒的功能。也就是说,不管Magic Packet是来自于LAN还是WAN,只要网卡检测到Magic Packet就能唤醒。最常被使用的是UDP广播包,不需要端口号,只要知道被控计算机的MAC地址即可。
字串4


注:UDP广播分两种,一种是directed broadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。另一种是limited broadcast,广播地址是255.255.255.255
要了解更多请参见“Magic Packet? Technical Documentation”
http://www.amd.com.cn/chcn/ConnectivitySolutions/TechnicalResources/0,,50_2334_2481_2494,00.html
Chapter2:局域网远程唤醒
请你务必弄懂Chapter1中所讲解的东西再开始看Chapter2。
首先声明一点,在你机上安装任何远程控制软件的客户端都不可以实现远程唤醒,PCAnywhere、Remote Administrator之类的远程控制软件在关机的情况下根本不可能工作,手机短信实现远程唤醒也是天方夜谭。远程唤醒只能基于你的计算机的硬件去实现。
现在假设A、B两机位于同一个局域网中, 要用主控计算机A机远程唤醒被控计算机B。
那你只要在B机的CMOS设置(有人喜欢叫BIOS设置)中设置好两个地方:
1.开启“Wake on PCI Card”功能,没有这项的设置的话,那可能就要插远程唤醒电缆了;
字串1


这步的目的是“在关机时为网卡供电”
2.开启“Wake Up On LAN”或“Resume by LAN”功能;
这步的目的是“让主板接受网卡发送的唤醒信号”
设置好之后,就保存退出。
在A机你要下载局域网唤醒的小软件,下面我推荐两款给大家用吧。
PCnet Magic Packet Utility——AMD的产品,英文介面,需要安装才可以使用,功能比较强大
http://dl.pconline.com.cn/html_2/1/59/id=1885&pn=0.html
NetWaker for windows 简体中文版
下面以AMD的Magic Packet为例,在A机下载安装好。该软件默认安装在C:\pcnet\magic_pkt目录下,由于不会在程序项中或桌面上增加任何快捷方式,因此,要想运行该软件,用户必须自己到所安装的目录下执行magpac.exe,自己动手将该程序在桌面上建立一个快捷方式当然更方便了。
运行magpac.exe,在“Magic Packets”菜单中单击“Power On One Host”(启动某一主机)命令,显示“Send a Magic Packet to One Host”(向主机发送唤醒数据包)对话框(如图所示)。在“Destination Ethernet Address”(目标以太网地址)中输入B机的网卡MAC地址,单击“Send”(发送)按钮。B机将自动启动。
当然,Magic Packet还可以远程唤醒局域网内多台计算机,留给你自己去摸索吧。
下面我提供一个图文版Magic Packet的教程链接供大家学习吧:
http://www.codefans.com/ArticleView/Article_1174.html

Chapter3:广域网的远程唤醒
1、广域网中实现远程唤醒的话,其实也不比局域网远程唤醒难多少。被控计算机端只要增加一个能获取公网IP地址、能设置端口映射的设备(如路由器、防火墙)。 字串2
现在主流的宽带上网方式不外乎ADSL跟Cable(即视讯宽频、有线电视网络)两种,都可以使用宽带路由实现共享上网,下面简单讲下这两种上网方式下路由器怎样设置才能获取到公网IP地址。
ADSL分两种,一种是固定IP的ADSL,在路由器中选择固定IP地址上网方式,填上电信分配给你的公网IP地址即可;另外一种是动态IP的ADSL,在路由器中设置PPPoE拨号,填上你的用户名、密码,拨号成功后路由器就会自动获取一个公网IP地址;
Cable的话,只要在路由器设置“自动获取IP”上网方式,路由器就会自动获取一个公网IP地址;
正确设置好路由器之后,在路由器的连接状态那里可以直接查看其公网IP地址。
2、在路由器中设置允许“Subnet Directed Broadcasts(子网定向广播)”,并且设置端口映射,将路由器的某一端口映射到被控计算机的任意端口
3、只要路由器通电,主控计算机就能通过互联网向路由器发送Magic Packet,而路由器与被控计算机之间是通过网线连通的,所以可以很顺利地将Magic Packet发送到被控计算机的网卡。路由器实际上起到中间桥梁的作用。
附上能发送Magic Packet的网页Wake On Lan over the Internet
http://www.depicus.com/wake-on-lan/woli.aspx 字串4
Netmask是一个比较值得注意的地方,填错了的话,目标IP地址就会出错。
下面我通过一个例子简单讲述一下广域网远程唤醒的过程
假设主控计算机为A机,被控计算机为B机
B机的所在局域网环境如下:一条ADSL接在4口路由器R1上,R1的4 个口分别连接着S1,S2,S3,S4四台交换机。B机接在S3交换机的其中一个口。
R1拨号后自动获取到的IP为12.34.56.78,B机在局域网中的IP为192.168.1.167,MAC地址为BB:BB:BB:BB:BB:BB。
在R1设置端口映射条目如下:12.34.56.78:9——>192.168.1.255:168
这里192.168.1.255为192.168.1.167所在网络的定向广播地址。
为什么不直接映射到192.168.1.167呢?因为当B机关机后,192.168.1.167这个IP不再与R1通信,R1中关于192.168.1.167的ARP条目也会很快就消失,所有与192.168.1.167这个IP通信的数据包都会被丢弃。
1.A机向12.34.56.78(255.255.255.251)这个目标IP的9号端口发送一个包含FFFFFFFFFFFF和连续重复16次BBBBBBBBBBBB的Magic Packet的单播包,中间经过了N个路由,该单播包顺利进入R1;
2.当R1检测到该数据包端口号为9,根据端口映射条目将该数据包的目标IP及端口号修改为192.168.1.255:168,此时该包被R1识别成定向广播包,因为R1已设置成允许Subnet Directed Broadcasts,所以该包并没有被丢弃;
字串7


3.R1将这个广播包向4个口广播,S1,S2,S3,S4所连的所有端口都收到这个广播包,即便B机处于关机状态也会收到该广播包;
B机的网卡检测到广播包中含自己MAC地址信息的Magic Packet,就会被唤醒,而其它机收到之后只会将该数据包丢弃。
4.实际应用中不建议主控计算机通过IP地址去跟路由器通讯,因为一旦路由器重新获取IP地址,远程唤醒就会失效。只要路由器支持动态域名解析(DDNS)功能,可将路由设置成IP地址变更时自动向DDNS提供商重新注册IP地址,DDNS提供商将根据你的帐号对你申请的域名进行域名解析。设置成功后就可以通过固定的域名去与路由器通讯,唤醒与该路由器直连的计算机。
欲了解更多关于DDNS(动态域名解析服务)的信息可参见这里:
http://publish.it168.com/2005/0519/20050519002902.shtml?cChanNel=no&cPositi

Chapter4:
网络远程唤醒还可以使用调制解调器,只要主板支持Wake-Up On Internal Modem(WOM),那么电话能通的地方都能利用WOM来实现远程唤醒。普通的内置调制解调器是不能直接通过PCI插槽得到+5VSB待命电流的,我们需要用一条“WOM”连接线,插到内置调制解调器及主板的WOM的插槽内。若使用外置式调制解调器时则不存在这个问题,因为工作电压是由外置式调制解调器单独的电源变压器提供的。 字串7
确保主机和调制解调器的电源打开电话线已插好,在POWER MANAGEMENT SETUP里找modem ring resume或者POWER ON BY RING项,将其设定为ON或者ENABLED。只要Modem处于开启状态,拿另一部电话拨打Modem所连接的电话号码就可以通过WOM实现远程唤醒了。使用WOM进行远程唤醒不用担心电话费的问题,因为Modem只要侦测到电话震铃不需要接听电话就可以启动机器(所以我们不用花一分钱就可以打国际长途去唤醒位于另一个国家中的计算机了)。
然后WOM有个弊端,所有电话打进来都会马上唤醒,而这通电话很可能不是你打进的。计算机开着自然就要耗电的啦,当然你可以设置计算机在空闲一段时间后自动关机,这样可以省下不少电费。但是如果整天有电话打进的话,估计被控计算机也命不久已。
分页: 2/8 第一页 上页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]