分享知识,共同进步

发布新日志

  • touch命令

    2009-05-15 18:00:07

    名字
    touch - 修改文件的时间戳记.  
    总览
    touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)...
    被废弃的版本:
    touch [-acm][ugly_time] file(文件)...

    GNU版本:
    touch [-acfm] [-r file(参照文件)] [-t decimtime(时间值)] [-d time(时间值)] [--time={atime,access,use,mtime,modify}] [--date=time] [--reference=file] [--no-create] [--help] [--version] [--] file(文件)...  

    用法描述
    touch 修改每个指定文件 file 的存取(access)和/或修改(modification)时间戳记.除非使用-r或-t选项,这些时间戳记都将修改为当前的时间.使用-r选项时,这些戳记将按照文件 ref_file 的时间戳记来修改(即变得和ref_file时间戳记值相同).使用-t选项,则这些戳记将按照给定的时间值 time 进行修改.同时使用或同时不使用选项-a和-m,存取和修改两个戳记都将被更改.若只使用选项-a,则只修改存取戳记.同样,只使用选项-m,则只修改修改戳记.若要修改戳记的文件尚不存在,除非使用-c选项,touch 将创建它(作为空文件,并赋予0666的模式且受umask值的限制).  
    POSIX标准定义的选项
    -a
    修改文件 file 的存取时间.
    -c
    不创建文件 file.
    -m
    修改文件 file file

    -r ref_file
    将参照文件 ref_file 相应的时间戳记的数值作为指定文件 file 时间戳记的新值.
    -t time
    使用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.此处的 time 规定为如下形式的十进制数∶

    [[CC]YY]MMDDhhmm[.SS]


    这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch 将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时间.由于系统的限制,早于1970年1月1日的时间是错误的.
     
    POSIX标准的细节
    已被废弃的touch版本使用时会出现模棱两可的情况: ugly_time 到底是时间值还是文件名?由于此种版本尚未提供-r或-t选项,所以使用时至少要有两个命令行参数,作为时间值, ugly_time 必须为第一个参数.这里的 ugly_time 是一个形为MMDDhhmm[yy]的八位或十位整数.其中,yy是介于69--99之间表示1969--1999之间某一年的两位数,如果不给,表示当前这一年.  
    GNU版本的细节
    如果第一个指定文件 file 的名子从形式上说是选项 -t 的有效参数,并且没有给出选项 -d, -r 或 -t -t
    数,也没有给`--'选项,那么这个文件名将被解释成时间值.

    一般情况下,利用 touch 修改文件的时间戳记时要求用户时该文件的所有者.除非只是把文件的存取和修改两种时间戳记修改为当前的时刻,这种情况只要求用户拥有对该文件`写'的权利就行了.  

    GNU版本选项用法简介
    -a, --time=atime, --time=access, --time=use
    只修改存取时间.
    -c, --no-create
    如果要修改的文件不存在,此选项使touch不去创建它.
    -d, --date=time
    使用时间值 time 代替指定文件的戳记值.可以包含月份名,时区名以及`am'和 `pm'等等.
    -f
    此选项用于兼容BSD版本的 touch(1).
    -m, --time=mtime, --time=modify
    只修改修改时间.
    -r file, --reference=file
    使用参照文件 file 的时间戳记值修改指定文件的时间戳记.
    -t decimtime
    这里时间值 decimtime 的格式为MMDDhhmm[[CC]YY][.ss] 从左至右分别是月份,日期,小时,分钟,可选的世纪和年,以及可选的秒. touch 将用这组数值修改指定文件的时间戳记.请注意,这个格式与POSIX标准所规定的格式并不一样.
     
    GNU版本通用选项
    --help
    使程序在标准输出上显示该程序的用法信息.
    --version
    使程序在标准输出上打印其版本信息.
     
    GNU版本通用选项
    --help
    使程序在标准输出上显示该程序的用法信息.
    --version
    使程序在标准输出上打印其版本信息.
    --
    用于使程序终止对选项的解析.
     
    运行环境
    环境变量TZ一般用来表明所给时刻是哪个时区的.而环境变量LANG, LC_ALL, LC_CTYPE 和 LC_MESSAGES还是一般情况下的意义.  
    遵循
    GNU版touch的-t选项的参数所用格式并不符合POSIX标准1003.2的描述.  
    用法实例
    如果文件foo并不存在,那么命令`touch foo'将创建它,并把最后的修改时间改到现在的时刻.这一特点经常用来引导 make 的执行.  
    注意
    这篇说明描述了fileutils-4.0程序包中的 touch. 其它版本的touch可能与此有稍许不同.对本文的修正和增补请致信aeb@cwi.nl.程序缺陷请向fileutils-bugs@gnu.ai.mit.edu报告?

  • unix常用命令

    2009-05-15 18:00:07

    unix常用命令

    a. 关於档案/目录处理的指令:

    1. ls
    这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是

    某一个档案的内容显示出来。


    如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所

    有档案。


    也可以在 ls 後面加上所要察看的目录名称或档案的名称,如


    % ls /home2/X11R5

    % ls first

    ls
    有一些特别的参数,可以给予使用者更多有关的资讯,如下
    :

    -a :
    UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用
    ls
    将不会显示出这个档案的名字,我们称此类档案为隐藏档。如
    tcsh
    的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a


    -l :
    这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,

    如档案存取权,档案拥有者( owner ),档案大小,档案最後更新

    日期,甚而 symbolic link 的档案是 link 那一个档等等。如下


    % ls -l

    drwx--x--x 2 jjtseng 512 Aug 8 05:08 18
    drwx--x--x 2 jjtseng 512 Aug 8 22:00 19
    -rw------- 1 jjtseng 566 Aug 8 05:28 makefile

    2. cp
    cp
    这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另

    一个档案或者是将其复制到另一个目录去。


    cp
    的用法如下
    :

    cp f1 f2 :
    将档名为 f1 的档案复制一份为档名为 f2 的档案。

    cp f1 f2 f3 ... dir :
    将档案 f1 f2 f3 ... 都以相同的档名复制一

    份放到目录 dir 里面。

    cp -r dir1 dir2 :
    dir1 的全部内容全部复制到 dir2 里面。


    cp
    也有一些参数,如下
    :

    -i :
    此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来
    f2
    的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者

    的回答是y(yes)才执行复制的动作。


    -r :
    此参数是用来做递回复制用,可将一整颗子树都复制到另一个

    目录中。


    3. mv
    mv
    的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有

    三种格式
    :

    mv f1 f2 :
    将档名为 f1 的档案变更成档名为 f2 的档案。

    mv dir1 dir2 :
    将档名为 dir1 的目录变更成档名为 dir2 的目录。

    mv f1 f2 f3 ... dir :
    将档案 f1 f2 f3 ... 都移至目录 dir 里面。


    mv
    的参数有两个,-f -i , 其中 -i 的意义与 cp 中的相同,均是
    interactive
    询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要

    搬过去,所有其他的参数遇到 -f 均会失效。


    4. rm
    rm
    的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一

    个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回

    来的。所以在做 rm 动作的时候使用者应该要特别小心。


    rm
    的格式如下
    :

    rm f1 f2 f3 .....

    rm 的参数比较常用的有几个: -f , -i ,
    -r

    -f :
    将会使得系统在删除时,不提出任何警告讯息。

    -i :
    在除去档案之前均会询问是否真要除去。

    -r :
    递回式的删除。


    小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪
    "......

    5. mkdir
    mkdir
    是一个让使用者建立一个目录的指令。你可以在一个目录底下使用

    midir
    建立一个子目录,使用的方法如下
    :

    mkdir dirname1 [ dirname2 ... ]

    如此你就可以建立一个或多个目录。


    6. chdir ( cd )
    这是让使用者用来转移工作目录用的。

    chdir
    的用法如下
    :

    chdir dirname

    如此你就可以将目前的目录转移到 dirname 这一个目录去。

    或使用 "chdir .." 来转移到上一层目录。


    7. rmdir
    相对於 mkdir rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面

    没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下
    :

    rmdir dirname1 [ dirname2 .... ]

    如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用

    rm
    指令的 -r 选项。


    8. pwd
    pwd
    会将目前目录的路径( path )显示出来,例如
    :

    9. cat/more/less
    以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是

    concatenate
    ,在字典上的意思是"连结,串成锁状"( 语出资工电子

    词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪

    的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行

    号。 cat 的用法如下
    :

    cat [-n] :
    自标准输入读进内容,你可以用 pipe 将别的程式的输出转向

    cat .
    cat [-n] filename :
    filename 的内容读进来,显示在标准输出上。


    问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十

    四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者

    很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。


    more ,
    跟据蔡文能老师的说法是"再多一点就好"more 可以将所观察的档案

    跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果

    使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻

    的单字即可进行搜寻。more 也可以找得到。more 的使用法如下
    :

    more filename

    如果你在使用中觉得已经看到了所要看的部份,可以按´离开 more 的使用。

    在使用中按´亦可以使用编辑器来编辑所观看的档案。


    less
    的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺

    点而设计。 less 的用法如下
    :

    less filename

    其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所

    要找的单字。


    10. chmod
    chmod
    为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模

    ( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式
    ,
    分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以
    ls -lg
    来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可

    执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者

    有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下
    :

    chmod [ -fR ] mode filename ...

    其参数的意义如下
    :

    -f Force. chmod
    不会理会失败的动作。

    -R Recurive.
    会将所有子树下的所有子目录及档案改为你所要改成的模式。


    mode
    可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情

    可参阅 chmod(1) manual page 中有关 Absolute Modes 的说明。


    或是用一个字串来表示,请参考 chmod(1) 的说明。

    b.
    关於 Process 处理的指令
    :

    1. ps
    ps
    是用来显示目前你的 process 或系统 processes 的状况。

    以下列出比较常用的参数
    :

    其选项说明如下
    :
    -a
    列出包括其他 users process 状况。

    -u
    显示 user - oriented process 状况 。

    -x
    显示包括没有 terminal 控制的 process 状况。

    -w
    使用较宽的显示模式来显示 process 状况 。


    我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。


    2. kill
    kill
    指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是

    用来杀掉 process SIGKILL SIGHUP ,因此称为 kill kill 的用法

    :

    kill [ -SIGNAL ] pid ...
    kill -l

    SIGNAL
    为一个 singal 的数字,从 0 31 ,其中 9 SIGKILL ,也就是一

    般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考
    sigvec(2)
    中对 signal 的说明。


    你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形

    请参阅 man kill


    c.
    关於字串处理的指令
    :

    1. echo
    echo
    是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的动作。



    2. grep/fgrep
    grep
    为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是

    自标准输入过滤出具有某个字串的行。


    fgrep
    可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有

    属於这一群字串的行过滤出来。


    grep
    fgrep 的用法如下
    :

    grep [-nv] match_pattern file1 file2 ....
    fgrep [-nv] -f pattern_file file1 file2 ....

    -n
    把所找到的行在行前加上行号列出

    -v
    把不包含 match_pattern 的行列出

    match_pattern
    所要搜寻的字串

    -f
    pattern_file 存放所要搜寻的字串


    d.
    网路上查询状况的指令
    :

    1. man
    man
    是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能,

    man
    就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表

    格等的使用所用的。man 的用法如下
    :

    man [-M path] [[section] title ] .....
    man [-M path] -k keyword ...

    -M path man
    所需要的 manual database 的路径。

    我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。

    title
    这是所要查询的目的物。

    section
    为一个数字表示 manual 的分类,通常 1 代表可执行指令,

    2
    代表系统呼叫( system call ) 3 代表标准函数,等等。


    像下面 man 查询的片段
    :

    SEE ALSO
    apropos(1), cat(1V), col(1V), eqn(1), lpr(1), more(1),
    nroff(1), refer(1), tbl(1), troff(1), vgrind(1), vtroff(1),
    whatis(1), eqnchar(7), man(7), catman(8)

    我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar

    便能取得我们所要的辅助讯息。

    -k keyword
    用来将含有这项 keyword title 列出来。


    man
    UNIX 上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一

    个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用

    man
    来得到。


    2. who
    who
    指令是用来查询目前有那些人在线上。


    3. w
    w
    指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。


    4. ku
    ku
    可以用来搜寻整个网路上的 user ,不像 w who 只是针对 local host

    查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档

    information-file 以条列的方式存放你的朋友的资料,再建立一个档案

    hosts-file
    来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。


    e.
    网路指令
    :

    UNIX
    提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如

    你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News

    甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指

    令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能

    轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。


    这些网路的指令如下所述
    :

    1. rlogin
    rsh
    rlogin
    的意义是 remote login , 也就是经由网路到另外一部机器 login

    rlogin
    的格式是
    :

    rlogin host [ -l username ]

    选项 -l username 是当你在远方的机器上的 username local host 不同的

    时後,必须输入的选项,否则 rlogin 将会假设你在那边的 username
    local
    host
    相同,然後在第一次 login 时必然会发生错误。


    rsh
    是在远方的机器上执行某些指令,而把结果传回 local host rsh 的格式

    如下
    :

    rsh host [ -l username ] [ command ]

    如同 rlogin 的参数 -l username , rsh -l username 也是指定
    remote host
    username 。而 command 则是要在 remote host 上执行的指令。如果没有

    指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin


    不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password ,

    是如果你没有设定 trust table , remote host 将不会接受你的 request


    rsh
    须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts

    这个档案每一行分为两个部份,第一个是允许 login hostname , 第二个部份

    则是允许 login username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的

    username
    ysjuang , 而你的 home 下面的 .rhost 有以下的一行
    :

    ccsun6.cc.nctu.edu.tw u8217529

    则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来

    执行 rsh 程式
    :

    % rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox

    ysjuang ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在
    local host
    ccsun6.cc.nctu.edu.tw
    上。


    而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的
    user u8217529
    将可以不用输入 password 而直接经由 rsh rlogin login

    ccsun7.csie.nctu.edu.tw
    来。


    注意
    :

    .rhost
    是一个设定可以信任的人 login 的表格,因此如果设定不当将会让

    不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会

    发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何

    username


    如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname

    但是这样将会使得即使有一台 PC 上跑 UNIX user 有与你相同的

    username ,
    也可以得到你的 trust 而侵入你的系统。这样容易造成系统

    安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果

    发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的

    第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有
    "
    user
    可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。

    所以请自行小心。


    2. telnet
    telnet
    是一个提供 user 经由网路连到 remote host

    telnet
    的 格式如下
    :

    telnet [ hostname | ip-address ] [ port ]

    hostname
    为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw name address

    ip-address
    则为一个由四个小於 255 的数字组成的 ip address ,如
    ccsun1
    ip-address 140.113.17.173 ccsun1.cc.nctu.edu.tw
    ip-address
    140.113.4.11 。你可以利用 telnet ccsun1 telnet 140.113.17.173

    连到 ccsun1


    port
    为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD server 便

    提供一些 port user 由这些 port 进入 MUD 程式。详情请参阅
    telnet(1)
    的说明。



    3. ftp
    ftp
    的意义是 File Transfer Program ,是一个很常应用在网路档案传输的

    程式。ftp 的格式如下
    :

    ftp [ hostname | ip-address ]

    其中 hostname | ip-address 的意义跟 telnet 中的相同。


    在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你
    username
    与密码,如果输入对了就可以开始进行档案传输。


    ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常

    用的
    cd , lcd , mkdir , put , mput , get , mget , binary , ascii ,
    prompt , help
    quit 的使用方式。


    ascii
    将传输模式设为 ascii 模式。通常用於传送文字档。


    binary
    将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像

    档等。

    cd remote-directory
    remote host 上的工作目录改变。


    lcd [ directory ]
    更改 local host 的工作目录。


    ls [ remote-directory ] [ local-file ]
    列出 remote host 上的档案。


    get remote-file [ local-file ]
    取得远方的档案。


    mget remote-files
    可使用通用字元一次取得多个档案。


    put local-file [ remote-file]
    local host 的档案送到 remote host


    mput local-files
    可使用通用字元一次将多个档案放到 remote host 上。


    help [ command ]
    线上辅助指令。


    mkdir directory-name
    remote host 造一个目录。


    prompt
    更改交谈模式,若为 on 则在 mput mget 时每作一个档案之传

    输时均会询问。


    quit/bye
    离开
    ftp .

    利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的

    机器更存放大量的资料以供各地的使用者抓取,本校较著名的
    ftp server
    NCTUCCCA 与系上的 ftp.csie.nctu.edu.tw 。这些 ftp server 均有提

    供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 username

    得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用

    anonymous
    的使用者输入其 email address,以往有许多台湾的使用者在使用

    国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是

    随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用

    者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。


    f.
    关於通讯用的指令
    :

    1. write
    这个指令是提供使用者传送讯息给另一个使用者,使用方式
    :
    write username [tty]

    2. talk/ytalk/cytalk/ctalk
    UNIX
    专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,

    同时也可和不同机器的使用者交谈。使用方式
    :

    talk username[@host] [tty]

    3. mesg
    选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法

    传送给你,同时他也无法干扰你的工作。使用方法
    :

    mesg [-n|-y]

    4. mail/elm
    在网路上的 email 程式,可经由此程式将信件 mail 给他人。使用方式
    :

    mail [username]
    mail -f mailboxfile

    如有信件,则直接键入 mail 可以读取你的
    mail .

    elm
    提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入
    elm
    使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。


    使用方式
    :

    elm [usernmae]
    elm -f mailboxfile

    g.
    编译器
    ( Compiler ):

    Compiler
    的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常

    用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C
    Pascal
    FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以

    用这个方法来制造你自己的特殊指令。


    1. cc/gcc (C Compiler)
    /usr/bin/cc
    /usr/local/bin/gcc

    语法
    : cc [ -o execfile ] source
    gcc [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。

    请参阅 cc(1) 的说明。


    2. pc (Pascal Compiler)
    /usr/local/bin/pc

    语法
    : pc [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal

    式档。 请参阅 /net/home5/lang/man pc(1) 的说明。


    3. f77 (Fortran Compiler)
    /net/home5/lang/f77

    语法
    : f77 [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN

    式档。


    h.
    有关列印的指令
    :

    以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 )

    lw , sp , ps , compaq (
    雷射印表机 ),供使用者使用。


    1. lpr
    lpr
    为用来将一个档案印至列表机的指令。


    用法
    :
    lpr -P[ printer ] file1 file2 file3 ....


    lpr -P[ printer ] < file1

    例子
    :
    lpr -Plp1 hello.c hello.lst hello.map
    lpr -Plp1 < hello.c

    前者以参数输入所要印出的档案内容,後者列印标准输入档案
    ( standard input )
    的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。


    2. lpq
    lpq
    是用来观察 printer queue 上的 Jobs


    用法
    :
    lpq -P[ printer ]


    3. lprm
    lprm
    是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档

    资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源

    的浪费。


    用法
    :
    lprm -P[ printer ] [ Jobs id | username ]

    lprm
    用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则

    它将此 Job printer queue 清除,如果你用 username作为参数,则它将此
    queue
    中所有 Owner 为此 username Jobs 清除。

    i.
    更改个人使用资料
    :
    1. passwd
    passwd
    是用来更改你的使用密码,用法为
    :
    passwd [ username ]
    在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,确定

    无误後才将你的密码改掉。

    2. chsh
    chsh
    是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell

     

    GNU
       GNU
    GNU's Not Unix的缩写。
       
    它的目标是在UNIX系统基础上,建立一个可自由发布和可移植的完善的Unix类操作系统。因开始实施GNU项目时,当时还没有多少高质量的自由软件可供项目使用。所以,为GNU项目做出贡献的人们先从系统的应用软件和工具入手。它的系统核心是HURD,但是由于LINUX的提前出现,让许多人认为,HURD没有必要再开发下去,用LINUXGNU的核心就很理想了。

    FSF
       FSF
    Free Software Foundation的缩写,即自由软件基金会
       
    十几年前,世界级的顶尖程序员Richard Stallman提出了一个伟大的信念:计算机系统应该对用户开放,软件应该自由使用。在他的倡导下,掀起了开发自由软件的运动热潮。1984年,Richard Stallman的努力得到了麻省理工学院的正式支持。后来他就成立了自由软件基金会这个倡导自由软件的组织。
       
    该组织的主要项目是GNU,一个自由发布和可移植的类UNIX系统。

    CPL
       GPL
    General Public License的缩写,即通用公共许可证
       
    这是为了能够规范自由软件,由自由软件基金会(FSF)提出,并制定成文的一种不同于传统的软件许可证。它的核心思想就是保证任何人可以共享和修改自由软件,有权取得、修得、修改和重新发布自由软件的源代码。这使得自由软件总的费用相当低廉,而且在使用Internet的情况下是免费的。
       
    该条款还规定自由软件的衍生作品必须以GPL作为它重新发布的许可证。这一规定保证了自由软件及其衍生作品继续保持自由状态。也就是说防止了不法分子将自由软件更改后注册自己的版权。
       
    而且通用公共许可证还容许销售自由软件。也就是说,自由软件本身是免费的,但销售公司可以从销售中收取一定的服务费用。这为公司介入自由软件事业敞开了大门。同时公司的介入弥补了自由软件的不足,对推动自由软件应用起了很大的作用。就象Red Hat公司在发布LINUX的过程中不断壮大,同时也大大促进了LINUX的发展。
       
    正是这个条款的合理制订,使得自由软件事业得以全面发展。可以说,自由软件之所以有今天的成就,CPL功不可没。

    A

    帐户名称(Account Name 等同于登录标识、用户标识或用户名。是指派给 UNIX/Linux 系统上用户的名称。可以在系统上对多个用户设置唯一的帐户名称,每个用户具有不同的访问(权限)级别。在安装完 Linux 之后,帐户名称由超级用户(Superuser)或 root 操作员指派。

    AfterStep
    用户界面(窗口管理器)之一,AfterStep 使得 Linux 的外观很象 NeXTSTEP,而且还有些增强功能。要获取更多关于 AfterStep 的信息,请访问 www.afterstep.org。(另请参阅“Enlightenment”、“GNOME”、“KDE”和“X Window 系统”。)

    Awk
    AhoWeinberger Kernighan 一种编程语言,因其模式匹配语法而特别有用,通常用于数据检索和数据转换。一个 GNU 版本称为 Gawk

    APM
    (高级电源管理,Advanced Power Management 一种工业标准,它允许系统处理器和各个组件进入省电模式,包括挂起、睡眠和关机。APM 软件对于移动设备尤为重要,因为它节省了电池电量。

    附加符号(Append Symbol 两个键盘字符 > 查看(270) 评论(0) 收藏 分享 管理

  • unix常用命令

    2009-05-15 18:00:07

    a. 关於档案/目录处理的指令:

    1. ls
    这是最基本的档案指令。 ls 的意义为 "list",也就是将某一个目录或是

    某一个档案的内容显示出来。


    如果你在下 ls 指令後头没有跟著任何的档名,它将会显示出目前目录中所

    有档案。


    也可以在 ls 後面加上所要察看的目录名称或档案的名称,如


    % ls /home2/X11R5

    % ls first

    ls
    有一些特别的参数,可以给予使用者更多有关的资讯,如下
    :

    -a :
    UNIX 中若一个目录或档案名字的第一个字元为 "." , 则使用
    ls
    将不会显示出这个档案的名字,我们称此类档案为隐藏档。如
    tcsh
    的初设档 .tcshrc;如果我们要察看这类档案,则必须加上参数 -a


    -l :
    这个参数代表使用 ls 的长( long )格式,可以显示更多的资讯,

    如档案存取权,档案拥有者( owner ),档案大小,档案最後更新

    日期,甚而 symbolic link 的档案是 link 那一个档等等。如下


    % ls -l

    drwx--x--x 2 jjtseng 512 Aug 8 05:08 18
    drwx--x--x 2 jjtseng 512 Aug 8 22:00 19
    -rw------- 1 jjtseng 566 Aug 8 05:28 makefile

    2. cp
    cp
    这个指令的意义是复制("COPY") , 也就是将一个或多个档案复制成另

    一个档案或者是将其复制到另一个目录去。


    cp
    的用法如下
    :

    cp f1 f2 :
    将档名为 f1 的档案复制一份为档名为 f2 的档案。

    cp f1 f2 f3 ... dir :
    将档案 f1 f2 f3 ... 都以相同的档名复制一

    份放到目录 dir 里面。

    cp -r dir1 dir2 :
    dir1 的全部内容全部复制到 dir2 里面。


    cp
    也有一些参数,如下
    :

    -i :
    此参数是当已有档名为 f2 的档案时,若迳自使用 cp 将会将原来
    f2
    的内容掩盖过去,因此在要盖过之前必须先询问使用者一下。如使用者

    的回答是y(yes)才执行复制的动作。


    -r :
    此参数是用来做递回复制用,可将一整颗子树都复制到另一个

    目录中。


    3. mv
    mv
    的意义为 move , 主要是将一档案改名或换至另一个目录。如同 cp ,它也有

    三种格式
    :

    mv f1 f2 :
    将档名为 f1 的档案变更成档名为 f2 的档案。

    mv dir1 dir2 :
    将档名为 dir1 的目录变更成档名为 dir2 的目录。

    mv f1 f2 f3 ... dir :
    将档案 f1 f2 f3 ... 都移至目录 dir 里面。


    mv
    的参数有两个,-f -i , 其中 -i 的意义与 cp 中的相同,均是
    interactive
    询问之意。而 -f 为强迫( force ) , 就是不管有没有同名的档案,反正我就是要

    搬过去,所有其他的参数遇到 -f 均会失效。


    4. rm
    rm
    的意义是 remove ,也就是用来杀掉一个档案的指令。在 UNIX 中一

    个被杀掉的档案除非是系统恰好有做备份,否则是无法像 DOS 里面一样还能够救回

    来的。所以在做 rm 动作的时候使用者应该要特别小心。


    rm
    的格式如下
    :

    rm f1 f2 f3 .....

    rm 的参数比较常用的有几个: -f , -i ,
    -r

    -f :
    将会使得系统在删除时,不提出任何警告讯息。

    -i :
    在除去档案之前均会询问是否真要除去。

    -r :
    递回式的删除。


    小心不要随便使用 rm -rf , 否则有一天你会"欲哭无泪
    "......

    5. mkdir
    mkdir
    是一个让使用者建立一个目录的指令。你可以在一个目录底下使用

    midir
    建立一个子目录,使用的方法如下
    :

    mkdir dirname1 [ dirname2 ... ]

    如此你就可以建立一个或多个目录。


    6. chdir ( cd )
    这是让使用者用来转移工作目录用的。

    chdir
    的用法如下
    :

    chdir dirname

    如此你就可以将目前的目录转移到 dirname 这一个目录去。

    或使用 "chdir .." 来转移到上一层目录。


    7. rmdir
    相对於 mkdir rmdir 是用来将一个"空的"目录杀掉的。如果一个目录下面

    没有任何档案,你就可以用 rmdir 指令将其除去。rmdir 的使用法如下
    :

    rmdir dirname1 [ dirname2 .... ]

    如果一个目录底下有其他的档案, rmdir 将无法将这个目录杀掉,除非使用

    rm
    指令的 -r 选项。


    8. pwd
    pwd
    会将目前目录的路径( path )显示出来,例如
    :

    9. cat/more/less
    以上三个指令均为察看档案内容的指令。cat 的意义是猫....不不不,是

    concatenate
    ,在字典上的意思是"连结,串成锁状"( 语出资工电子

    词典 cdict ),其实就是把档案的内容显示出来的意思。 cat 有许多奇怪

    的参数,较常为人所使用的是 -n 参数,也就是把显示出来的内容加上行

    号。 cat 的用法如下
    :

    cat [-n] :
    自标准输入读进内容,你可以用 pipe 将别的程式的输出转向

    cat .
    cat [-n] filename :
    filename 的内容读进来,显示在标准输出上。


    问题在於 cat 它是不会停下来的,因此并不好用( 试想如果一个萤幕二十

    四行,而一个档案四百行,cat 一出来将会劈哩啪啦不断的卷上去,使用者

    很难据此得到他们所需的资讯。) 所以才有人又写了 more 出来。


    more ,
    跟据蔡文能老师的说法是"再多一点就好"more 可以将所观察的档案

    跟据终端机的形态一页页的显示出来,再根据使用者的要求换页或卷行。如果

    使用者要在某一个档案中搜寻一个特定的字串,则按 / 然後跟著打所要搜寻

    的单字即可进行搜寻。more 也可以找得到。more 的使用法如下
    :

    more filename

    如果你在使用中觉得已经看到了所要看的部份,可以按´离开 more 的使用。

    在使用中按´亦可以使用编辑器来编辑所观看的档案。


    less
    的用法与 more 极类似,原先它就是为了弥补 more 只能往前方卷页的缺

    点而设计。 less 的用法如下
    :

    less filename

    其与 more 不同的是它可以按 y 来往上卷一行,并且可以用"?"来往回搜寻你所

    要找的单字。


    10. chmod
    chmod
    为变更档案模式用( change mode ) . 这个指令是用来更改档案的存取模

    ( access mode )。在 UNIX 一个档案上有可读(r)可写(w)可执行(x)三种模式
    ,
    分别针对该档案的拥有者( onwer )、同群者( group member )( 你可以
    ls -lg
    来观看某一档案的所属的 group ),以及其他人( other )。一个档案如果改成可

    执行模式则系统就将其视为一个可执行档,而一个目录的可执行模式代表使用者

    有进入该目录之权利。chmod 就是用来变更一些档案的模式,其使用方式如下
    :

    chmod [ -fR ] mode filename ...

    其参数的意义如下
    :

    -f Force. chmod
    不会理会失败的动作。

    -R Recurive.
    会将所有子树下的所有子目录及档案改为你所要改成的模式。


    mode
    可以为一个三位或四位的八进位数字,来表示对某些对象的存取权。详情

    可参阅 chmod(1) manual page 中有关 Absolute Modes 的说明。


    或是用一个字串来表示,请参考 chmod(1) 的说明。

    b.
    关於 Process 处理的指令
    :

    1. ps
    ps
    是用来显示目前你的 process 或系统 processes 的状况。

    以下列出比较常用的参数
    :

    其选项说明如下
    :
    -a
    列出包括其他 users process 状况。

    -u
    显示 user - oriented process 状况 。

    -x
    显示包括没有 terminal 控制的 process 状况。

    -w
    使用较宽的显示模式来显示 process 状况 。


    我们可以经由 ps 取得目前 processes 的状况,如 pid , running state 等。


    2. kill
    kill
    指令的用途是送一个 signal 给某一个 process 。因为大部份送的都是

    用来杀掉 process SIGKILL SIGHUP ,因此称为 kill kill 的用法

    :

    kill [ -SIGNAL ] pid ...
    kill -l

    SIGNAL
    为一个 singal 的数字,从 0 31 ,其中 9 SIGKILL ,也就是一

    般用来杀掉一些无法正常 terminate 的讯号。其馀讯号的用途可参考
    sigvec(2)
    中对 signal 的说明。


    你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形

    请参阅 man kill


    c.
    关於字串处理的指令
    :

    1. echo
    echo
    是用来显示一字串在终端机上。□ echo -n 则是当显示完之後不会有跳行的动作。



    2. grep/fgrep
    grep
    为一过滤器,它可自一个或多个档案中过滤出具有某个字串的行,或是

    自标准输入过滤出具有某个字串的行。


    fgrep
    可将欲过滤的一群字串放在某一个档案中,然後使用 fgrep 将包含有

    属於这一群字串的行过滤出来。


    grep
    fgrep 的用法如下
    :

    grep [-nv] match_pattern file1 file2 ....
    fgrep [-nv] -f pattern_file file1 file2 ....

    -n
    把所找到的行在行前加上行号列出

    -v
    把不包含 match_pattern 的行列出

    match_pattern
    所要搜寻的字串

    -f
    pattern_file 存放所要搜寻的字串


    d.
    网路上查询状况的指令
    :

    1. man
    man
    是手册 ( manual ) 的意思。 UNIX 提供线上辅助( on-line help )的功能,

    man
    就是用来让使用者在使用时查询指令、系统呼叫、标准程式库函式、各种表

    格等的使用所用的。man 的用法如下
    :

    man [-M path] [[section] title ] .....
    man [-M path] -k keyword ...

    -M path man
    所需要的 manual database 的路径。

    我们也可以用设定环境变数 MANPATH 的方式来取代 -M 选项。

    title
    这是所要查询的目的物。

    section
    为一个数字表示 manual 的分类,通常 1 代表可执行指令,

    2
    代表系统呼叫( system call ) 3 代表标准函数,等等。


    像下面 man 查询的片段
    :

    SEE ALSO
    apropos(1), cat(1V), col(1V), eqn(1), lpr(1), more(1),
    nroff(1), refer(1), tbl(1), troff(1), vgrind(1), vtroff(1),
    whatis(1), eqnchar(7), man(7), catman(8)

    我们如要参考 eqnchar(7) 的资料,则我们就输入 man 7 eqnchar

    便能取得我们所要的辅助讯息。

    -k keyword
    用来将含有这项 keyword title 列出来。


    man
    UNIX 上是一项非常重要的指令,我们在本讲义中所述之用法均仅只是一

    个大家比较常用的用法以及简单的说明,真正详细的用法与说明还是要请你使用

    man
    来得到。


    2. who
    who
    指令是用来查询目前有那些人在线上。


    3. w
    w
    指令是用来查询目前有那些人在线上,同时显示出那些人目前的工作。


    4. ku
    ku
    可以用来搜寻整个网路上的 user ,不像 w who 只是针对 local host

    查询. 而且 ku 提供让使用者建立搜寻特定使用者名单的功能。你可以建立一个档

    information-file 以条列的方式存放你的朋友的资料,再建立一个档案

    hosts-file
    来指定搜寻的机器名称。 ku 的指令格式可由 ku -h 得到。


    e.
    网路指令
    :

    UNIX
    提供网路的连接,使得你可以在各个不同的机器上做一些特殊的事情,如

    你可以在系上的 iris 图形工作站上做图形的处理,在系上的 Sun 上读 News

    甚至到学校的计中去找别系的同学 talk 。这些工作可以利用 UNIX 的网路指

    令,在你的位子上连到各个不同的机器上工作。如此一来,即使你在寝室,也能

    轻易的连至系上或计中来工作,不用像以前的人必须泡在冷冰冰的机房面。


    这些网路的指令如下所述
    :

    1. rlogin
    rsh
    rlogin
    的意义是 remote login , 也就是经由网路到另外一部机器 login

    rlogin
    的格式是
    :

    rlogin host [ -l username ]

    选项 -l username 是当你在远方的机器上的 username local host 不同的

    时後,必须输入的选项,否则 rlogin 将会假设你在那边的 username
    local
    host
    相同,然後在第一次 login 时必然会发生错误。


    rsh
    是在远方的机器上执行某些指令,而把结果传回 local host rsh 的格式

    如下
    :

    rsh host [ -l username ] [ command ]

    如同 rlogin 的参数 -l username , rsh -l username 也是指定
    remote host
    username 。而 command 则是要在 remote host 上执行的指令。如果没有

    指定 command ,则 rsh 会去执行 rlogin ,如同直接执行 rlogin


    不过 rsh 在执行的时候并不会像一般的 login 程序一样还会问你 password ,

    是如果你没有设定 trust table , remote host 将不会接受你的 request


    rsh
    须要在每个可能会做为 remote host 的机器上设定一个档案,称为 .rhosts

    这个档案每一行分为两个部份,第一个是允许 login hostname , 第二个部份

    则是允许 login username 。例如,在 ccsun7.csie.nctu.edu.tw 上头你的

    username
    ysjuang , 而你的 home 下面的 .rhost 有以下的一行
    :

    ccsun6.cc.nctu.edu.tw u8217529

    则在 ccsun6.cc.nctu.edu.tw 机器上的 user u8217529 就可以用以下的方法来

    执行 rsh 程式
    :

    % rsh ccsun7.csie.nctu.edu.tw -l ysjuang cat mbox

    ysjuang ccsun7.csie.nctu.edu.tw 上的 mbox 档案内容显示在
    local host
    ccsun6.cc.nctu.edu.tw
    上。


    而如果 .rhost 有这样的一行,则 ccsun6.cc.nctu.edu.tw 上的
    user u8217529
    将可以不用输入 password 而直接经由 rsh rlogin login

    ccsun7.csie.nctu.edu.tw
    来。


    注意
    :

    .rhost
    是一个设定可以信任的人 login 的表格,因此如果设定不当将会让

    不法之徒有可以乘机侵入系统的机会。 如果你阅读 man 5 rhosts ,将会

    发现你可以在第一栏用 + 来取代任何 hostname ,第二栏用 + 来取代任何

    username


    如一般 user 喜欢偷懒利用 " + username " 来代替列一长串 hostname

    但是这样将会使得即使有一台 PC 上跑 UNIX user 有与你相同的

    username ,
    也可以得到你的 trust 而侵入你的系统。这样容易造成系统

    安全上的危险。因此本系禁止使用这样子的方式写你的 .rhost 档,如果

    发现将予以停机直到你找中心的工作人员将其改正为止。 同理,如果你的

    第二个栏位为 + ,如" hostname + " ,则你是允许在某一部机器上的"所有
    "
    user
    可以不用经由输入 password 来进入你的帐号,是壹种更危险的行为。

    所以请自行小心。


    2. telnet
    telnet
    是一个提供 user 经由网路连到 remote host

    telnet
    的 格式如下
    :

    telnet [ hostname | ip-address ] [ port ]

    hostname
    为一个像 ccsun1 或是 ccsun1.cc.nctu.edu.tw name address

    ip-address
    则为一个由四个小於 255 的数字组成的 ip address ,如
    ccsun1
    ip-address 140.113.17.173 ccsun1.cc.nctu.edu.tw
    ip-address
    140.113.4.11 。你可以利用 telnet ccsun1 telnet 140.113.17.173

    连到 ccsun1


    port
    为一些特殊的程式所提供给外界的沟通点,如资工系的 MUD server 便

    提供一些 port user 由这些 port 进入 MUD 程式。详情请参阅
    telnet(1)
    的说明。



    3. ftp
    ftp
    的意义是 File Transfer Program ,是一个很常应用在网路档案传输的

    程式。ftp 的格式如下
    :

    ftp [ hostname | ip-address ]

    其中 hostname | ip-address 的意义跟 telnet 中的相同。


    在进入 ftp 之後,如果与 remote host 连接上了,它将会询问你
    username
    与密码,如果输入对了就可以开始进行档案传输。


    ftp 中有许多的命令,详细的使用方式请参考 ftp(1) ,这里仅列出较常

    用的
    cd , lcd , mkdir , put , mput , get , mget , binary , ascii ,
    prompt , help
    quit 的使用方式。


    ascii
    将传输模式设为 ascii 模式。通常用於传送文字档。


    binary
    将传输模式设为 binary 模式,通常用於传送执行档,压缩档与影像

    档等。

    cd remote-directory
    remote host 上的工作目录改变。


    lcd [ directory ]
    更改 local host 的工作目录。


    ls [ remote-directory ] [ local-file ]
    列出 remote host 上的档案。


    get remote-file [ local-file ]
    取得远方的档案。


    mget remote-files
    可使用通用字元一次取得多个档案。


    put local-file [ remote-file]
    local host 的档案送到 remote host


    mput local-files
    可使用通用字元一次将多个档案放到 remote host 上。


    help [ command ]
    线上辅助指令。


    mkdir directory-name
    remote host 造一个目录。


    prompt
    更改交谈模式,若为 on 则在 mput mget 时每作一个档案之传

    输时均会询问。


    quit/bye
    离开
    ftp .

    利用 ftp ,我们便可以在不同的机器上将所需要的资料做转移,某些特别的

    机器更存放大量的资料以供各地的使用者抓取,本校较著名的
    ftp server
    NCTUCCCA 与系上的 ftp.csie.nctu.edu.tw 。这些 ftp server 均有提

    供一个 user 称为 anonymous ,一般的"外来客"可以利用这个 username

    得该 server 的公共资料。不过 anonymous 在询问 password 时是要求使用

    anonymous
    的使用者输入其 email address,以往有许多台湾的使用者在使用

    国外的 ftp server 时并没有按照人家的要求输入其 email address,而仅是

    随便打一些字串,引起许多 internet user 和管理者的不满,对台湾的使用

    者的风评变得很差,因此遵循各 ftp server 的使用规则也是一件相当重要的事。


    f.
    关於通讯用的指令
    :

    1. write
    这个指令是提供使用者传送讯息给另一个使用者,使用方式
    :
    write username [tty]

    2. talk/ytalk/cytalk/ctalk
    UNIX
    专用的交谈程式。会将萤幕分隔开为你的区域和交谈对象的区域,

    同时也可和不同机器的使用者交谈。使用方式
    :

    talk username[@host] [tty]

    3. mesg
    选择是否接受他人的 messege , 若为 messege no 则他人的 messege 将无法

    传送给你,同时他也无法干扰你的工作。使用方法
    :

    mesg [-n|-y]

    4. mail/elm
    在网路上的 email 程式,可经由此程式将信件 mail 给他人。使用方式
    :

    mail [username]
    mail -f mailboxfile

    如有信件,则直接键入 mail 可以读取你的
    mail .

    elm
    提供较 mail 更为方便的介面,而且可做线上的 alias . 你可以进入
    elm
    使用上下左右键来选读取的信件,并可按 h 取得线上的 help 文件。


    使用方式
    :

    elm [usernmae]
    elm -f mailboxfile

    g.
    编译器
    ( Compiler ):

    Compiler
    的用处在於将你所撰写的程式翻译成一个可执行档案。在资工系常

    用的程式语言是 C , pascal , FORTRAN 等。你可以先写好一个 C
    Pascal
    FORTRAN 的原始程式档,再用这些 compiler 将其翻成可执行档。你可以

    用这个方法来制造你自己的特殊指令。


    1. cc/gcc (C Compiler)
    /usr/bin/cc
    /usr/local/bin/gcc

    语法
    : cc [ -o execfile ] source
    gcc [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .c 做为结尾的 C 程式档。

    请参阅 cc(1) 的说明。


    2. pc (Pascal Compiler)
    /usr/local/bin/pc

    语法
    : pc [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 Pascal

    式档。 请参阅 /net/home5/lang/man pc(1) 的说明。


    3. f77 (Fortran Compiler)
    /net/home5/lang/f77

    语法
    : f77 [ -o execfile ] source

    execfile
    是你所希望的执行档的名称,如果没有加上 -o 选项编译出来的可

    执行档会以 a.out 做为档名。 source 为一个以 .p 做为结尾的 FORTRAN

    式档。


    h.
    有关列印的指令
    :

    以下为印表所会用到的指令,在本系的印表机有 lp1 , lp2 ( 点矩阵印表机 )

    lw , sp , ps , compaq (
    雷射印表机 ),供使用者使用。


    1. lpr
    lpr
    为用来将一个档案印至列表机的指令。


    用法
    :
    lpr -P[ printer ] file1 file2 file3 ....


    lpr -P[ printer ] < file1

    例子
    :
    lpr -Plp1 hello.c hello.lst hello.map
    lpr -Plp1 < hello.c

    前者以参数输入所要印出的档案内容,後者列印标准输入档案
    ( standard input )
    的内容,因已将 hello.c 转向到标准输入,故会印出 hello.c 的档案内容。


    2. lpq
    lpq
    是用来观察 printer queue 上的 Jobs


    用法
    :
    lpq -P[ printer ]


    3. lprm
    lprm
    是用来取消列印要求的指令。 通常我们有时会印错,或是误送非文字档

    资料至 printer , 此时就必须利用 lprm 取消列印 request ,以免造成资源

    的浪费。


    用法
    :
    lprm -P[ printer ] [ Jobs id | username ]

    lprm
    用来清除 printer queue 中的 Jobs , 如果你使用 Job Id 作为参数,则

    它将此 Job printer queue 清除,如果你用 username作为参数,则它将此
    queue
    中所有 Owner 为此 username Jobs 清除。

    i.
    更改个人使用资料
    :
    1. passwd
    passwd
    是用来更改你的使用密码,用法为
    :
    passwd [ username ]
    在使用 passwd 的时候,它会先问你的旧密码,然後询问两次要更改的密码,确定

    无误後才将你的密码改掉。

    2. chsh
    chsh
    是提供使用者更换 login shell 的指令,你可经由此更换自己使用的 shell

     

    GNU
       GNU
    GNU's Not Unix的缩写。
       
    它的目标是在UNIX系统基础上,建立一个可自由发布和可移植的完善的Unix类操作系统。因开始实施GNU项目时,当时还没有多少高质量的自由软件可供项目使用。所以,为GNU项目做出贡献的人们先从系统的应用软件和工具入手。它的系统核心是HURD,但是由于LINUX的提前出现,让许多人认为,HURD没有必要再开发下去,用LINUXGNU的核心就很理想了。

    FSF
       FSF
    Free Software Foundation的缩写,即自由软件基金会
       
    十几年前,世界级的顶尖程序员Richard Stallman提出了一个伟大的信念:计算机系统应该对用户开放,软件应该自由使用。在他的倡导下,掀起了开发自由软件的运动热潮。1984年,Richard Stallman的努力得到了麻省理工学院的正式支持。后来他就成立了自由软件基金会这个倡导自由软件的组织。
       
    该组织的主要项目是GNU,一个自由发布和可移植的类UNIX系统。

    CPL
       GPL
    General Public License的缩写,即通用公共许可证
       
    这是为了能够规范自由软件,由自由软件基金会(FSF)提出,并制定成文的一种不同于传统的软件许可证。它的核心思想就是保证任何人可以共享和修改自由软件,有权取得、修得、修改和重新发布自由软件的源代码。这使得自由软件总的费用相当低廉,而且在使用Internet的情况下是免费的。
       
    该条款还规定自由软件的衍生作品必须以GPL作为它重新发布的许可证。这一规定保证了自由软件及其衍生作品继续保持自由状态。也就是说防止了不法分子将自由软件更改后注册自己的版权。
       
    而且通用公共许可证还容许销售自由软件。也就是说,自由软件本身是免费的,但销售公司可以从销售中收取一定的服务费用。这为公司介入自由软件事业敞开了大门。同时公司的介入弥补了自由软件的不足,对推动自由软件应用起了很大的作用。就象Red Hat公司在发布LINUX的过程中不断壮大,同时也大大促进了LINUX的发展。
       
    正是这个条款的合理制订,使得自由软件事业得以全面发展。可以说,自由软件之所以有今天的成就,CPL功不可没。

    A

    帐户名称(Account Name 等同于登录标识、用户标识或用户名。是指派给 UNIX/Linux 系统上用户的名称。可以在系统上对多个用户设置唯一的帐户名称,每个用户具有不同的访问(权限)级别。在安装完 Linux 之后,帐户名称由超级用户(Superuser)或 root 操作员指派。

    AfterStep
    用户界面(窗口管理器)之一,AfterStep 使得 Linux 的外观很象 NeXTSTEP,而且还有些增强功能。要获取更多关于 AfterStep 的信息,请访问 www.afterstep.org。(另请参阅“Enlightenment”、“GNOME”、“KDE”和“X Window 系统”。)

    Awk
    AhoWeinberger Kernighan 一种编程语言,因其模式匹配语法而特别有用,通常用于数据检索和数据转换。一个 GNU 版本称为 Gawk

    APM
    (高级电源管理,Advanced Power Management 一种工业标准,它允许系统处理器和各个组件进入省电模式,包括挂起、睡眠和关机。APM 软件对于移动设备尤为重要,因为它节省了电池电量。

    附加符号(Append Symbol 两个键盘字符 >(也就是 >>)。通常用它将命令的输出发送到文

  • UNIX系统操作命令大全

    2009-05-15 18:00:07

     

    第一章 登录和退出
      用户在登录前,首先要向系统管理员申请一个用户注册名,不论用户从哪台计
    算机登录到ITPNET上都将访问相同的文件系统。
    1.1 登录
    当屏幕上出现Login提示符时,用户可以输入自己的用户注册名,并按回车键。
    若有口令,系统将提示用户输入密码,并按回车键,口令输入正确后,用户登录成
    功。这时,屏幕上会显示出一些信息和命令提示符。如:
    Login: guest [Enter]
    passwd: ****** [Enter]
    sun%
    注: 用户名要用小写字母输入,UNIX系统区分大小写字母。
    1.2 退出
    当用户准备退出自己的计算机帐号时,可在系统示符下输入logout或exit或按
    [Ctrl-D]。当屏幕出现Login时,用户可以安全地离开计算机了。如:
    sun% logout [Enter]
    Login:
    1.3 修改口令
    为了防止他人使用自己的帐号,在你首次登录后,请用passwd命令修改只有本
    人知道的保密口令,口令通常由此可6到8个字母数字组成。如:
    sun% passwd [Enter]
    Old Passwd: ******
    New Passwd: ******
    Retype New Passwd: ******
    注:当你退出系统再次登录时,就要使用新的口令。

     

    第二章 目录操作命令
    2.1 显示目录
    命令:pwd(print working directory)
    格式:pwd
    功能:显示出用户当前工作目录的全路径名。
    例如:% pwd
    2.2 建立目录
    命令:mkdir(make directory)
    格式:mkdir directory_name
    功能:建立新目录
    例如:% mkdir directory
    2.3 改变目录
    命令:cd(change directory)
    格式:cd directory_name
    功能:改变当前工作目录
    注释:目录名选项有:
    (1) 目录名,转到当前目录下的子目录。
    (2) .. 表示转到当前目录的父目录。
    (3) / 表示转到根目录。
    (4) 没有选项时,转到用户的主目录。
    例如:% cd directory
    2.4 删除目录
    命令:rmdir (remove directory)
    格式:rmdir directory_name
    功能:删除不存在文件的子目录名。
    注释:
    (1) 删除子目录时,要求被删除的目录中不存在文件或子目录,否则无法删除。
    (2) 若被删除的目录中有文件或子目录,请参考命令rm -r directory_name。
    例如:% rmdir directory
    UNIX系统操作命令大全(第三章  3.1---3.12)

    第三章 文件操作命令

    3.1 列出文件目录

    命令:ls (list)

    格式:ls [option] directory_name

    功能:列出指定目录中的文件名和子目录名。当无子目录名时,列出当前目录

    中的文件名和子目录名。

    选项:-a列出所有文件,包括以点开头的隐含文件。

    -l按长格式列出文件名,包括文件类型标识,权限,链接数,文件主名,

    文件组名,字节数,日期。

    -r列出包括子目录下所有文件

    -g在长格式中给出用户组的标识。

    -t安文件生成日期排序。

    例如:% ls -la

    3.2 显示文件内容

    命令:cat (catenae)

    格式:cat filename

    功能:显示出文件的内容。

    注释:当文件内容在屏幕上滚动显示时,可按Ctrl+S键屏幕滚暂停,按Ctrl+Q

    键继续显示。

    例如:% cat filename

    3.3 按屏幕显示文件内容

    命令:more

    格式:more filename

    功能:按屏幕一屏一屏显示出文件内容

    选项:

    注释:在屏幕显示过程中有功能键。空格键 继续下一屏的输出;回车键 看下

    一行的输出;q键 跳出more状态;/字符串 查旬字符串所在处;a键 返

    回到上一屏。

    例如:% more filename

    3.4 分页显示文件内容

    命令:pg (page)

    格式:pg [option] filename

    功能:分页显示指定文件的内容。在显示一页文件时,最后一行将显示等待用

    户输入指令。可输入的指令有如下选项。

    选项:h 显示pg命令中可使用的帮助(help)命令。

    q 退出pg命令。

    [return] 显示下一页正文。

    1 显示正文的下一行

    [Space] 显示下一页

    d/[Ctrl-D] 将屏幕滚动半屏。

    n 显示pg命令行中说明的下一个文件。

    p 显示pg命令行中说明的前一个文件。

    % 显示正文当前页的前面一页。

    /pattern 在文件中向前搜索指定的字符模式。

    ?pattern 在文件中向后搜索指定的字符模式。

    注释:当pg命令显示到文件的末尾时,显示一个文件结束信息EOF(end of file)。

    例如:% pg filename

    3.5 读文件

    命令:view

    格式:view filename

    功能:只能读出文件内容。

    注释:此命令不能对读出的原文件进行写操作。若对原文件进行了修改,可利

    用命令“:w newfilename”将修改后的文件写到新文件中。

    例如:% view filename

    3.6 显示文件头部

    命令:head

    格式:head [option] filename

    功能:显示文件的头部

    选项:缺省 显示文件的头10行。

    -i 显示文件的开始 i行。

    例如:% head filename

    3.7 显示文件尾部

    命令:tail

    格式:tail [option] filename

    功能:显示文件的尾部

    选项:缺省 显示文件的末10行。

    -i 显示文件最后 i行。

    +i 从文件的第i行开始显示。

    例如:% tail filename

    3.8 显示格式化的文件内容

    命令:pr (print)

    格式:pr filename

    功能:在屏幕上显示格式化的文件内容,即印出每页66行的文本文件,包括5

    行页头和5行页尾。页头包括两行空行,一行含有文件的时间、文件名

    和页号,另外两行为空行。页尾为5行空行。

    例如:% pr filename

    3.9 拷贝文件

    命令:cp (copy)

    格式:cp [option] filename1 filename2

    cp [option] filename... directory

    cp -r directory1 directon2

    功能:把一个文件的全部内容拷贝到另一个文件,也可将一个或多个文件拷贝

    到另一个目录中。

    选项:-i 按提示进行拷贝文件。

    -p 按原文件日期进行拷贝。

    -r 对子目录下所有文件进行拷贝。

    注释:当filename1拷贝到filename2时,若filename2已经存在,则filename2

    的内容将被filename1覆盖。

    例如:% cp filename1 filename2

    3.10移动文件或文件改名

    命令:mv (move)

    格式:mv filename1 filename2

    mv filename... direction

    mv direction1 direction2

    功能:改变文件或目录的名子,或把一些文件移到另一目录下。

    注释:当filename1更名为filename2时,若filename2已经存在,则filename2

    的内容将被filename1覆盖

    例如:% mv filename1 filename2

    3.11删除文件

    命令:rm (remove)

    格式:rm filename

    rm -r direction

    功能:删除指定的文件或一个目录中的文件。

    注释:用-r选项时,将删除指定目录的所用文件,包括目录名。

    例如:% rm filename

    3.12链接文件

    命令:ln (link)

    格式:ln [option] filename linkname

    ln [option] directory pathname

    功能:为文件或目录建立一个链。其中,filename和directory是源文件名和

    源目录名;linkname和pathname分别表示与源文件或源目录名相链接的

    文件或目录。

    选项:-s 为文件或目录建立符号链接。

    注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出

    现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。

    例如:% ln -s filename linkname

    UNIX系统操作命令大全(第三章  3.12---3.28)

    3.13改变文件读取权限

    命令:chmod (change mode)

    格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename

    chmod [who][op][mode] directory

    功能:改变文件的读写和执行权限。有符号法和八进制数字法。

    选项:(1)符号法:

    u (user) 表示用户本人。

    g (group) 表示同组用户。

    o (oher) 表示其他用户。

    a (all) 表示所有用户。

    + 用于给予指定用户的许可权限。

    - 用于取消指定用户的许可权限。

    = 将所许可的权限赋给文件。

    r (read) 读许可,表示可以拷贝该文件或目录的内容。

    w (write) 写许可,表示可以修改该文件或目录的内容。

    x (execute)执行许可,表示可以执行该文件或进入目录。

    (2)八进制数字法:

    此方法用三位八进制数作任选项,每位数字分别表示用户本人、同组用

    户、其他用户的权限,其中:

    4 (100) 表示可读。

    2 (010) 表示可写。

    1 (001) 表示可执行。

    注释:

    例如:% chmod a+rx filename

    让所有用户可以读和执行文件filename。

    % chmod go-rx filename

    取消同组和其他用户的读和执行文件filename的权限。

    % chmod 741 filename

    让本人可读写执行、同组用户可读、其他用户可执行文件filename。

     

    3.14改变文件所有权

    命令:chown (change owner)

    格式:chown username filename

    chown -R username directory

    功能:改变文件或目录的所有权。

    选项:-R 将改变目录中所有文件及目录的拥有者。

    注释:只有文件的主人和超级用户才能改变文件的所有权。

    例如:% chown username filename

    3.15寻找文件

    命令:find

    格式:find pathname [option] expression

    功能:在所给的路经名下寻找符合表达式相匹配的文件。

    选项:-name 表示文件名

    -user 用户名,选取该用户所属的文件

    -group 组名,选取该用户组属的文件

    -mtime n 选取n天内被修改的文件

    -newer fn 选取比文件名为fn更晚修改的文件

    注释:

    例如:% find . -name '*abc*' -print

    3.16搜索文件中匹配符

    命令:grep

    格式:grep [option] pattern filenames

    功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。

    选项:-v 找出模式失配的行

    -c 统计匹配行的数量

    -n 显示匹配模式的每一行

    注释:

    例如:% ps -aux | grep R

    3.17比较文件不同

    命令:diff (difference)

    格式:diff filename1 filename2

    功能:显示两文件的不同之处。

    选项:

    注释:

    例如:% diff file1 file2

    3.18比较文件

    命令:cmp (compare)

    格式:cmp [-l] [-s] filename1 filename2

    功能:显示比较两文件不同处的信息

    选项:-l 给出两文件不同的字节数

    -s 不显示两文件的不同处,给出比较结果

    注释:

    例如:% cmp file1 file2

    3.19比较文件共同处

    命令:comm (common)

    格式:comm [-123] filename1 filename2

    功能:选择或拒绝比较两文件出现的共同行

    选项:-1 不显示第1列

    -2 不显示第2列

    -3 不显示第3列

    注释:输出三列,第一列表示在file1中出现的行,第二列表示在file2中出现

    的行,第三列表示在file1和file2中共同出现的行。

    例如:% comm file1 file2

    3.20排序文件

    命令:sort

    格式:sort [option] filename

    功能:将制定的文件按要求排序

    选项:-r 按字母倒排序

    -n 按数字的值从笑到大排序

    -r 按当前排序规则逆序排序

    -f 不区分大小写排序

    -d 按典型顺序排序

    注释:选项缺省时按ascii码顺序排序

    例如:% sort -nr file

    3.21压缩文件

    命令:compress

    格式:compress [option] filename

    功能:压缩文件。

    选项:-f 强制压缩

    -v 压缩时显示压缩百分比

    注释:

    例如:% comproess files

    3.22解缩文件

    命令:uncompress

    zcat

    格式:compress [option] filename

    zcat filename

    功能:展开或显示压缩文件。

    选项:-c 不改变文件写到标准输出

    注释:zcat命令相当于uncompress -c

    例如:% uncomproess files.Z

    3.23显示文件类型

    命令:file

    格式:file filename ...

    功能:按文件内容来推测文件类型,如text,ascii,C,executable,core。

    选项:

    注释:

    例如:% file *

    3.24建立档案文件

    命令:tar (tape archive)

    格式:tar [option] tarfile filename

    功能:建立文件的存档或读存档文件。

    选项:-c 建立一个新的档案文件

    -x 从档案文件中读取文件

    -v 显示处理文件的信息

    -f 指定档案文件名,缺省时为磁带机即/dev/rmt/0

    -t 列出存档文件的信息

    注释:

    例如:% tar cvf tarfile .

    % tar xvf tarfile

    % tar tvf tarfile

    3.25磁带拷贝文件

    命令:dd

    格式:dd [option=value]

    功能:用磁带机转换或拷贝文件。

    选项:if=name 指定输入文件名

    of=name 指定输出文件名

    ibs=n 指定输入文件块大小为n字节(缺省为512字节)

    obs=n 指定输出文件块大小为n字节(缺省为512字节)

    注释:

    例如:% dd if=filename f=/dev/rmt/0

    % dd if=/dev/rmt/0 f=filename ibs=1024

    3.26修改文件日期

    命令:touch

    格式:touch filenae

    功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。

    选项:

    注释:

    例如:% touch file

    3.27统计文件字数

    命令:wc (word characters)

    格式:wc [option] filename

    功能:统计文件中的文件行数、字数和字符数。

    选项:-l 统计文件的行数

    -w 统计文件的字数

    -c 统计文件的字符数

    注释:若缺省文件名则指标准输入

    例如:% wc file

    3.28检查拼写

    命令:spell (spelling)

    格式:spell [option] filename ...

    功能:检查文件中的拼写错误

    选项:-b 按英国拼法检查

    -v 显示字面上不在拼法字典上的词

    -x 显示每一个可能合理的词根

    注释:

    例如:% spell file

     

    UNIX系统操作命令大全(第四章)

    第四章 有关状态信息命令

    4.1显示当前注册的用户

    命令:w

    格式:w [option] [username]

    功能:显示当前正在使用系统的用户名、注册时间和当前执行的命令。

    选项:-h 不显示起始行

    -s 按短格式显示

    -l 按长格式显示(缺省设置)

    注释:

    例如:% w

    4.2 显示都谁登录到机器上

    命令:who

    格式:who

    功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。

    例如:% who

    4.3 显示当前终端上的用户名

    命令:whoami

    格式:whoami

    功能:显示出当前终端上使用的用户。

    例如:% whoami

    4.4 确定命令位置

    命令:whereis

    格式:whereis command

    功能:确定一个命令的二进制行码、源码及联机手册所在的位置。

    选项:

    注释:

    例如:% whereis ls

    4.5 查找非标准命令

    命令:which

    格式:which command

    功能:查找非标准命令,即使用别名或系统中标准命令集之外的命令。

    选项:

    注释:

    例如:% which ls

    4.6 显示日期

    命令:date

    格式:date

    功能:显示或设置日期和时间。

    选项:

    注释:只有超级用户有权设置日期。

    例如:% date

    4.7 显示日历

    命令:cal (calendar)

    格式:cal [month] year

    功能:显示某年内指定的日历

    选项:

    注释:

    例如:% cal 1998

    4.8 计算命令执行时间

    命令:time

    格式:time [command]

    功能:计算程序或命令在执行其间所用的时间。

    选项:

    注释:计算出的时间为:real是命令在系统驻留的总时间,user是命令消耗CPU

    的时间,sys是命令I/O所开销的时间。

    例如:% time myprog

    4.9 查询帐目

    命令:acseek (account seek)

    格式:acseek [-d n] [-m usersname]

    功能:查询本月的用户帐目。

    选项:-d n

    -m username

    注释:若没有选项,则显示本人当月的帐单。

    例如:% acseek

    4.10显示用户标识

    命令:id

    格式:id [option] [user]

    功能:显示用户标识及用户所属的所有组。

    选项:-a 显示用户名、用户标识及用户所属的所有组

    注释:

    例如:% id username

    4.11显示主机标识

    命令:hostid

    格式:hostid

    功能:显示主机的唯一标识,是被用来限时软件的使用权限,不可改变。

    选项:

    注释:

    例如:% hostid

    4.12显示主机名

    命令:hostname

    格式:hostname

    功能:显示或设置主机名。

    选项:

    注释:只有超级用户才能设置主机名。

    例如:% hostname

    4.13显示进程

    命令:ps

    格式:ps [option]

    功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。

    选项:-a 列出当前系统中所有进程的信息

    -l 显示一个长列表

    -e 显示当前运行的每一个进程信息

    -f 显示一个完整的列表

    注释:

    例如:% ps -ef

    4.14显示磁盘空间

    命令:df (disk free)

    格式:df [option]

    功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总

    字节数、已用字节数、剩余字节数占用百分比。

    选项:-i 显示已用和未用的字节数

    -k 显示磁盘空间的使用信息

    注释:

    例如:% df -k

    4.15显示文件盘空间

    命令:du (disk usage)

    格式:du [option] [filename]

    功能:显示目录或文件所占磁盘空间大小

    选项:-a 显示所有文件的大小

    -s 显示制定目录所占磁盘大小

    注释:

    例如:% du

    4.16显示盘空间限制

    命令:quota

    格式:quota -v [username]

    功能:显示用户的磁盘空间限制和使用情况。包扩盘空间的限额和已使用数,

    允许建立的节点数限额和使用节点数。

    选项:-v 查看用户在系统中的盘空间

    注释:只有超级用户可以显示任何用户的使用情况,用edquota命令可修改。

    例如:% quota -v

    4.17显示终端选项

    命令:stty

    格式:stty [option]

    功能:显示或设置终端的任选项。

    选项:-a 显示所有设置情况

    -g 显示当前设置

    注释:

    例如:% stty -a

    4.18显示终端名

    命令:tty

    格式:tty

    功能:显示终端名

    选项:

    注释:

    例如:% tty

    4.19回忆命令

    命令:history

    格式:history

    功能:帮助用户回忆执行过的命令。

    选项:

    注释:

    例如:% history

    4.20联机帮助手册

    命令:man (manual)

    格式:man command_name

    功能:显示参考手册,提供联机帮助信息。

    选项:

    注释:-k 按制定关键字查询有关命令

    例如:% man tar

    4.21建立别名

    命令:alias

    格式:alias newname name

    功能:用户可以将常用的命令用自己习惯的名称来重新命名。

    选项:

    注释:

    例如:% alias dir 'ls -F'

    UNIX系统操作命令大全(第五章)

     

    第五章 网络命令

    5.1显示网络地址

    命令:arp

    格式:arp hostname

    功能:显示系统当前访问的远程住机名、IP地址和硬件地址。

    选项:-a

    注释:

    例如:% arp -a

    5.2 显示用户信息

    命令:finger

    格式:finger username

    功能:显示网上用户使用机器的情况,包括用户何时登录和最后一次注册记录。

    选项:

    注释:

    例如:% finger username

    5.3 网上对话

    命令:talk

    格式:talk username

    功能:在网上与另一用户进行对话。

    选项:

    注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部

    显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。

    例如:% talk username

    5.4 允许或拒绝接受信息

    命令:mesg (message)

    格式:mesg [n/y]

    功能:允许或拒绝其它用户向自己所用的终端发送信息。

    选项:n 拒绝其它用户向自己所用的终端写信息

    y 允许其它用户向自己所用的终端写信息(缺省值)

    注释:

    例如:% mesg n

    5.5 给其他用户写信息

    命令:write

    格式:write username [ttyname]

    功能:给其他用户的终端写信息。

    选项:

    注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。

    例如:write username

    5.6 测试网路

    命令:ping

    格式:ping hostname

    功能:向网络上的主机发送ICMP ECHO REQUEST信息包,检测网络是否畅通。

    选项:

    注释:被测试的主机名可用IP地址。当丢包率为(100% packet loss)则说明

    当前网络不通。

    例如:% ping hostsname

    5.7 远程shell命令

    命令:rsh (remote shell)

    格式:rsh hostsname command

    功能:在本地机执行远程主机的shell命令。

    选项:

    注释:

    例如:% rsh hostname who

    5.8 远程拷贝文件

    命令:rcp (remote copy)

    格式:rcp [-r] file newfile

    功能:拷贝远程主机上的文件。

    选项:-r 拷贝目录

    注释:

    例如:% rcp hostname:/tmp/file .

    5.9 远程注册

    命令:rlogin (remote login)

    格式:rlogin hostname [-l username]

    功能:注册到远程主机上。

    选项:-l username 注册到另一用户

    注释:要有用户口令才能注册。

    例如:% rlogin hostname

    5.10 远程登录

    命令:telnet

    格式:telnet hostname

    功能:远程登录到网上其它主机。

    选项:

    注释:支持不同的操作系统。

    例如:% telnet bbs.tsinghua.edu.cn

    5.11文件传输

    命令:ftp (file transfer program)

    格式:ftp hostname

    功能:网络文件传输及远程操作。

    选项:ftp命令:

    ?/help ftp的联机帮助

    open hostname 打开制定的远程机

    cd [dirname] 进入远程机的目录

    lcd [dirname] 设置本地机的目录

    dir/ls 显示远程的目录文件

    binary 以二进制方式进行传输

    get/mget 从远程机取一个或多个文件

    put/mput 向远程机送一个或多个文件

    prompt 打开或关闭多个文件传送时的交互提示

    close 关闭与远程机的连接

    quit 退出ftp

    注释:

    例如:% ftp hostname

    5.12显示到网络主机的路经

    命令:traceroute

    格式:traceroute hostname

    功能:显示本机到达某一网络主机所经的路经和使用的时间。

    选项:

    注释:

    例如:% traceroute hostname

    UNIX系统操作命令大全(第六、七章)

    第六章 Mail命令

    6.1 发送或接受电子邮件

    命令:mail/Mail/mailx

    格式:mail username (发送)

    mail [option] (接受)

    功能:向网上用户发送或接受电子邮件。

    选项:-r 邮件按先进先出顺序排序。缺省时为后进先出顺序排序

    -q 中断mail后不改变信箱内容

    -p 显示mail每份邮件,不显示提示信息

    -f 从邮件格式文件中读邮件

    注释:mail命令:

    ? 显示mail帮助命令

    h 邮件标题列表

    p 显示当前邮件

    n 显示下一邮件

    r [uers] 给发信人或用户回信

    s [file] 将邮件保存到文件中,保存标题信息

    w [file] 将邮件写到文件中,不保存标题信息

    d [n] 删除当前邮件或第n封邮件

    q 将未删除的邮件存入mbox文件,并退出mail

    x 所有邮件不作修改,退出mail

    例如:% mail -s "Subjet ..." username < messages

    6.2 显示邮件队列

    命令:mailq

    格式:mailq

    功能:查看正在发送或接收邮件的排队情况。

    选项:

    注释:此命令一般在系统或网络不同时使用。

    例如:% mailq

    6.3 邮件操作命令

    命令:pine

    格式:pine

    功能:对自己邮件操作的程序。

    选项:

    注释:此操作是在菜单提示下进行。

    例如:% pine

     

    第七章 运行程序命令

    7.1 按时间执行命令

    命令:at/batch

    格式:at [option] [time] [data] [file]

    功能:在制定的时间执行命令或命令文件。

    选项:-r 取消以前用at命令提交的作业

    -l 显示用at命令提交的所有作业状态和作业号

    注释:

    例如:at 0030 Jan 20 myfile

    7.2 参数回至标准输出

    命令:echo

    格式:echo [-n] [arguments]

    功能:将参数即字符串至标准输出即显示器

    选项:-n 不向标准输出回送换行符

    注释:

    例如:echo *

    7.3 复制至文件

    命令:tee

    格式:tee [option] filename

    功能:至标准输出的同时复制至文件

    选项:-a 输出时附加到文件中

    -i 不理采中断

    注释:

    例如:% who | tee file

    7.4 给程序优先级

    命令:nice

    格式:nice [-n] command

    功能:以低的优先级运行程序或命令。

    选项:-n 为优先级0-20从高到低

    注释:

    例如:nice -5 progame

    7.5 终止进程

    命令:kill

    格式:kill [option] pid

    功能:向指定的进程送信号或终止进程。

    选项:-9 强行终止进程

    -17 将进程挂起

    -19 将挂起的进程激活

    注释:pid标示进程号,可由ps命令得到。

    例如:% kill -9 pid

    7.6 进程睡眠

    命令:sleep

    格式:sleep time

    功能:使当前正在执行的进程在规定的时间内处于睡眠。

    选项:

    注释:time为进程将睡眠的时间,以秒为单位。

    例如:% sleep time

    7.7 显示作业状态

    命令:jobs

    格式:jobs [-l]

    功能:显示当前作业的状态

    选项:-l 长列表显示作业状态,包括所有者、作业号、终端和状态。

    注释:作业状态为 +表示最近被停止的作业,-表示先前的作业,exit 1表示

    退出的作业,job# done表示已完成的作业。

    例如:% jobs

    7.8 前台作业

    命令:fg

    格式:fg job#

    功能:将指定作业号的作业转入前台运行。job#表示作业号。

    选项:

    注释:

    例如:% fg job#

    7.9 后台作业

    命令:bg/&

    格式:bg job#

    command &

    功能:将指定作业号的作业或命令推到后台运行。

    选项:

    注释:

    例如:% bg job#

    7.10挂起作业

    命令:stop

    格式:stop job#

    功能:将指定作业号的后台作业挂起.

    选项:

    注释:

    例如:% stop job#

    UNIX系统操作命令大全(第八章 )

    第八章 程序编译执行命令

    8.1 C程序编译

    命令:cc

    格式:cc [option] filename

    功能:编译或链接指定的C文件。

    选项:-o 指定输出文件名,缺省时为a.out

    -c 只编译,产生.o的目标文件

    -g 产生用于符号测试的执行文件

    -lm 进行连接cc数学库

    -O 进行代码的一般优化

    -O2 二级优化

    注释:C编译器参考手册可用命令man cc查看。

    例如:% cc -o test test.c

    8.2 C++程序编译

    命令:CC

    格式:CC [option] filename

    功能:编译或链接指定的C++文件。

    选项:同C编译选项

    注释:C++编译器参考手册可用命令man CC查看。

    例如:% CC -O2 test.cc

    8.3 FORTRAN77程序编译

    命令:f77

    格式:f77 [option] filename

    功能:编译或链接指定的Fortran文件

    选项:-o 指定输出文件名,缺省时为a.out

    -c 只编译,产生.o的目标文件

    -g 产生用于符号测试的执行文件

    -O0 不进行代码优化

    -O1 尽快进行代码优化

    -O2 二级优化

    -O3 三级优化

    注释:FORTRAN77编译器参考手册可用命令man f77查看

    例如:% f77 -c test.f

    8.4 FORTRAN90程序编译

    命令:f90

    格式:f90 [option] filename

    功能:编译或链接指定的Fortran90文件

    选项:同FORTRAN77编译选项

    注释:FORTRAN90编译器参考手册可用命令man f90查看

    例如:% f90 -O -o test test.f

    8.5 GNU程序编译

    命令:gcc (GNU C)

    g++/c++ (GNU C++)

    g77 (GNU FORTRAN77)

    格式:gcc [option] filename

    g++ [option] filename

    g77 [option] filename

    功能:编译或链接指定的编译文件。

    选项:-o 指定输出文件名,缺省时为a.out

    -c 只编译,产生.o的目标文件

    -O 进行代码的一般优化

    -O2 二级优化

    注释:GNU编译器参考手册可进入emacs中info菜单下查看。

    例如:% gcc -o test test.c

    8.6 运行文件

    格式:a.out

    filename

    功能:源程序经编译后产生目标代码文件,放在a.out文件或指定输出文件名。

  • unix系统信息查看

    2009-05-15 18:00:07

    简述
    本节介绍了一些查看系统信息和监测系统资源与性能的工具,使用性能监测工具对当前系统有一个基本的了解,并根据收集到的信息选择其他相应的工具,进一步分离出性能瓶颈和寻找解决办法。本节根据查看系统信息、磁盘使用和I/O监测、CPU和内存监测、网络监测进行分类,介绍几种性能监测工具和监测手段,供大家在日常工作中选择参考。
     
     
    目录
    一、系统信息查看
    1、查看系统版本号的几个命令
    2、如何在Solaris下获取内存大小
    3、如何在Solaris下获取CPU速率
     
    二、磁盘使用和I/O监测
    1、检查磁盘使用状况工具df、du
    2、iostat 监视磁盘命令
     
    三、CPU和内存使用监测
    1、用vmstat监测CPU和内存,vmstat列出的属性详解
    2、prstat给出CPU和内存使用情况的动态注解
    3、mpstat命令报告每个处理器的统计信息
    4、proc工具报告某单独进程属性
    5、pmap命令报告单独进程的内存空间布局情况
    6、使用ps命令获取进程的内存、CPU利用状况及排序
    7、uptime和w命令查看过去15分钟内系统的负载情况
    8、使用top工具监测性能
    9、如何增加交换空间
     
    四、检查网络性能工具
    1、snoop诊断网络报文工具
    2、nfsstat监测NFS系统
    3、netstat监测网络接口
    4、Solaris下如何知道哪个进程使用了哪个端口
    5、ping 诊断网络连接和阻塞问题
    6、ipcs显示与内部进程通信有关的统计信息
    7、traceroute显示路由到目的地主机的报文,诊断网络拥堵
    8、route get ip获取通过的网关
     
     
     
     
    内容
    一、系统信息查看
    ========================================================================
    1、查看系统版本号的几个命令
     
    1)看版本号
    # uname -a
    SunOS sunserver1 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Fire-280R
     
    2)看kernel版本号
    # showrev
    Hostname: sunserver1
    Hostid: 8318005d
    Release: 5.8
    Kernel architecture: sun4u
    Application architecture: sparc
    Hardware provider: Sun_Microsystems
    Domain:
    Kernel version: SunOS 5.8 Generic 108528-19 January 2003
    相关命令:
    #hostid
    #hostname
     
    3)看安装的补丁id
    #showrev –p
     
    4)看是否安装了某个补丁
    #pkginfo |grep XXXXX
    ========================================================================
    2、如何在Solaris下获取内存大小
     
    有以下几个命令供参考:
    /usr/platform/`uname -m`/sbin/prtdiag -v | grep Memory
    prtconf -v | grep Memory
    如果装了GNU top,也可以直接用top命令看到。
    ========================================================================
    3、如何在Solaris下获取CPU速率
     
    有以下几个命令供参考:
    # psrinfo -v
    # psrinfo | grep on-line | wc -l 简单给出CPU数目
    # /usr/platform/`uname -i`/sbin/prtdiag -v
    # /usr/platform/`uname -m`/sbin/prtdiag -v
    # /usr/bin/netstat -k cpu_info0
    ========================================================================
     
     
    二、磁盘使用和I/O监测
    ========================================================================
    1、检查磁盘使用状况工具df、du
    df列出文件系统的块大小,及使用情况
    # df
    /                  (/dev/dsk/c0t0d0s0 ):  745246 块   667064 文件
    /proc              (/proc             ):       0 块     7816 文件
    /dev/fd            (fd                ):       0 块        0 文件
    /etc/mnttab        (mnttab            ):       0 块        0 文件
    /var/run           (swap              ): 1227264 块    54271 文件
    /tmp               (swap              ): 1227264 块    54271 文件
    /space             (/dev/dsk/c0t0d0s3 ): 2023574 块  1470851 文件
     
    df –k以字节列出系统使用情况
    # df -k
    文件系统              千字节    用了    可用 容量      挂接在
    /dev/dsk/c0t0d0s0    6191949 5819326  310704    95%    /
    /proc                      0       0       0     0%    /proc
    fd                         0       0       0     0%    /dev/fd
    mnttab                     0       0       0     0%    /etc/mnttab
    swap                  488768       0  488768     0%    /var/run
    swap                  490240    1472  488768     1%    /tmp
    /dev/dsk/c0t0d0s3    12530787 11518984  886496    93%    /space
     
    列出某一目录所在的设备使用情况
    # df -k /slli
    文件系统              千字节    用了    可用 容量      挂接在
    /dev/dsk/c0t0d0s0    6191949 5819326  310704    95%    /
     
    du列出某一目录的使用大小
    # du -s /export/home
    852690  /export/home
     
    # du -ks /export/home
    426345  /export/home
     
    列出某一目录下所有子目录及文件的大小
    # du /opt
    8       /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing/plaf/windo
    10      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing/plaf
    12      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing
    14      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java
    16      /opt/SUNWebnfs/JFileChooser-patch/com/sun
    18                     /opt/SUNWebnfs/JFileChooser-patch/com
    … …
     
    ========================================================================
    2、iostat 监视磁盘命令
     
    iostat命令报告磁盘的使用情况。表格中的每一行代表一个磁盘的活动信息。常用的选项有这些:
     
    参数n    按cXtYdZ格式指定磁盘。
    # iostat -n 2
       tty       c0t0d0         fd0          c0t2d0          cpu
     tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id
       0   16 476  23    7    0   0    0    0   0    0    2  2 10 86
       0   97 170  22   11    0   0    0    0   0    0    0  3  0 97
       0   33  24   3    1    0   0    0    0   0    0    0  0  0 100
       0   34  12   2    1    0   0    0    0   0    0    0  0  0 100
       0   34   0   0    0    0   0    0    0   0    0    0  0  0 100
     
    参数x   报告扩展统计信息。
    # iostat -x
                      extended device statistics
    device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b
    dad0        21.2    1.4  465.4   10.9  0.0  0.1    6.5   0  12
    fd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
    sd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0
     
    参数z   这个选项在Solaris 8操作环境中是新的。它使得在采样间隔中没有磁盘活动的那些行被省略掉,这样可以让输出简短一些并且突出那些有活动的磁盘。
    # iostat -z 2
       tty        dad0          fd0           sd0            cpu
     tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id
       0   16 476  23    7    0   0    0    0   0    0    2  2 10 86
       0   97  12   1    7    0   0    0    0   0    0    0  0  0 100
     
    参数p和P 报告分区前(per-partition)的I/O统计信息,当察看内存交换设备的时候有用。
    # iostat -p 2
       tty        dad0         dad0,a        dad0,b        dad0,c          cpu
     tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id
       0   16 476  23    7    1   0   28    0   0   27    0   0    0    2  2 10 86
       0  117  12   1    1    0   0    0    0   0    0    0   0    0    0  0  0 100
     
    参数E  对于找出产生错误的磁盘有用。
    # iostat -nE
    c0t0d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
    Model: ST320011A        Revision: 3.19     Serial No: 3HT3XQ9X
    Size: 20.02GB <20019879936 bytes>
    Media Error: 0 Device Not Ready: 0  No Device: 0 Recoverable: 0
    Illegal Request: 0
    c0t2d0          Soft Errors: 0 Hard Errors: 2 Transport Errors: 0
    Vendor: LG       Product: CD-ROM CRD-8483B Revision: 1.02 Serial No:
    Size: 18446744073.71GB <-1 bytes>
    Media Error: 0 Device Not Ready: 2 No Device: 0 Recoverable: 0
    Illegal Request: 0 Predictive Failure Analysis: 0
     
     
    此外,对于磁盘镜像,可能也会影响到一些I/O性能。
    ========================================================================
     
     
    三、CPU和内存使用监测
    ========================================================================
    1、用vmstat监测CPU和内存,vmstat列出的是些什么属性?
     
    # vmstat 2
     procs     memory            page            disk          faults      cpu
     r b w   swap  free  re  mf pi po fr de sr 1m 1m 1m 2m   in   sy   cs us sy id
     0 0 0 5235888 387408 20 135 10 2  1  0  0  0  0  0  0  170  599  286  0  2 98
     0 0 0 5192424 506360 2   4  0  0  0  0  0  0  0  0  0  152   67  173  0  0 100
     0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  149  138  175  0  0 99
     0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  131   36  146  0  0 100
     0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  156   45  161  0  0 100
     0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  157  101  172  0  0 100
     
    vmstat各项:
    procs:
    r-->在运行队列中等待的进程数
    b-->在等待io的进程数
    w-->可以进入运行队列但被替换的进程
    memoy
    swap-->现时可用的交换内存(k表示)
    free-->空闲的内存(k表示)
    pages
    re--》回收的页面
    mf--》非严重错误的页面
    pi--》进入页面数(k表示)
    po--》出页面数(k表示)
    fr--》空余的页面数(k表示)
    de--》提前读入的页面中的未命中数
    sr--》通过时钟算法扫描的页面
    disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号
    fault 显示每秒的中断数
    in--》设备中断
    sy--》系统中断
    cy--》cpu交换
    cpu 表示cpu的使用状态
    cs--》用户进程使用的时间
    sy--》系统进程使用的时间
    id--》cpu空闲的时间
    如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
    如果pi,po 长期不等于0,表示内存不足。
    如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。
     
     
    CPU能力不足的例子。
    # vmstat 15
    procs   memory  page   disk   faults  cpu
    r b w swap free re mf pi po fr de sr m0 m1 m2 m3 in sy cs us sy id
    45 0 0 2887216 182104 3 707 449 6 455 0 80 2 6 1 0 1531 5797 983 61 30 9
    58 0 0 2831312 46408 5 983 582 56 3211 0 492 0 0 0 0 1413 4797 1027 69 31 0
    55 0 0 2830944 56064 2 649 656 3 806 0 121 0 0 0 0 1441 4627 989 69 31 0
    57 0 0 2827704 48760 4 818 723 6 800 0 121 0 0 1 0 1606 4316 1160 66 34 0
    56 0 0 2824712 47512 6 857 604 56 1736 0 261 0 0 1 0 1584 4939 1086 68 32 0
    58 0 0 2813400 47056 7 856 673 33 2374 0 355 0 0 0 0 1676 5112 1114 70 30 0
    60 1 0 2816712 49464 7 861 720 6 731 0 110 7 0 3 0 2329 6131 1067 64 36 0
    58 0 0 2817552 48392 4 585 521 0 996 0 146 0 0 0 0 1357 6724 1059 71 29 0
     
    在"procs"下面标着"r"的一列是等待获得CPU的进程运行队列中的进程数。"id"列是CPU空闲时间。这台机器没有足够的CPU资源以满足进程运行的需要,这可以从它的大部分CPU时间花在用户空间里看出来(看"us"列)。
     
    这种情况解决办法,增加更多的CPU,或者,配合使用其他相关工具查出资源耗费较多的进程,对应用程序的代码作性能分析,看是否可以优化。
     
    vmstat中的"fr"列确实反映了空闲并且没有被页面缓存所使用的内存。使用-p选项,给出更准确的页面调度行为细节。
     
    为了确定是否有内存不足的情况存在,同时检查 ("sr",也就是扫描率)和交换分区的磁盘I/O流量(用iostat -P)。如果大量的I/O活动由文件系统产生并且需要运行页面扫描程序为I/O释放页面,"sr"列会有比较大的数值。
     
    保存如何正常运转的样例。这样可以很容易地收集和保存每月的性能数据进行比较,如 vmstat, mpstat, iostat
     
    ========================================================================
    2、prstat给出CPU和内存使用情况的一个动态注解
     
    示例:
    #prstat -cvm的输出结果非常有用。
     
    ========================================================================
    3、mpstat命令报告每个处理器的统计信息
     
    mpstat命令报告每个处理器的统计信息,表格中的每一行代表一个处理器的活动情况。
    #  mpstat 5
    CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
      0    3  19    0   451  327  300   11    0    0    0   322    2   2  10  86
      0    1   0    0   405  303  258    3    0    0    0   176    0   0   0 100
      0    0 134    0   711  456  559   21    0    0    0   622    9   8  34  49
      0    2  28    0   644  434  703  143    0    0    0  1392   28  12  15  45
      0    0  23    0   624  412  478   35    0    0    0   941   10  18  14  57
     
    mpstat可以确定每一个CPU都在花时间做什么:比如,分配给系统、用户、等待、空闲时间、系统调用、锁竞争、中断、错误、交叉调用。
    mpstat的"wt"列表明等待时间过多。 用户任务花时间太长。 作为你积极的维护计划的一部分,检查/var/adm/messages中有没有比如磁盘重试之类的硬件问题或者有没有额外的消息产生也是很有价值的。
     
    大百科CPU 100%案例:
    大百科SUN系统经常报CPU 100%,CPU占用最高的进程有时竟然是一些僵尸进程,杀掉后CPU立刻降下来,在/var/adm/messages中疯狂报如下信息:
    Mar  3 16:45:15 dbksvr unix: [ID 340762 kern.notice] from Memory Module 1901
    Mar  3 16:45:15 dbksvr unix: [ID 221138 kern.notice]  CONSIDER REPLACING THE MEMORY MODULE.
    Mar  3 16:45:15 dbksvr unix: [ID 547813 kern.notice] Multiple Softerrors:
    Mar  3 16:45:15 dbksvr unix: [ID 356634 kern.notice] 256 Intermittent, 0 Persistent, and 0 Sticky Softerrors accumulated
    怀疑时硬件内存条问题,当事务量小时,内存用不到这条有问题的,当事务量大时,开始使用此有问题的内存造成死锁,CPU高居100%.
     
    ========================================================================
    4、proc工具报告进程属性
     
    proc是一个利用/proc的特性来报告比如这样一些进程属性的实用工具:
    1)pstack -调用栈
    2)pfiles -打开的文件描述符列表
    3)pldd -正在运行中的进程使用的动态链接库的列表
     
     
    示例:
    #ps -ef
    root  1838     1  0   3月 03 ?        0:00 /usr/sbin/syslogd
    root  1479     1  0   3月 03 ?        0:01 ocfserv
    … …
     
    # pstack 1838
    1838:   /usr/sbin/syslogd
    -----------------  lwp# 1 / thread# 12  --------------------
     ff217ac8 poll     (ff03bd0c, 1, ffffffff)
      ff15b35c poll     (c, ff174780, 1, 2a8c8, 2b164, fe401000) + 34
      ff15bc08 _thread_start (0, 0, 0, 0, 0, 0) + 40
    -----------------  lwp# 2 / thread# 2  --------------------
    … …
     
    # ptree 1838
    1933  /usr/dt/bin/dtlogin -daemon
      6359  /usr/dt/bin/dtlogin -daemon
        6380  /bin/ksh /usr/dt/bin/Xsession
    6390       /usr/openwin/bin/fbconsole
    … …
     
    # pfiles 1838
    1838:   /usr/sbin/syslogd
      Current rlimit: 1024 file descriptors
       0: S_IFCHR mode:0600 dev:136,0 ino:749016 uid:0 gid:3 rdev:97,0
          O_WRONLY|O_APPEND
       1: S_IFCHR mode:0666 dev:136,0 ino:749009 uid:0 gid:3 rdev:13,2
          O_RDONLY|O_LARGEFILE
     … …
     
    # pldd 1838
    1838:   /usr/sbin/syslogd
    /usr/lib/libnsl.so.1
    /usr/lib/libpthread.so.1
    /usr/lib/libdoor.so.1
    /usr/lib/libc.so.1
    … …
     
    ========================================================================
    5、pmap命令报告单独进程的内存空间布局情况
     
    对于单独的进程,pmap命令报告单独进程的内存空间布局情况(-x选项比较有用)。
    示例:
    #ps –ef|grep httpd
        root  1158     1  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd
      daemon  1064  1063  0   3月 03 ?        0:00 /usr/lib/ab2/dweb/sunos5
    tpd /usr/lib/ab2/dweb/data
      nobody  1704  1158  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd
      nobody  1705  1158  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd
    … …
     
    #pmap –x 1710
    1710:   /opt/IBMHTTPD/bin/httpd
    00010000    584K read/exec         /opt/IBMHTTPD/bin/httpd
    000B0000     40K read/write/exec   /opt/IBMHTTPD/bin/httpd
    000BA000    208K read/write/exec     [ heap ]
    FECA0000     24K read/exec         /usr/lib/nss_files.so.1
    FECB6000      8K read/write/exec   /usr/lib/nss_files.so.1
    FECC0000    368K read/write/shared   [ anon ]
    FED20000    136K read/exec         /opt/WebSphere/AppServer/bin/libascommon.so
    … …
    ========================================================================
    6、使用ps命令获取进程的内存、CPU利用状况及排序
     
    ps命令显示正在运行进程某一时刻的相关数据,使用ps命令获取进程的内存、CPU利用状况。用这些命令可以看到使用CPU和内存最多的进程:
     
    1)# ps -eo pid,pcpu,args | sort +1n
    CPU百分比
     
    2)# ps -eo pid,vsz,args | sort +1n
    K字节的虚拟内存
     
    3)# /usr/ucb/ps -aux |more
    # /usr/ucb/ps -aux | head
    输出被排序,使用CPU和内存最多的进程排在上面。
     
    注意:/usr/bin/ps和/usr/ucb/ps时两个不同的工具。
    /usr/ucb/ps中,stat列显示了各进程的状态:
    R 进程可运行
    s 睡眠,不可中断
    S 睡眠
    I 空闲
    T 停挂
    H 挂起
    W 被换出到磁盘上
                       进程超过了内存的软限制
    + 带有一个控制端的进程领导者
    N 进程在优先级降低的情况下运行
    < 进程在优先级升高情况下运行
    ========================================================================
    7、uptime和w命令查看过去15分钟内系统的负载情况
     
    uptime 可以很开的制导系统一运行了多长时间,以及在过去15分钟内系统的负载情况。W命令(谁在系统中)和uptime相似,第一行给出了uptime的信息,后面给出用户信息。
    示例:
    # uptime
     下午 2点54分  运行 7 天 16 分钟  7 users,  平均负载:0.02, 0.06, 0.06
     
    # w
     下午 2点54分  运行 7 天 16 分钟  7 users,  平均负载:0.02, 0.06, 0.06
    用户名   终端号           登入时间  闲置   JCPU   PCPU  执行命令
    root     console      周五上午10点 3天   3:11     27  /usr/dt/bin/dtexec
    root     pts/11       周五上午11点 3天                -sh
    root     pts/13       周五上午11点 3天                -sh
    root     pts/15       下午 1点21分  1:07              telnet 162.105.183.8
    root     pts/12       周二上午11点     9  13:00       tcsh
     
    ========================================================================
    8、使用top工具监测性能
     
    top是第三方软件,需要另外安装,Solaris 8的top安装版本在sunserver1的/SoftWare下。top列出消耗CPU最多的15个进程,并不断更新。
     
    1)top命令有几个参数选项,仅介绍以下几种,其他的请参考文档:
    I   不显示空闲进程
    d count  更新结果count次退出,缺省无限大,ctl+c或ctl+d退出
    d time  连续两次刷新时间间隔,缺省5秒
    U username 只显示属于用户username的进程
     
    示例:
    # top
    列出消耗CPU最多的15个所有进程
     
    # top -I
    last pid:  8671;  load averages:  0.02,  0.02,  0.03                   17:28:1
    112 processes: 108 sleeping, 2 zombie, 1 stopped, 1 on cpu
    CPU states: 99.8% idle,  0.0% user,  0.2% kernel,  0.0% iowait,  0.0% swap
    Memory: 512M real, 162M free, 274M swap in use, 599M swap free
     
       PID USERNAME THR PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
      8671 root       1  59    0 2624K 1656K cpu      0:00  0.27% top
      6358 root       1  59    0   30M   21M sleep    7:42  0.03% Xsun
      8670 oracle     1  59    0  105M   80M sleep    0:00  0.03% oracle
      8669 oracle     4  59    0 9536K 5496K sleep    0:00  0.02% sqlplus
      1270 root      13  58    0   39M   17M sleep    2:04  0.02% java
     
     
    # top -U oracle
    last pid:  8673;  load averages:  0.02,  0.02,  0.03                   17:29:40
    112 processes: 108 sleeping, 2 zombie, 1 stopped, 1 on cpu
    CPU states: 99.8% idle,  0.0% user,  0.2% kernel,  0.0% iowait,  0.0% swap
    Memory: 512M real, 162M free, 274M swap in use, 599M swap free
     
       PID USERNAME THR PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND
      2294 oracle     1  48    0  105M   78M sleep    0:09  0.00% oracle
      2306 oracle     1  52    0   12M 6664K sleep    0:07  0.00% tnslsnr
      2292 oracle    11  59    0  107M   76M sleep    0:06  0.00% oracle
      8425 oracle    11  58    0  108M   84M sleep    0:01  0.00% oracle
      2288 oracle    29  59    0  108M   77M sleep    0:01  0.00% oracle
    … …
    仅列出oracle用户的进程
     
    2)和top一起使用交互命令
    d 改变显示数,如开始使用top –d 命令显示,按d可以改变显示数
    n 改变显示的进程数
    s 改变刷新的时间间隔
    k 杀掉指定的PID
    I或i 切换是否显示空闲进程
    ========================================================================
    9、 如何增加交换空间
     
    安装完系统后无法改变分区大小,但是可以增加/删除交换文件,效果类似交换分区。下列命令在根目录下创建一个500MB的交换文件,名为swapfile
    # mkfile 500m /swapfile
     
    使之生效
    # swap -a /swapfile
    现在你有了额外的500MB交换空间,为了每次重启后依旧有效,编辑/etc/vfstab文件,增加如下行
    /swapfile - - swap - no –
     
    # swap -l
    这里"-l"意味着"list",显示所有交换空间。仔细阅读"swap"和"mkfile"的手册页。
     
    ========================================================================
     
     
     
     
    四、检查网络性能工具
    ========================================================================
    1、snoop诊断网络报文工具
     
    snoop捕获并显示诊断网络问题发出的网络报文
    示例:
    # snoop
    # snoop –r |grep 162.105.183.49
    此命令锁定某一ip传输过来的所有网络报文,可以捕获输入和回显,甚至口令的明码,很恐怖吧:)
    ========================================================================
    2、nfsstat监测NFS系统
     
    nfsstat显示了客户机和服务器的NFS统计信息,包括超时、重传、等待错误及有关cache命中和失效的信息。可以判断是否是NFS造成网络性能下降。
    示例:
    # nfsstat |more
     
    参见nfsstat的帮助文档和参数。
    ========================================================================
    3、netstat监测网络接口
     
    1)# netstat –a
    显示关于internet协议套接字状态的统计结果
     
    2)# netstat –i 2
    显示关于网络接口的统计结果,此命令很重要。2为间隔时间参数,可调。
    # netstat -i 2
        input   lo0:1     output           input  (Total)    output
    packets errs  packets errs  colls  packets errs  packets errs  colls
    0       0     0       0     0      3505609 0     3263609 1     35792
    0       0     0       0     0      8       0     5       0     0
    0       0     0       0     0      18      0     12      0     0
     
    3)# netstat –n
    缺省时netstat将地址解析成主机名,使用n选项,取消解析使用ip地址
     
    4)# netstat –r
    显示主机的路由表
    # netstat -r
    Routing Table: IPv4
      Destination           Gateway           Flags  Ref   Use   Interface
    -------------------- -------------------- ----- ----- ------ ---------
    clusternode2-priv    clusternode2-priv     UGH      1      0
    172.16.194.4         clusternode1-priv     U        1      8  qfe2:2
    172.16.0.128         172.16.0.129          U        1      8  qfe2
    172.16.1.0           172.16.1.1            U        1      8  qfe0
    162.105.183.0        sunserver1            U        1     24  eri0
    162.105.183.0        sunserver             U        1      0  eri0:1
    172.16.193.0         localhost             U        1      0  lo0
    224.0.0.0            sunserver1            U        1      0  eri0
    default              162.105.183.1         UG       1     10
    localhost            localhost             UH       1      0  lo0
     
    5)# netstat –s
    显示各协议的统计信息。
     
    6)# netstat -s -P tcp
    查香tcp协议的统计量
     
    7)# netstat -na -P tcp
    查看哪些端口是打开的
    ========================================================================
    4、Solaris下如何知道哪个进程使用了哪个端口
     
    netstat -na -P tcp查看哪些端口是打开的,但它没有报告是哪个进程打开的。附件ps9000脚本可以列出每个打开的端口被哪个进程使用。Root身份可以查看所有进程,其他身份可以查看本用户的进程。
     
    ========================================================================
    5、ping 诊断网络连接和阻塞问题
     
    1)ping ip
    示例:
    # ping 162.105.183.15
    162.105.183.15 is alive
     
    2)ping –s [ip] 一直ping 某个地址,按ctl+c或d终止,类似于win下的-t选项
    示例:
    # ping –s 162.105.183.8
     
    3)ping -p [port] [ip] 检查某个端口
    示例:
    # ping –p 7001 162.105.183.12
    162.105.183.12 is alive
    # ping 9001 162.105.183.12
    ping: bad timeout: 162.105.183.12
     
    4)ping –a ip
    示例:
    # ping –a 162.105.183.49
    162.105.183.49 (162.105.183.49) is alive
    ========================================================================
    6、ipcs显示与内部进程通信有关的统计信息
     
    示例:
    # ipcs
    IPC status from <running system> as of 2003年03月10日 星期一 16时58分11秒 CST
    T         ID      KEY        MODE        OWNER    GROUP
    Message Queues:
    q          0   0x2e781d5  --rw-r--r--     root     root
    q          1   0x2e781d2  -Rr---w--w-     root     root
    Shared Memory:
    m          0   0x50000e7e --rw-r--r--     root     root
    m        201   0x4c0002d0 --rw-rw-r--   lanman      sys
    m          2   0xd961604c --rw-r-----   oracle oinstall
    Semaphores:
    s     196608   0xbaa9a0cc --ra-r-----   oracle oinstall
    s          1   0xbaa9a0cd --ra-r-----   oracle oinstall
    s          2   0xbaa9a0ce --ra-r-----   oracle oinstall
    ========================================================================
    7、traceroute显示路由到目的地主机的报文,用于诊断网络拥堵
     
    traceroute ip
    示例:
    # traceroute www.pku.edu.cn
    traceroute to rock.pku.edu.cn (162.105.129.12), 30 hops max, 40 byte packets
     1  162.105.183.1 (162.105.183.1)  0.916 ms  0.772 ms  0.705 ms
     2  162.105.170.1 (162.105.170.1)  1.262 ms  1.144 ms  1.131 ms
     3  162.105.162.126 (162.105.162.126)  1.934 ms  1.304 ms  1.135 ms
     4  * * *
     5  * * *
    ========================================================================
    8、route get ip获取通过的网关
     
    # route get www.sina.com.cn
       route to: sina37-34.sina.com.cn
    destination: default
           mask: default
        gateway: 162.105.183.1
      interface: hme0
          flags: <UP,GATEWAY,DONE,STATIC>
     recvpipe  sendpipe  ssthresh    rtt,ms rttvar,ms  hopcount      mtu     expire
           0         0         0         0         0         0      1500         0

     

  • 两个重要的.profile文件

    2009-05-15 18:00:07

    两个重要的profile文件
    UNIX/Xenix系统中有两个对用户而言必不可少的文件——etc目录下的profile文件和
    用户主目录($HOME)下的.profile文件。前者是系统文件,对系统下全体用户起作用,后者是
    用户自己的"私人"文件。
    这两个文件的功能类似于DOS系统下的Autoexec.bat文件,不同之处在于Autoexec.bat
    件可以为空,而这两个文件内容不仅不能为空,而且必须存在。它们在用户登录(Login注册)
    ,被系统自动执行,为用户设置工作环境,若使用得当,可发挥强大作用。

    etc
    目录下的profile文件是每一个用户登录时,操作系统首先执行的文件,然后再将控制
    权交给用户主目录下的.profile文件,当系统给出主提示符($PS1),用户就可以开始自己的
    工作了。以上全过程对用户而言是透明的。
    /etc/profile
    文件的主要功能包括:显示UNIX/Xenix版本信息或者系统专用应用程序的
    提示信息,设置掩码(umask),对终端和邮箱(mail box)进行处理,对非root用户禁止使用news命令等。
    因为/etc/profile文件的作用范围是全体用户,所以非共性的设置应放在用户自己的.profile文件中。下面就详细讲述.profile文件。
    .profile
    是隐含文件,普通的列目录命令(llslf,ls-l)显示不出该文件。UNIX/Xenix系统所有隐藏文件前都有"."符。
    显示UNIX/Xenix系统中的隐含文件属性用以下命令:
    $l - a
    原始的.profile文件是系统管理员使用Sysadmsh命令或mkdev user命令创建用户时,

    统为该用户自动生成的,用户可使用vi编辑该文件为自己所用。.profile文件产生的效用直
    至用户退出系统后才消失,而当用户重新登录时,又开始发挥作用。
    设置终端类型
    用户使用UNIX/Xenix系统时可能会遇到这样一个现象:每次登录后,系统会要求用户敲入
    终端类型,然后在用户输入相应信息后,才给出提示符。这是为什么呢?
    原来在原始.profile文件中有这样一个语句
    :
    eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
    该语句的作用是要求用户敲入所使用终端的类型并进行测试。

    如果我们在.profile文件中加入以下命令:
    TERM=terminal-name
    TERM
    变量指明终端类型。

    :TERM=vt100,并且注释掉eval语句。这样处理以后,用户再注册时,就无需敲入终端类
    型了。
    定义PATH变量
    该变量类似于DOS系统的PATH变量,其格式如下:
    PATH=$PATH:$HOME/bin:/usr/informix/bin:.
    说明
    :

    1.
    该语句未尾的"·"表示当前路径,不可缺少
    ;

    2.
    不同路径间用":"隔开
    ;

    3.$PATH
    是系统中提供的默认变量,其初始值为
    /bin:/usr/bin;

    4.
    路径的顺序是很重要的,前后次序不宜随便颠倒。比如用户自编了一个与系统命

    令同名的可执行文件,并将其放在$HOME,并且打算使用这个命令而不是系统提供的同
    名命令,那么PATH应设置为:
    PATH=$HOME/bin:$PATH:/usr/informix/bin:.
    因为,若不同路径下有相同的命令或可执行文件,则以第一个路径下的为准。这时
    ,SHEL
    L
    先搜索$HOME/bin路径,发现其下的这个可执行文件,就为用户调用,而不会再运行/bin或者

    /usr/bin
    下的标准同名命令了。
    设置提示符
    用户可以将PS1(主提示符)PS2(辅助提示符)改为更受欢迎的形式。通常情况下,以超
    级用户登录时,主提示符为"#",其它用户为"$",PS2一般为"<"。修改提示符的方法如下:
    格式
    :PS1="$LOGNAME> "
    说明:将主提示符由默认值改为用户注册名。

    使用stty命令重设终端配置

    1.
    对数据传输方式进行设置
    :对奇偶校验位、波特率(bps)大小、停止位位数进行重新设置。

    2.
    字符处理
    1:stty nl
    系统只接受字符作为换行符。

    2:stty-nl
    系统以(RETURN)字符做为换行符。

    3:stty echo
    置击键后屏幕回显。

    4:stty-echo
    置击键后,屏幕无显示方式。


    3.
    特殊键定义
    1:
    stty erase escape #
    置抹除键(erase)escape

    重置抹除键键值,缺省值为"#"
    2:
    stty kill delete #
    置删行符(kill)delete

    重置删行符,缺省值为"@"
    3:
    stty eof ctrl-D #
    置文件结束符(eof)ctr-D

    重置文件结束符。
    4:
    stty intr ctrl-C #
    中断键可中止系统中绝大多数前台进程,是很重要的终端参数

    重置终端中断键为ctrl-C键。

    4.
    其它常用stty命令
    1:stty sane ctrl-J
    若终端功能发生紊乱,可用该命令来重置终端设置,使之恢复其出厂参数。该命令以
    "ct
    rl-J"
    作为行结束符,因为在终端参数紊乱的情况下,RETURN键的功能很可能已经失效,
    ctr
    l-J
    命令是系统提供的强行回车键,在绝大多数情况下不会失效。

    2:stty -a
    该命令可以显示出终端的所有参数。

    以上stty命令是UNIX系统提供的,可随时使用,用户可据自己的需要在.profile文件中设
    定。
    用户自定义SHELL变量
    用户自定义SHELL变量是很有用的,使用情况也很广泛。其功能有些类似于C语言的宏定
    (#define)。最常见的情况是将自己常去的而且很深的路径自定义为一个固定变量,放在.
    profile
    文件中。

    :ML=/usr/work/source/firstml/secoudml
    这时,若用户在主提示符($PS1)下键入
    :
    $>cd $ML
    $>pwd #
    显示当前路径

    屏幕显示当前路径为:/usr/work/source/firstml/secondml
    需注意的是:无论使用SHELL专用变量还是自定义变量,均需在变量(大写拼写)前加上"$
    "
    符。并且,在定义完所有变量后,需在.profile中使用export语句,它的作用是将变量设置在

    SHELL
    环境中,以在任意路径下使用。
    :export SHELL ML TERM PATH MAIL PS1
    使用Shell内部命令

    用户可在.profile文件内使用SHELL内部命令和操作系统命令,Shell常用命令见下表。
    @@28173000.GIF;
    1@@
    .profile
    文件在Client/Server结构中的应用
    <

  • set命令

    2009-05-15 17:35:39

    用set命令可以设置各种shell选项或者列出shell变量.单个选项设置常用的特性.在某些选项之后-o参数将特殊特性打开.在某些选项之后使用+o参数将关闭某些特性,不带任何参数的set命令将显示shell的全部变量.除非遇到非法的选项,否则set总是返回ture.

    当shell被调用时,可以列出全部的选项.当前的选项集列在$-中.在option参数被处理后,其他的参数被赋值到位置参数中($1,$2,...,$n)

    set [--abefhkmnptuvxldCHP] [-o option name] [arguments ...]

    选项 说明
    -a 自动向已经修改的变量或为导出后序命令的变量作出标志
    -b 不是在原提示符之前,而是立即引发终止后台任务的状态表表
    -e 如果命令带非零值返回,立即退出
    -f 禁止带扩展名的路径
    -h 定义函数时,定位和存储函数命令,当函数被执行时,通常查询函数命令
    -k 所有的关键词参数,而不只是那些命令名前的关键词参数,被放在环境命令中
    -m 监视器模式,启动任务控制.此选项默认支持系统shell交互.后台进程以单独的进程组运行,在每次完成任务时显示包含退出的状态行
    -n 读取命令但不执行命令.通常监查shell脚本的句法错误.交互shell被忽略
    -o option-name 选项名可以是下列之一:
    选项 说明
    allexport 同-a选项
    braceexpand shell执行花括号扩展,在默认情况下起作用
    emacs 使用emacs风格命令行编辑接口.除非shell以-noline-editing选项启动,否则当shell交互时,通过默认启动该选项
    errexit 同-e选项
    histexpand 同-H选项
    ignoreeof 其结果是好像shell命令IGNOREEOF=10被执行
    interactive 允许单词前带#号,以使得在交互shell中忽略命令行的全部字符-commands
    monitor 同-m选项
    noclobber 同-C选项
    noexec 同-n选项
    noglob 同-f选项
    nohash 同-d选项
    notify 同-b选项
    nounset 同-u选项
    physical 同-p选项
    posix 改变BASH属性以匹配标准,默认操作不同于POSIX1003.2标准
    verbose 同-v选项
    vi 使用vi风格的命令行编辑器
    XTRACE 同-x选项,如果没有给出选项名,显示当前选项值
    -p 打开特权模式(在此模式,$ENV文件被处理,不能从环境中继承
    shell函数.如果是有效用户ID而不是实用户组则自动启动.关闭此选项将使得有效用户和组IDs设置实用户和组IDs)
    -t 在读取命令并执行之后退出
    -u 当执行参数括展时,把非设置变量作为错误处理(如果扩展企图出现在非设置变量中,shell显示错误信息.如果不是交互式,则带非凌值退出)
    -v 输入行被读取时,显示shell输入行
    -x 在每个简单命令被扩展之后,显示PS4扩展值,之后是要执行的命令。打开shell的跟踪选项,从set -x执行的地方开始,对以后执行的所有命令,shell会在完成名替换、变量替换、命令替换和输入输出重定向后把命令显示在标准错误上,被跟踪的命令前面加上了加号。跟踪命令直到使用关闭命令set +x为止结束。
    -l 保存和恢复绑定在命令中的名称
    -d 禁止执行查找散列命令(通常,命令被保存在散列表中,一旦被找到就不再继续查找)
    -C 效果好像是执行了noclobber=shell命令
    -H 使用!风格的历史替代(当shell交互时,在默认情况下,此选项有效)
    -P 如果设置此参数,当执行改变目录命令cd时,不遵循符号链接,而是使用实际的目录
    如果在选项后没有参数,不设置位置参数.否则,即使一些参数以a选项开始,也要把位置参数设置为argument- 结束选项的信号,将引发其余的参数被赋值到位置参数中(-x和-v选项被关闭.如果没有argument,位置参数将保留未改变的参数)

Open Toolbar