`

LINUX指令大全

阅读更多
[size=small] 一、linux命令

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

  名称:locate 使用权限:所有使用者使用方式: locate [-q] [-d <path>] [--database=<path>] <search string> locate [-r <regexp>] [--regexp=<regexp>] locate [-qv] [-o <file>] [--output=<file>] locate [-e <dir1,dir2,...>] [-f <fstype1,...>] <[-l <level>] [-c] <[-U ] [-u]> locate [-Vh] [--version] [--help] 说明:

  locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有文件名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。

  在一般的distribution 之中,数据库的建立都被放在contab 中自动执行。一般使用者在使用时只要用

  # locate your_file_name

  的型式就可以了。参数:

  -u -U <dir> 建立数据库,-u 会由根目录开始,-U 则可以指定开始的位置。

  -e <dir> 将<dir> 排除在寻找的范围之外。

  -l <level> 如果<level> 是1.则激活安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为locate 必须至实际的档案系统中取得档案的权限资料。

  -f <filetype> 将特定的档案系统排除在外,例如我们没有到理要把proc 档案系统中的档案放在数据库中。

  -q 安静模式,不会显示任何错误讯息。

  -n <num> 至多显示<num> 个输出。

  -r <reg> 使用正规表达式<reg> 做寻找的条件。

  -o <file> 指定数据库存的名称。

  -d <dir> 指定数据库的路径

  -h 显示辅助讯息

  -v 显示更多的讯息

  -V 显示程序的版本讯息范例:

  locate chdrv : 寻找所有叫chdrv 的档案locate -n 100 a.out : 寻找所有叫a.out 的档案,但最多只显示100 个locate -u : 建立数据库

  名称: sync 使用权限: 系统管理者使用方式: sync 说明: linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到filesystem buffer 中,这个buffer 是一块内存空间,如果欲写入硬盘的资料存于此buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于buffer 中的资料强制写入硬盘中。

  名称:adduser 使用权限:系统管理员使用方式:adduser [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,...] [-m [-k skeleton_dir] | -M] [-p passwd] [-s shell] [-u uid [ -o] [-n] [-r] loginid 或adduser -D [-g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell] 附注:adduser 与useradd 指令为同一指令(经由符号连结symbolic link) 说明:新增使用者帐号或更新预设的使用者资料参数: -c comment 新使用者位于密码文件(通常是/etc/passwd)的批注资料-d home_dir 设定使用者的家目录为home_dir ,默认值为预设的home 后面加上使用者帐号loginid -e expire_date 设定此帐号的使用期限(格式为YYYY-MM-DD),默认值为永久有效-f inactive_time 范例:

  adduser是增加使用者,相对的,也有删除使用者的指令,userdel

  语法:userdel [login ID]

  名称:su 使用权限:所有使用者使用方式:su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG] 说明:变更为其它使用者的身份,除root 外,需要键入该使用者的密码参数: -f 或--fast 不必读激活档(如csh.cshrc 等),仅用于csh 或tcsh -m -p 或--preserve-environment 执行su 时不改变环境变量-c command 或--command=command 变更为帐号为USER 的使用者并执行指令(command)后再变回原来使用者-s shell 或--shell=shell 指定要执行的shell (bash csh tcsh 等),默认值为/etc/passwd 内的该使用者(USER) shell --help 显示说明文件--version 显示版本信息- -l 或--login 这个参数加了之后,就好象是重新login 为该使用者一样,大部份环境变量(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定USER ,内定是root USER 欲变更的使用者帐号

  ARG 传入新的shell 参数范例: su -c ls root 变更帐号为root 并在执行ls 指令后退出变回原使用者。su root -f 变更帐号为root 并传入-f 参数给新执行的shell。su - clsung 变更帐号为clsung 并改变工作目录至clsung 的家目录(home dir)。

  名称:sudo 使用权限:在/etc/sudoers 中有出现的使用者使用方式:sudo -V sudo -h sudo -l sudo -v sudo -k sudo -s sudo -H sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s sudo command 说明:以系统管理者的身份执行指令,也就是说,经由sudo 所执行的指令就好象是root 亲自执行参数: -V 显示版本编号-h 会显示版本编号及指令的使用方式说明-l 显示出自己(执行sudo 的使用者)的权限-v 因为sudo 在第一次执行时或是在N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过N 分钟,也会问密码-k 将会强迫使用者在下一次执行sudo 时问密码(不论有没有超过N 分钟) -b 将要执行的指令放在背景执行-p prompt 可以更改问密码的提示语,其中%u 会代换为使用者的帐号名称, %h 会显示主机名称-u username/#uid 不加此参数,代表要以root 的身份执行指令,而加了此参数,可以以username 的身份执行指令(#uid 为该username 的使用者号码) -s 执行环境变量中的SHELL 所指定的shell ,或是/etc/passwd 里所指定的shell -H 将环境变量中的HOME (家目录)指定为要变更身份的使用者家目录(如不加-u 参数就是系统管理者root ) command 要以系统管理者身份(或以-u 更改为其它人)执行的指令范例: sudo -l 列出目前的权限sudo -V 列出sudo 的版本信息

  名称:init 使用权限:开机时使用方式:init [0123456Ss] 说明:init 是所有行程(process)的父行程(parent),开机时一定会先从这个指令开始(可以用ps -aux 看看第一个行程就是init),并参考/etc/inittab 档来完成整个开机程序,共有八个执行层级(runlevel),而改变只能透过telinit 的指令来更改参数: 0 开机执行层级为0 ,用来关闭系统1 开机执行层级为1 ,用来进行单一使用者模式(single user mode) 4 开机执行层级为4 ,表示进入X window 时的模式6 开机执行层级为6 ,用来重新开机S 或s 不是直接使用的,配合开机执行层级1 时使用,当加上S 或s 表示开机后不参考/etc/inittab 檔235 请参照/etc/inittab 档案内容以及/etc/rc.d/rc2.d,/etc/rc.d/rc3.d,/etc/rc.d/rc5.d 等目录范例: 由于这并不是让使用者可以单独下指令的执行文件,请参照/etc/inittab

  名称:reboot 使用权限:系统管理者使用方式:reboot [-n] [-w] [-d] [-f] [-i] 说明:若系统的runlevel 为0 或6 ,则重新开机,否则以shutdown 指令(加上-r 参数)来取代参数: -n : 在重开机前不做将内存资料写回硬盘的动作-w : 并不会真的重开机,只是把记录写到/var/log/wtmp 档案里-d : 不把记录写到/var/log/wtmp 档案里(-n 这个参数包含了-d) -f : 强迫重开机,不呼叫shutdown 这个指令-i : 在重开机之前先把所有网络相关的装置先停止范例: reboot 重开机。reboot -w 做个重开机的仿真(只有纪录并不会真的重开机)。

  名称:halt 使用权限:系统管理者使用方式:halt [-n] [-w] [-d] [-f] [-i] [-p] 说明:若系统的runlevel 为0 或6 ,则关闭系统,否则以shutdown 指令(加上-h 参数)来取代参数:

  -n : 在关机前不做将内存资料写回硬盘的动作-w : 并不会真的关机,只是把记录写到/var/log/wtmp 档案里-d : 不把记录写到/var/log/wtmp 档案里(-n 这个参数包含了-d) -f : 强迫关机,不呼叫shutdown 这个指令-i : 在关机之前先把所有网络相关的装置先停止-p : 当关机的时候,顺便做关闭电源(poweroff)的动作范例: halt -p 关闭系统后关闭电源。halt -d 关闭系统,但不留下纪录。

  名称: shutdown

  使用权限: 系统管理者

  使用方式: shutdown [-t seconds] [-rkhncfF] time [message]

  说明: shutdown 可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也?梢杂美粗乜?

  参数:

  -t seconds : 设定在几秒钟之后进行关机程序-k : 并不会真的关机,只是将警告讯息传送给所有只用者-r : 关机后重新开机-h : 关机后停机-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机-c : 取消目前已经进行中的关机动作-f : 关机时,不做fcsk 动作(检查linux 文件系统) -F : 关机时,强迫进行fsck 动作time : 设定关机的时间message : 传送给所有使用者的警告讯息

  名称:mattrib 使用权限:所有使用者使用方式: mattrib [-a|+a] [-h|+h] [-r|+r] [-s|+s] [-/] [-X] msdosfile [ msdosfiles ... ]说明:本程序可用来修改MS_DOS 档案的属性。参数: -a/+a 除去/设定备份属性。-h/+h 除去/设定隐藏属性。-r/+r 除去/设定只读属性。-s/+s 除去/设定系统属性。-/ 递归的处理包含所有子目录下的档案。-X 以较短的格式输出结果。

  范例: mattrib a: 列出A 槽MSDOS 格式磁盘上所有档案的属性。mattrib -h -s -r a:msdos.sys 除去A 槽磁盘上msdos.sys 档案的隐藏、系统与只读属性。mattrib -r -/ a:*.* 除去A 槽磁盘上包含子目录下所有档案的只读属性。

  名称:mcopy 使用权限:所有使用者使用方式: mcopy [-b/ptnvmoQOsSrRA] sourcefile targetfile mcopy [-b/ptnvmoQOsSrRA] sourcefile [ sourcefiles... ] targetdirectory mcopy [-tnvm] MSDOSsourcefile 说明: 本程序可用来复制MSDOS 格式档案到linux 中,或是由Linux 中复制MSDOS 档案到磁盘上。mcopy 可复制单一的档案到所指定的文件名称,或是复制数个档案到所指定的目录之中。来源与目的档案可为MSDOS 或是Linux 档案。参数: b 批次模式.这是为大量的档案复制进行最佳化的选项,但是当在复制档案过程中产生crash 时,会有安全性的问题产生。/ 递归的复制。包含目录所含档案与其下所有子目录中的档案。p 维持档案原来的属性。Q 当复制多个档案产生错误时,尽快结束程序。t 复制纯文本文件。将carriage return/line feeds 转换成line feeds 字符。n 在覆盖Linux 档案时不会出现警示讯息。o 在覆盖MSDOS 档案时不会出现警示讯息。m 维持档案原来的修改时间。当目的档案已存在,且使用-n 选项时,mcopy 会询问是否要覆盖或是另存新档。范例: mcopy a:autoexec.bat . 将A 槽磁盘根目录中的autoexec.bat 复制到目前工作目录之下。

  指令名称: 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

  名称:mdel 使用权限:所有使用者使用方式: mdel [-v] msdosfile [ msdosfiles ... ] 说明: 本程序可用来删除MSDOS 格式的档案。在删除只读文件之前会先有提示讯息产生。参数: -v 显示更多的讯息。范例: mdel a:autoexec.bat . 将A 槽磁盘根目录中的autoexec.bat 删除。

  名称:mdeltree 使用权限:所有使用者使用方式: mdeltree [-v] msdosdirectory [msdosdirectories...] 说明: 本程序可用来删除MSDOS 格式档案及目录。mdeltree 会将所指定的目录与目录之下的所有档案与目录都删除掉。如果所指定的档案或目录不存在,则会传回错误讯息。

  参数: -v 显示更多的讯息。范例: mcopy a:msdosdir . 将A 槽磁盘根目录中的msdosdir 目录以下的档案与目录都删除掉。

  名称:mlabel 使用权限:所有使用者使用方式: mlabel [-vcs] drive:[new_label] 说明: 本程序可设定磁盘的卷标(Label)。如果磁盘上设定过卷标,mlabel 会将他显示给使用者。如果没有指定新卷标并且没有指定c 或s 选项,mlabel 会提示使用者输入新的卷标。如果直接按下Enter ,就会将原本的卷标删除。参数: -v 更多的讯息。-c 清除原有的卷标,不出现提示讯息。-s 显示目前?木肀辏怀鱿痔崾狙断ⅰ7独? mlabel a:newlabel。将A 槽磁盘的卷标更改为newlabel。

  名称:mcd 使用权限:所有使用者使用方式: mcd [msdosdirectory] 说明:可变更mtools 系列指令目前在MSDOS 磁盘上的工作目录。与MSDOS 的CD 指令不同,mcd 亦可变更工作磁盘。参数: 没有参数时会传回目前的工作目录。范例: mcd a: emp 变更目前工作目录到a: emp 中。mcd 传回目前工作目录。

  名称: mkdir

  使用权限:于目前目录有适当权限的所有使用者

  使用方式:mkdir [-p] dirName

  说明:建立名称为dirName 之子目录。

  参数:-p 确保目录名称存在,不存在的就建一个。

  范例:

  在工作目录下,建立一个名为AAA 的子目录:

  mkdir AAA

  在工作目录下的BBB 目录中,建立一个名为Test 的子目录。若BBB 目录原本不存在,则建立一个。(注:本例若不加-p,且原本BBB目录不存在,则产生错误。)

  mkdir -p BBB/Test

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

  touch 也可以制造一个空档(0 byte),例如DHCP Server 所需要的/etc.dbcpd.leases,dhcpd必须要有这个档案才能运作正常。[root@/root]#touch /etc/dhcpd.leases [root@/root]#ls –l /etc/dhcpd.less -rw-r—r—l root root 0 Jul 3 05:50 /etc/dhcpd.leases

  名称: 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 会进入交谈模式并要求输?胫噶罨虺绦颍蹦闶淙胪旰蟀聪耤trl+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 :

  t 5pm + 2 weeks /bin/ls

  明天的17:20 执行/bin/date :

  at 17:20 tomorrow /bin/date

  1999 年的最后一天的最后一分钟印出the end of world !

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

  范例:

  把textfile1 的档案内容加上行号后输入textfile2这个档案里

  cat –n textfile1 > textfile2

  把textfile1 和textfile2 的档案内容加上行号(空白行不加)之后将内容附加到textfile3 里

  cat –b textfile1 textfile2 >>textfile3

  名称: crontab

  使用权限: 所有使用者

  使用方式:

  crontab [ -u user ] file

  crontab [ -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 ?种拥降赽 分钟这段时间内要执行,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 即可。

  名称: sleep

  使用权限: 所有使用者

  使用方式: sleep [--help] [--version] number[smhd]

  说明: sleep 可以用来将目前动作延迟一段时间

  参数说明:

  --help : 显示辅助讯息--version : 显示版本编号number : 时间长度,后面可接s、m、h 或d 其中s 为秒,m 为分钟,h 为小时,d 为日数

  例子:

  显示目前时间后延迟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 中﹐这样下次重新开机时系统时间才会持续抱持最新的正确值。

  名称: 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 来设定这个格式,如此一来就不必每次登入系统都要设定一次。一般设定上,你可以用

  ' '

  表示跳栏,或者是用

  '

  '

  表示换行。每一项资料要用% 做为前导。如果要在字符串中使用百分比符号,就用。(学过C 语言的人大概会觉得很熟悉) time 指令可以显示的资源有四大项,分别是: Time resources Memory resources IO resources Command info 详细的内容如下:

  o Time Resources

  E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数字并不代表实际的CPU 时间。

  e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的CPU 时间。

  S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。

  U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。

  P 执行指令时CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的CPU 时间除以总时间。

  o 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。对同一个系统来说这是个常数

  o IO Resources

  F 此程序的主要内存页错误发生次数。所谓的主要内存页错误是指某一内存页已经置换到置换档(swap file)中,而且已经分配给其它程序。此时该页的内容必须从置换档里再读出来。

  R 此程序的次要内存页错误发生次数。所谓的次要内存页错误是指某一内存页虽然已经置换到置换档中,但尚未分配给其它程序。此时该页的内容并未被破坏,不必从置换档里读出来

  W 此程序被交换到置换档的次数

  c 此程序被强迫中断(像是分配到的CPU 时间耗尽)的次数

  w 此程序自愿中断(像是在等待某一个I/O 执行完毕,像是磁盘读取等等)的次数

  I 此程序所输入的档案数

  O 此程序所输出的档案数

  r 此程序所收到的Socket Message

  s 此程序所送出的Socket Message

  k 此程序所收到的信号( Signal )数量

  o Command Info

  C 执行时的参数以及指令名称

  x 指令的结束代码( Exit Status )

  -p or --portability 这个选项会自动把显示格式设定成为: real %e user %U sys %S 这么做的目的是为了与POSIX 规格兼容。

  -v or --verbose 这个选项会把所有程序中用到的资源通通列出来,不但如一般英文语句,还有说?鳌6圆幌牖ㄊ奔淙ナ煜案袷缴瓒ɑ蚴歉崭湛冀哟フ飧鲋噶畹娜讼嗟庇杏谩?

  范例:

  利用下面的指令

  time -v ps -aux

  我们可以获得执行ps -aux 的结果和所花费的系统资源。如下面所列的资料:

  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd] root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod] ...... root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux Command being timed: "ps -aux" User time (seconds): 0.05 System time (seconds): 0.06 Percent of CPU this job got: 68% Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 0 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 238 Minor (reclaiming a frame) page faults: 46 Voluntary context switches: 0 Involuntary context switches: 0 Swaps: 0 File system inputs: 0 File system outputs: 0

  Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0

  名称: uptime 使用权限: 所有使用者使用方式: uptime [-V] 说明: uptime 提供使用者下面的信息,不需其它参数:

  1. 现在的时间

  2. 系统开机运转到现在经过的时间

  3. 联机的使用者??

  4. 最近一分钟,五分钟和十五分钟的系统负载

  参数: -V 显示版本信息。范例: uptime 其结果为: 10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

  指令名称: chown

  使用权限: root

  使用方式: chmod [-cfhvR] [--help] [--version] user[:group] file...

  说明: linux/Unix 是多人多任务操作系统﹐所有的档案皆有拥有者。利用chown 可以将档案的拥有者加以改变。一般来说﹐这个指令只有是由系统管理者(root)所使用﹐一般使用者没有权限可以改变别人的档案拥有者﹐也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。

  参数:

  user : 新的档案拥有者的使用者IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改﹐才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更﹐而非该link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递归的方式逐个变更)--help : 显示辅助说明--version : 显示版本

  范例:

  将档案file1.txt 的拥有者设为users 群体的使用者jessie :

  chown jessie:users file1.txt

  将目前目录下的所有档案与子目录的拥有者皆设为users 群体的使用者lamport :

  chmod -R lamport:users *

  名称:chfn

  使用权限:所有使用者

  用法:shell>> chfn

  说明:提供使用者更改个人信息?糜趂inger 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 可以让使用者查询一些其它使用者的资料。会列出来的资料有:

  1. Login Name

  2. User Name

  3. Home directory

  4. Shell

  5. Login status

  6. mail status

  7. .plan

  8. .project

  9. .forward

  其中.plan ,.project 和.forward 就是使用者在他的Home Directory 里的.plan , .project 和.forward 等档案里的资料。如果没有就没有。finger 指令并不限定于在同一服务器上查询,也可以寻找某一个远程服务器上的使用者。只要给一个像是E-mail address 一般的地址即可。

  参数:

  -l 多行显示。

  -s 单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远程服务器的使用者,这个选项无效。

  范例:下列指令可以查询本机管理员的数据:

  finger root

  其结果如下:

  Login: root Name: root Directory: /root Shell: /bin/bash Never logged in. No mail. No Plan.

  名称:last

  使用权限:所有使用者

  使用方式:shell>> last [options]

  说明:显示系统开机以来获是从每月初登入者的讯息

  参数:

  -R 省略hostname 的字段

  -num 展示前num 个

  username 展示username 的登入讯息

  tty 限制登入讯息包含终端机代号

  范例:

  shell>> last -R -2

  johnney pts/1 Mon Aug 14 20:42 still logged in

  johnney pts/0 Mon Aug 14 19:59 still logged in

  wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp

  shell>> last -2 minery

  minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)

  minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)

  wtmp begins Tue Aug 1 09:01:10 2000

  名称: who

  使用权线: 所有使用者都可使用

  使用方式: who - [husfV] [user]

  说明: 显示系统中有那些使用者正在上面,显示的数据包含了使用者ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。

  参数:

  -h : 不要显示标题列-u : 不要显示使用者的动作/工作-s : 使用简短的格式来显示-f : 不要显示使用者的上线位置-V : 显示程序版本

  名称:/etc/aliases 使用权限:系统管理者使用方式: 请用newaliases 更新数据库说明:

  sendmail 会使用一个在/etc/aliases 中的档案做使用者名称转换的动作。当sendmail 收到一个要送给xxx 的信时,它会依据aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如mailing list 就会用到这个功能,在mailinglist 中,我们可能会创造一个叫redlinux@link.ece.uci.edu 的mailinglist,但实际上并没有一个叫redlinux 的使用者。实际aliases 档的内容是将送给这个使用者的信都收给mailing list 处理程序负责分送的工作。

  /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进制元格式的/etc/aliases.db。newaliases 的功能传是将/etc/aliases 转换成一个sendmail 所能了解的数据库。范例:

  # newaliases

  下面命令会做相同的事,

  # sendmail -bi

  相关命令: mail, mailq, newaliases, sendmail

  名称:mail

  使用权限:所有使用者

  使用方式:mail [-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

  名称:cp

  使用权限:所有使用者

  使用方式:

  cp [options] source dest cp [options] source... directory

  说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

  参数:

  -a 尽可能将档案状态、权限等资料都照原状予以复制。-r 若source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。

  指令:mesg

  使用权限: 所有使用者

  使用方式: mesg [y|n]

  说明: 决定是否允许其它人传讯息到自己的终端机接口

  参数:

  y : 允许讯息传到终端机接口上。n : 不允许讯息传到终端机接口上。如果没有设定,则讯息传递与否则由终端机接口目前状态而定。

  例子:

  改变目前讯息设定,改成不允许讯息传到终端机接口上:

  mesg n

  与mesg 相关的指令有: talk,write,wall。

  名称:/etc/aliases 使用权限:系统管理者使用方式: newaliases 说明:

  sendmail 会使用一个在/etc/aliases 中的档案做使用者名称转换的动作。当sendmail 收到一个要送给xxx 的信时,它会依据aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如mailing list 就会用到这个功能,在mailinglist 中,我们可能会创造一个叫redlinux@link.ece.uci.edu 的mailinglist,但实际上并没有一个叫redlinux 的使用者。实际aliases 档的内容是将送给这个使用者的信都收给mailing list 处理程序负责分送的工作。

  /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进制元格式的/etc/aliases.db。newaliases 的功能传是将/etc/aliases 转换成一个sendmail 所能了解的数据库。

  参数:没有任何参数。范例:

  # newaliases

  下面命令会做相同的事,

  # sendmail -bi

  相关命令: mail, mailq, newaliases, sendmail

  名称: talk

  使用权限: 所有使用者

  使用方式:

? alk 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,则此时讯席将无法传给对方,

  名称: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 将k的优先次序加10并执行

  注意: 优先序(priority) 为操作系统用来决定CPU 分配的参数,linux 使用『回合制(round-robin)』的算法来做CPU 排程,优先序越高,所可能获得的CPU时间就越多。

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

  名称: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使用率

  VSZ:占用的内存使用率

  RSS:占用的虚拟内存大小

  TTY:占用的内存大小

  STAT:该行程的状态

  D:不可中断的静止

  R:正在执行中

  S:静止状态

  T:暂停执行

  Z:不存在但暂时无法消除

  W:没有足够的内存分页可分配

  <:高的先序的行程

  N:低优先序的行程

  L:有内存分页分配并锁在内存内

  START:行程开始时间

  COMMAND:所执行的指令。

  名称:cut

  使用权限:所有使用者

  用法:cut -cnum1-num2 filename

  说明:显示每行从开头算起num1 到num2 的文字。

  范例:

  shell>> cat example

  test2

  this is test1

  shell>> cut -c0-6 example ## print 开头算起前6 个字符

  test2

  this i

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

  pstree init-+-amd |-apmd

  |-atd |-httpd---10*[httpd] %pstree -p init(1)-+-amd(447) |-apmd(105) |-atd(339) %pstree -c init-+-amd |-apmd |-atd |-httpd-+-httpd | |-httpd | |-httpd | |-httpd ....

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

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

  指令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

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

  名称: find 用法: find <path> <expression> 使用说明:

  将档案系统内符合expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同信息的组合,只有完全相符的才会被列出来。

  find 根据下列规则判断path 和expression,在命令列上第一个- ( ) , ! 之前的部份为path,之后的是expression。如果path 是空字符串则使用目前路径,如果expression 是空字符串则使用-print 为预设expression。

  expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

  -mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案-amin n : 在过去n 分钟内被读取过

  -anewer file : 比档案file 更晚被读取过的档案-atime n : 在过去n 天过读取过的档案-cmin n : 在过去n 分钟内被修改过-cnewer file :比档案file 更新的档案-ctime n : 在过去n 天过修改过的档案-empty : 空的档案-gid n or -group name : gid 是n 或是group 名称是name -ipath p, -path p : 路径名称符合p 的档案,ipath 会忽略大小写-name name, -iname name : 文件名称符合name 的档案。iname 会忽略大小写-size n : 档案大小是n 单位,b 代表512 字节的区块,c 表示字符数,k 表示kilo bytes,w 是二个字节。-type c : 档案类型是c 的档案。

  o d: 目录

  o c: 字型装置档案

  o b: 区块装置档案

  o p: 具名贮列

  o f: 一般档案

  o l: 符号连结

  o 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

  名称:compress

  使用权限:所有使用者

  使用方式:compress [-dfvcV] [-b maxbits] [file ...]

  说明: compress 是一个相当古老的unix 档案压缩指令﹐压缩后的档案会加上一个.Z 延伸档名以区别

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

  参数: c 输出结果至标准输出设备(一般
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics