Linux 指令大全

 
1、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
 
2、cd
使用权限 : 所有使用者
使用方式 : cd [dirName]
说明 : 变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录)。
另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。
 
范例 : 跳到 /usr/bin/ :
cd /usr/bin
 
跳到自己的 home directory :
cd ~
 
跳到目前目录的上上两层 :
cd ../..
 
3、chmod
使用权限 : 所有使用者
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
 
说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。
 
范例:
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
 
范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
 
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
 
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
 
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
 
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
 
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
 
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
 
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
 
范例:
chmod a=rwx file
 
chmod 777 file
 
效果相同
chmod ug=rwx,o=x file
 
chmod 771 file
 
效果相同
 
 
 
 
 
若用chmod 4755 filename可使此程式具有root的权限
 
 
指令名称 : chown
使用权限 : root
 
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
 
说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
 
把计 :
 
user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)--help : 显示辅助说明--version : 显示版本
 
范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt
 
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
 
 
名称:cp
使用权限:所有使用者
 
使用方式:
 
cp [options] source dest
cp [options] source... directory
 
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
 
把计
 
-a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范例:
将档案 aaa 复制(已存在),并命名为 bbb :
cp aaa bbb
 
将所有的C语言程式拷贝至 Finished 子目录中 :
cp *.c Finished
 
 
 
名称:cut
 
使用权限:所有使用者
 
用法:cut -cnum1-num2 filename
 
说明:显示每行从开头算起 num1 到 num2 的文字。
 
范例:
 
shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字元
test2
this i
 
 
名称 : find
用法 : find
使用说明 :
 
将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。
 
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression
 
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
 
-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比档案 file 更晚被读取过的档案
-atime n : 在过去 n 天过读取过的档案
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比档案 file 更新的档案
-ctime n : 在过去 n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结
s: socket
-pid n : process id 是 n 的档案
 
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
将目前目录及其子目录下所有延伸档名是 c 的档案列出来。
# find . -name "*.c"
 
 
将目前目录其其下子目录中所有一般档案列出
# find . -ftype f
 
 
将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出
# find . -ctime -20
 
 
 
名称:less
 
使用权限:所有使用者
 
使用方式:
 
less [Option] filename
 
说明:
less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动
以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。
 
 
范例:
 
 
指令名称 : ln
使用权限 : 所有使用者
 
使用方式 : ln [options] source dist,其中 option 的格式为 :
 
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。
 
不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
 
 
-f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式--help : 显示辅助说明--version : 显示版本
范例 :
将档案 yy 产生一个 symbolic link : zz
ln -s yy zz
 
将档案 yy 产生一个 hard link : zz
ln yy xx
 
 
 
名称:locate
使用权限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明:
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。
 
在一般的 distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
 
# locate your_file_name
 
的型式就可以了。 参数:
-u
-U
 
建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。
 
-e
 
排除在寻找的范围之外。
 
-l
如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
 
-f
将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。
 
-q
安静模式,不会显示任何错误讯息。
 
-n
至多显示 个输出。
 
-r
使用正规运算式 做寻找的条件。
 
-o
指定资料库存的名称。
 
-d
 
指定资料库的路径
 
-h
显示辅助讯息
 
-v
显示更多的讯息
 
-V
显示程式的版本讯息 范例:
 
locate chdrv : 寻找所有叫 chdrv 的档案
locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
locate -u : 建立资料库
 
 
名称 : ls
使用权限 : 所有使用者
 
使用方式 : ls [-alrtAFR] [name...]
 
说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。
 
 
-a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除档案名称外,亦将档案型态、权限、拥有者、档案大小等资讯详细列出
-r 将档案以相反次序显示(原定依英文字母次序)
-t 将档案依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出
 
范例:
列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
ls -ltr s*
 
将 /bin 目录以下所有目录及档案详细资料列出 :
ls -lR /bin
 
列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
ls -AF
 
名称:more
使用权限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
参数:-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, q to quit.] ,如果使用者按错键,则会显示 [Press h for instructions.] 而不是 哔 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的档案,可为复数个数
范例:
more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile 从第 20 行开始显示 testfile 之档案内容。
 
 
名称:mv
使用权限:所有使用者
 
使用方式:
 
mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。
参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。
 
范例:
 
将档案 aaa 更名为 bbb :
mv aaa bbb
 
将所有的C语言程式移至 Finished 子目录中 :
mv -i *.c
 
 
 
名称:rm
使用权限:所有使用者
 
使用方式:rm [options] name...
 
说明:删除档案及目录。
 
把计
 
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
范例:
删除所有C语言程式档;删除前逐一询问确认 :
rm -i *.c
 
将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished
 
 
 
名称:rmdir
使用权限:于目前目录有适当权限的所有使用者
 
使用方式: rmdir [-p] dirName
 
说明: 删除空的目录。
 
参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
 
范例:
 
将工作目录下,名为 AAA 的子目录删除 :
rmdir AAA
 
在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test
 
 
 
名称:split
使用权限:所有使用者
 
使用方式:split [OPTION] [INPUT [PREFIX]]
 
说明:
 
将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 `x。若没有 INPUT 档或为 `-,则从标准输入读进资料。
 
匡兜
 
-b, --bytes=SIZE
 
SIZE 值为每一输出档案的大小,单位为 byte。
-C, --line-bytes=SIZE
 
每一输出档中,单行的最大 byte 数。
-l, --lines=NUMBER
 
NUMBER 值为每一输出档的列数大小。
-NUMBER
 
与 -l NUMBER 相同。
--verbose
 
于每个输出档被开启前,列印出侦错资讯到标准错误输出。
--help
 
显示辅助资讯然后离开。
--version
 
列出版本资讯然后离开。
SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。
 
范例:
 
PostgresSQL 大型资料库备份与回存:
 
因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用 split进行档案分割。
 
 
% pg_dump dbname | split -b 1m - filename.dump.
 
 
 
重新载入
 
 
% createdb dbname
% cat filename.dump.* | pgsql dbname
 
 
 
名称:touch
使用权限:所有使用者
使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]
 
 
说明:
touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。
 
 
参数:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
 
 
范例:
 
 
最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。
 
touch file
touch file1 file2
 
将 file 的时间记录改为 5 月 6 日 18 点 3 分,公元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm ,就是月日时与分。
 
touch -c -t 05061803 file
touch -c -t 050618032000 file
 
将 file 的时间记录改变成与 referencefile 一样。
 
touch -r referencefile file
 
将 file 的时间记录改成 5 月 6 日 18 点 3 分,公元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。
 
touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
 
 
 
compress压缩文件
compress命令就像它的文件名那样是用来压缩文件的。这是Unix中出现得比较早的一个压缩程序,它通过使用自适应的Lemple-Ziv编码来缩小所指文件的大小。每一个文件将被一个带有.Z扩展名的压缩文件所代替,但文件的属主关系、访问时间和修改时间将保持不变。如果没有指点文件,则接受标准输入的文件进行压缩并送到标准输出。
 
compress命令格式是:
compress [option] [file]
 
与compress对应的有一个解压缩命令uncompress,其格式如下:
 
uncompress [option] [file]
 
它使“.Z”的压缩文件恢复。
 
compress和uncompress命令的选项如下:
 
◆-c 写到标准输出,不改变文件。
◆-f 强制压缩,即使文件并不真正减小或.Z文件已经存在,也进行压缩。
◆-v 显示每一个被压缩文件的缩小的百分比。
 
下面举例说明compress命令的用法:
 
#compress file
 
上面代码表明将生成压缩文件file.Z代替file,要解压缩输入:
 
#uncompress file.Z
 
注意,像使用gzip命令一样,使用uncompress命令时必须给出一个带有.Z扩展名的文件名,否则uncompress命令显示出错信息。
cpio建立档案文件
cpio命令可以从tar或者cpio档案文件中拷入或者拷出文件。因为cpio命令和tar命令兼容,所以我这里不再详细介绍它如何工作。但是这个命令具备一些tar命令没有的功能,如下所示:
◆ 支持cpio和tar两种档案文件格式;
◆ 支持许多老式磁带数据格式;
◆ 能够通过一个管道读取文件的文件名。
 
只有很少的Linux软件包是以cpio格式发行的。如果对cpio命令的详细情况感兴趣的话,可以阅读它的使用手册。
date指令
名称 : 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 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
gzip压缩文件
       gzip命令是用来压缩文件的。它不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
 
gzip命令的格式是:
gzip [option] [file]
 
gzip很容易使用。如果想压缩某个文件或者磁带档案文件,可输入下面的内容:
 
# gzip mydir.tar
 
在缺省的状态下,gzip会压缩文件、再加上一个.gz扩展名,然后删除掉原来的文件。如果想解压缩文件,可以使用gzip的对应程序命令gunzip或者gzip命令的-d解压缩参数。但是必须保证这个用于解压缩的文件有.gz(或者.Z、-gz、.z、-z、或者_z)扩展名,否则gzip命令和gunzip命令都会显示出错信息。如果想使用自己的扩展名,可以使用-S后缀参数,如下所示:
 
# gzip -S .gzipped mydir.tar
 
gzip还可以处理用zip命令、compress命令和pack命令压缩的文件包。如果想在压缩或者解压缩的过程中看到更多的信息,可以使用-l列清单参数看到文件在被压缩或解压缩的时候的文件长度。在前一个例子中,压缩完子目录mydir之后,可以使用gzip命令按照下面的方法得到有关的数据:
 
# gzip -l mydir.tar.gz
compressed uncompr.ratio uncompressed_name
312 21330 98.2% mydir.tar
 
此外,gzip还有一个很有用的参数-t,可以用来测试压缩文件的完整性。如果文件正常,gzip不会给出任何显示。如果想看到OK这两个字母,可以在测试某个文件时使用-tv参数。
 
Sleep
名称 : sleep
使用权限 : 所有使用者
 
使用方式 : sleep [--help] [--version] number[smhd]
 
说明 : sleep 可以用来将目前动作延迟一段时间
 
参数说明 :
 
--help : 显示辅助讯息
--version : 显示版本编号
number : 时间长度,后面可接 s、m、h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数
 
例子 :
显示目前时间后延迟 1 分钟,之后再次显示时间 :
date;sleep 1m;date
 
 
 
tar打包命令
tar 命令的格式是:
tar [option] <file>
       tar是“tape archive”(磁带存档)的简称,它出现在还没有软盘驱动器、硬盘和光盘驱动器的计算机早期阶段。那时软件的发行和备份都需要大卷的磁带,计算机上运行的头几个程序中就得有一个是磁带的阅读程序。随着时间的推移, tar命令逐渐变为一个将很多文件进行存档的工具,目前许多用于Linux操作系统的程序就是打包为tar档案文件的形式。
       tar命令有很多参数,利用f选项、设备或文件的名字可以指示tar命令将档案置于特定的设备或文件中。当为tar的档案创建一个文件时,这个文件名的扩展通常是如果指定了一个目录名,那么它所有的子目录都会被包含在档案之中。
 
利用tar命令和f选项的格式如下所示:
 
#tar [options]f archive-name.tar directory-and-filenames
 
       要创建一个档案应使用c选项,与f选项一起,c选项会在设备或文件中创建档案,应在f选项的左边输入这一选项。在下例中,目录mydir和它所有的子目录都被存入文件myarch.tar中。
 
#tar cf myarch.tar mydir
 
       如果想要改动已经存档的目录中的文件,可以使用u选项使tar更新档案中的文件。tar比较每一个档案文件与相应用户目录中文件最近一次修改的时间,然后将上一次存档之后又被修改过的文件拷贝到档案文件中去。在用户目录中新创建的文件也会被添加到档案文件中。在下面的例子中,用户用mydir目录中最近被修改或添加的文件来对myarch.tar文件进行更新。
 
#tar uf myarch.tar mydir
 
       如果想查看在一个档案中存储着哪些文件,可以使用tar命令和t选项。下面命令列出所有存储在myarch.tar档案中的文件:
 
#tar tf myarch.tar
 
       要将文件备份到一个特定的设备,只须把设备名作为档案。在下面的例子中,用户在/dev/fdo设备的软盘中创建了一个档案,并将mydir目录中所有的文件都拷贝到档案中。
 
#tar cf /dev/fdo mydir
 
要恢复设备磁盘中的文件,可使用xf选项:
#tar xf /dev/fdo
如果所备份的文件大小超过设备可用的存储器,比如软盘,此时就可以创建一个使用多个标号的tar档案。当使用m选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒再放入一张新的软盘。
 
#tar cmf /dev/fdo mydir
 
要想恢复几张盘中的档案,只要将第一张软盘放入软驱,然后输入有x和m选项的tar命令。必要时会被提醒放入另外一张软盘。
 
#tar xmf /dev/fdo
 
tar操作不会对档案文件实行压缩操作。如果想压缩档案文件,可以指示tar激活gzip实用工具,在存档之前对文件进行压缩。利用z选项,tar在对文件存档之前首先要使用gzip来压缩文件。当恢复文件时,同样的z选项将激活gzip对文件解压。
 
#tar czf myarch.tar mydir
 
值得注意的是,压缩档案中的单个文件和整体压缩档案是不同的。通常档案文件是为了便于传输而把几个文件组合成为一个tar文件。为了缩短传输时间,档案应当越小越好,可以将其压缩然后传送压缩后的版本。接收者可以对之解压缩,然后恢复tar文件。在tar文件上使用gzip将会产生有.tar.gz扩展名的文件。扩展名.gz被加到被压缩的gzip文件名之后。
 
下面的例子创建了myarch.tar的一个压缩的版本,它具有了.gz的扩展名。
 
#gzip myarch.tar
#ls
#myarch.tar.gz
 
tar命令虽然有非常多的参数,但是使用起来并不困难,可以快速而又简单地为任何需要的子目录生成档案文件。
 
首先,我们来建立一个有三个文件的子目录,再建立一个有另外三个文件的子目录,如下所示:
 
#mkdir mydir
#cd mydir
#touch file1 file2 file3
#mkdir mydir2
#cd mydir2
#touch file21 file22 file23
#cd../..
#tree mydir
mydir
file1
file2
file3
mydir2
file21
file22
file23
 
现在已经有了一个子目录和其中的文件,使用这个命令的c(生成)和f(文件)参数来生成一个tar档案文件:
 
# tar cf mydir.tar mydir
# ls -l *.tar
- r w - r - - r - - 1 bball u s e r s 10240 Jan 5 15 : 01 mydir. t a r
 
请注意,原来的子目录并没有发生变化。在缺省的情况下,tar命令不会删除原来的子目录和文件。如果想看看命令执行的过程,可以使用v参数,如下所示:
 
# tar cvf mydir.tar mydir
mydir/
mydir/file1
mydir/file2
mydir/file3
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file22
mydir/mydir2/file23
 
tar命令在进行操作的时候,就会把正在添加到档案文件中去的子目录和文件的文件名显示出来。使用w参数,即交互参数,这样tar命令在执行的过程当中会询问是否想加入每个文件。当想有选择地备份内容不多的子目录的时候,这样就非常地方便,如下所示:
 
# tar cwf mydir.tar mydir
add mydir?y
add mydir/file1?n
add mydir/file2?y
add mydir/file3?n
add mydir/mydir2?y
add mydir/mydir2/file21?y
add mydir/mydir2/file22?n
add mydir/mydir2/file23?y
 
在上面的例子中,没有把文件file1、file3和文件file22归档。可以使用tar命令的t参数列出档案文件中的内容,f参数定义操作所使用的tar档案文件,如下所示:
 
# tar tf mydir.tar
mydir/
mydir/file2
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file23
 
需要注意的是,如果参数的顺序放错了,tar命令会显示出错信息并退出。
 
下面就来看看如何来释放整个的档案文件或者其中的某一个文件。如果想释放其中所有的文件,可以同时使用-x释放参数和-f。为了了解命令执行的过程,还可以加上-v参数:
 
# tar xvf mydir.tar
mydir/
mydir/file2
mydir/mydir2/
mydir/mydir2/file21
mydir/mydir2/file23
 
如果只是想从档案文件中释放几个文件的话,可以再次使用w参数:
 
# tar xvwf mydir.tar
extract mydir/?y
mydir
extract mydir/file2?y
mydir/file2
extract mydir/mydir2/?y
mydir/mydir2/
extract mydir/mydir2/file21?y
mydir/mydir2/file21
extract mydir/mydir2/file23?y
mydir/mydir2/file23
 
上例表明查看了档案文件,并交互地释放了文件。如果只想从档案文件中释放某一个文件,可以在命令行中指定这个文件。作为示例,我先删除了原始的mydir子目录,然后使用一个空的子目录进行如下操作:
 
# tar xf mydir.tar mydir/mydir2/file23
# tree mydir
mydir
- - mydir2
- - file23
1 directory, 1 file
 
注意,正如所看到的只有一个文件被释放出来。虽然tar命令不会覆盖整个的子目录,但是它会覆盖掉那些有着相同文件名的文件。
 
值得一提的是,还可以使用其它程序,如BRU-2000或者taper脚本程序来备份系统或者选定的文件和子目录。OpenLinux操作系统也可以通过cron日程安排来自动进行文件的归档整理工作。
 
 
 
time
名称: time
使用权限: 所有使用者
 
使用方式: time [options] COMMAND [arguments]
 
说明: time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。
 
把计
 
-o or --output=FILE
设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
-a or --append
配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
-f FORMAT or --format=FORMAT
以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。
一般设定上,你可以用
t
表示跳栏,或者是用
n
表示换行。每一项资料要用 % 做为前导。如果要在字串中使用百分比符号,就用 。(学过 C 语言的人大概会觉得很熟悉)
time 指令可以显示的资源有四大项,分别是:
 
Time resources
Memory resources
IO resources
Command info
 
详细的内容如下:
 
 
Time Resources
E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数字并不代表实际的 CPU 时间。
e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的 CPU 时间。
S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
P 执行指令时 CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的 CPU 时间除以总时间。
 
 
Memory Resources
M 执行时所占用的实体记忆体的最大值。单位是 KB
t 执行时所占用的实体记忆体的平均值,单位是 KB
K 执行程序所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
D 执行程序的自有资料区(unshared data area)的平均大小,单位是 KB
p 执行程序的自有堆叠(unshared stack)的平均大小,单位是 KB
X 执行程序间共享内容(shared text)的平均值,单位是 KB
Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数
 
 
IO Resources
F 此程序的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给其他程序。此时该页的内容必须从置换档里再读出来。
R 此程序的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程序。此时该页的内容并未被破坏,不必从置换档里读出来
W 此程序被交换到置换档的次数
c 此程序被强迫中断(像是分配到的 CPU 时间耗尽)的次数
w 此程序自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
I 此程序所输入的档案数
O 此程序所输出的档案数
r 此程序所收到的 Socket Message
s 此程序所送出的 Socket Message
k 此程序所收到的信号 ( Signal )数量
 
 
Command Info
C 执行时的参数以及指令名称
x 指令的结束代码 ( Exit Status )
 
 
 
 
-p or --portability
这个选项会自动把显示格式设定成为:
real %e
user %U
sys %S
这么做的目的是为了与 POSIX 规格相容。
-v or --verbose
这个选项会把所有程式中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。
 
范例:
利用下面的指令
time -v ps -aux
 
我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
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
 
 
last
 
名称:last
 
使用权限:所有使用者
 
使用方式:shell>> last [options]
 
说明:显示系统开机以来获是从每月初登入者的讯息
 
把计
 
-R 省略 hostname 的栏位
-num 展示前 num 个
username 展示 uname 的登入讯息
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
 
tail
tail命令
 
同样,如果用户想查看文件的尾部,可以使用tail命令。
 
语法:tail [+ / - num ] [参数] 文件
 
说明:该命令显示一个文件的指定内容。它把指定文件的指定显示范围内的内容显示在标准输出上。如果没有给定文件名,则使用标准输入文件。
 
tail命令中各个选项的含义为:
 
+num 从第num行以后开始显示。
 
- num 从距文件尾num行处开始显示。如果省略num参数,系统默认值为10。
 
l 以文本行为num的计数单位。与参数选项+num或- num选项同时使用时,num表示要显示的文本行行数。
 
c 以字节为num的计数单位。与参数选项+num或- num选项同时使用时,num表示要显示的字符数。
 
(l、c选项可以省略,系统默认值为l,即按行计数)。
 
例如:
 
$ tail -4 example
 
将显示文件example的最后4行。
 
Cat
cat命令
 
功能1:在标准输出上显示文件。
 
语法:cat [ - 选项 ] 文件
 
说明:该命令功能之一是用来显示文件。它依次读取其后所指文件的内容并将其输出到标准输出。
 
cat命令中各个选项的含义为:
 
- v 用一种特殊形式显示控制字符,LFD与TAB除外。
 
加了- v选项后,- T和- E选项将起作用。其中:
 
- T 将TAB显示为“&Ugrave; I”。该选项需要与- v选项一起使用。即如果没有使用- v选项,则这个选项将被忽略。
 
- E 在每行的末尾显示一个$符。该选项需要与- v选项一起使用。
 
- u 输出不经过缓冲区。
 
- A 等于- vET。
 
- t 等于- vT。
 
- e 等于- vE。
 
例1:$ cat example.txt
 
则在屏幕上显示出example.txt 文件的内容。
 
本想今天去香山看红叶,无奈天公不作美没去成,真遗憾,但愿明天艳阳高照,使我们梦想成真。
 
 
 
 
例2:$ cat - A exam2.txt
 
则在屏幕上显示出exam2.txt 文件的内容,而且如果文件中含有特殊字符的话,一并显示。
 
 
I am a boy ! ùI You are a cute boy$
 
功能2:连接两个或多个文件
 
说明:该命令功能之二是用来将两个或多个文件连接起来。
 
例3:$ cat file1 file2 > file3
 
这样就把文件filel和文件file2的内容合并起来,放入文件file3中。(此时在屏幕上并不能直接看到该命令执行后的结果。若想看到连接后的文件内容,可以再使用“cat file3”。)
 
需要说明的是,当文件内容过多时,就带来一个问题,因为文本在屏幕上迅速地闪过,用户来不及看清其内容。因此,当文件内容较大时,一般可用more等命令分屏显示,以免因屏幕滚动太快而无法看清。
 
Head
head命令
 
如果用户希望查看一个文件究竟保存的是什么内容,可以只查看文件的头几行,而不必浏览整个文件。用head命令只显示文件或标准输入的头几行。
 
语法:head [- n ] 文件
 
功能:显示指定文件的前若干行。
 
说明:该命令显示每个指定文件的前面n行。如果没有给出n值,缺省设置为10。如果没有指定文件,head就从标准输入读取。例如显示文件example.c的前3行。
 
$ head - 3 example.c
 
/*-------------------------------------------*/
 
/* example1.c */
 
/*-------------------------------------------*/
 
grep,fgrep,egrep
 
grep、fgrep和egrep命令
 
  这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。
 
  这组命令在搜索与定位文件中特定的主题方面非常有用。要搜索的模式可以被认为是一些关键词,您可以用它们来搜索文件中包含的这些关键词。编写程序时,可以用它来寻找某一个函数,或是相关的词组。grep命令的搜索功能比fgrep强大,因为grep命令的搜索模式可以是正则表达式,而fgrep却不能。有关正则表达式请参见shell一章。
 
  该组命令中的每一个命令都有一组选项,利用这些选项可以改变其输出方式。例如,可以在搜索到的文本行上加入行号,或者只输出文本行的行号,或者输出所有与搜索模式不匹配的文本行,或只简单地输出已搜索到指定模式的文件名,并且可以指定在查找模式时忽略大小写。
 
  这组命令在指定的输入文件中查找与模式匹配的行。如果没有指定文件,则从标准输入中读取。正常情况下,每个匹配的行被显示到标准输出。如果要查找的文件是多个,则在每一行输出之前加上文件名。
 
  语法:
 
  grep [选项] [查找模式] [文件名1,文件名2,……]
 
  egrep [选项] [查找模式] [文件名1,文件名2,……]
 
  fgrep [选项] [查找模式] [文件名1,文件名2,……]
 
  这组命令各选项的含义为:
 
  - E 每个模式作为一个扩展的正则表达式对待。
 
  - F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。
 
  - b在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。
 
  - c 只显示匹配行的数量。
 
  - i 比较时不区分大小写。
 
  - h 在查找多个文件时,指示grep不要将文件名加入到输出之前。
 
  - l 显示首次匹配串所在的文件名并用换行符将其隔开。当在某文件中多次出现匹配串时,不重复显示此文件名。
 
  - n 在输出前加上匹配串所在行的行号(文件首行行号为1)。
 
  - v 只显示不包含匹配串的行。
 
  - x 只显示整行严格匹配的行。
 
  - e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。
 
  - f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。
 
  对该组命令的使用还需注意以下方面:
 
  在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。否则,Shell将把空格认为是命令行参数的定界符,而grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。
 
  $ grep ’text file’ example
 
   用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。
 
  $ grep data *
 
   特殊字符在搜索一组指定的文件时非常有用。例如,如果想搜索所有的C程序源文件中特定的模式,您可以用“*.c”来指定文件名列表。假设用户的 C程序中包含一些不必要的转向语句(goto语句),想要找到这些语句,可以用如下的命令来搜索并显示所有包含goto语句的代码行:
 
  $ grep goto *.c
 
  用户可以在命令行上键入搜索模式,也可以使用-f选项从指定文件中读取要搜索的模式。在文件中,每个搜索模式占一行。如果经常要搜索一组常见字符串时,这个功能非常有用。在下面的例子中,用户要在文件exam中搜索字符串“editor”和“create”,就把要搜索的模式放置在文件mypats中,然后,grep命令从文件mypats中读取要搜索的模式。
 
  $ cat mypats
 
  editor
 
  create
 
  $ grep -f mypats exam
skill,kill
名称: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 核心 /核心失败
 
其他相关的命令: kill
Cal
 
名称:cal
 
使用权限:所有使用者
 
使用方式:cal [-mjy] [month [year]]
 
说明:
 
显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:``cal 89 将不会是显示 1989 年的年历。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋旧历。
 
匡兜
 
-m : 以星期一为每周的第一天方式显示。
-j : 以凯撒历显示,即以一月一日起的天数显示。
-y : 显示今年年历。
 
范例:
 
cal : 显示本月的月历。
 
 
 
[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
 
[root@mylinux /root]#
 
 
cal 2001 : 显示公元 2001 年年历。
 
[root@mylinux /root]# cal 2001
2001
 
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31
 
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30
 
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
 
[root@mylinux /root]#
 
 
 
 
 
cal 5 2001 : 显示公元 2001 年 5 月月历。
 
 
 
[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
 
[root@mylinux /root]#
 
 
 
 
 
cal -m : 以星期一为每周的第一天方式,显示本月的月历。
 
 
 
[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
 
[root@mylinux /root]#
 
 
 
 
 
cal -jy : 以一月一日起的天数显示今年的年历。
 
 
 
[root@mylinux /root]# cal -jy
2000
 
January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182
 
July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305
 
November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366
 
[root@mylinux /root]#
 
 
Ps
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
 
au(x) 输出格式 :
 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
 
范例:
 
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........
 
 
Less
less命令
 
less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既可以向前又可以向后翻阅文件。
 
less命令的使用与more命令类似,在此就不赘述了,用户如有不清楚的地方可直接查看联机帮助。
 
用less命令显示文件时,若需要在文件中往前移动,按< b >键;要移动到用文件的百分比表示的某位置,则指定一个0到100之间的数,并按< p >即可。
 
例如,需要按页显示test文件
 
$ less test
Top
名称: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
 
指令:fstab
 
使用权限 : 超级使用者
 
使用方式 : 使用编辑器来修改 /etc/fstab (eg. vi /etc/fstab)
 
说明 : 存放档案系统与目录结构对应资料的档案
 
 
fstab 栏位说明:
 
第一栏(fs_spec): 实际的 device 名称
第二栏(fs_file): 对应到的目录结构(mount point)
第三栏(fs_vfstype):该 partition 的档案系统,常见的有:
 
minix、ext、ext2、msdos、iso9660、nfs、swap
第四栏(fs_mntops): 在 mount 时的参数
第五栏(fs_freq): 在使用 dump 时是否记录,不需要则输入0
第六栏(fs_passno): 决定在开机时执行 fsck 的先后顺序
 
例子 :
IDE 硬盘分成两个 partition 与一个 swap,还有一台光碟机跟一台软碟机的情形 :
 
 
/dev/hda1 / ext2 defaults 1 1
/dev/hda5 /home ext2 defaults 1 2
/dev/cdrom /mnt/cdrom iso9660 noauto,user,ro 0 0
/dev/hda6 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto,owner 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
 
名称: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)。
 
名称 : shutdown
 
使用权限 : 系统管理者
 
使用方式 : shutdown [-t seconds] [-rkhncfF] time [message]
 
说明 : shutdown 可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
 
参数 :
 
-t seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有只用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间
message : 传送给所有使用者的警告讯息
 
名称: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 做个重开机的模拟(只有纪录并不会真的重开机)。
 
名称: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]
 
名称 : mount
使用权限 : 系统管理者或/etc/fstab中允许的使用者
使用方式 :
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
说明 :
 
将某个档案的内容解读成档案系统,然后将其挂在目录的某个位置之上。当这个命令执行成功后,直到我们使用 umnount 将这个档案系统移除为止,这个命令之下的所有档案将暂时无法被调用。
 
这个命令可以被用来挂上任何的档案系统,你甚至可以用 -o loop 选项将某个一般的档案当成硬盘机分割挂上系统。这个功能对于 ramdisk,romdisk 或是 ISO 9660 的影像档之解读非常实用。
 
参数
 
-V
 
显示程序版本
-h
 
显示辅助讯息
-v
 
显示较讯息,通常和 -f 用来除错。
-a
将 /etc/fstab 中定义的所有档案系统挂上。
 
-F
这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
 
-f
通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
 
-n
一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
 
-s-r
等于 -o ro
 
-w
等于 -o rw
 
-L
将含有特定标签的硬盘分割挂上。
 
-U
将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
 
-t
指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
 
-o async
打开非同步模式,所有的档案读写动作都会用非同步模式执行。
 
-o sync
在同步模式下执行。
 
-o atime
-o noatime
当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
 
-o auto
-o noauto
打开/关闭自动挂上模式。
 
-o defaults
使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
 
-o dev
-o nodev-o exec
-o noexec
允许执行档被执行。
 
-o suid
-o nosuid
允许执行档在 root 权限下执行。
 
-o user
-o nouser
使用者可以执行 mount/umount 的动作。
 
-o remount
将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
 
-o ro
用唯读模式挂上。
 
-o rw
用可读写模式挂上。
 
-o loop=
使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
 
范例
 
将 /dev/hda1 挂在 /mnt 之下。
 
#mount /dev/hda1 /mnt
 
将 /dev/hda1 用唯读模式挂在 /mnt 之下。
 
#mount -o ro /dev/hda1 /mnt
 
 
将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
 
#mount -o loop /tmp/image.iso /mnt/cdrom
 
相关命令umount
 
指令:fdisk
 
用途:观察硬盘之实体使用情形与分割硬盘用。
 
使用方法:
 
      一、在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形。
 
      二、在 console 上输入 fdisk /dev/sda,可进入分割硬盘模式。
 
        1. 输入 m 显示所有命令列示。
 
        2. 输入 p 显示硬盘分割情形。
 
        3. 输入 a 设定硬盘启动区。
 
        4. 输入 n 设定新的硬盘分割区。
 
         4.1. 输入 e 硬盘为[延伸]分割区(extend)。
 
         4.2. 输入 p 硬盘为[主要]分割区(primary)。
 
        5. 输入 t 改变硬盘分割区属性。
 
        6. 输入 d 删除硬盘分割区属性。
 
        7. 输入 q 结束不存入硬盘分割区属性。
 
        8. 输入 w 结束并写入硬盘分割区属性。
 
指令:e2fsck
 
使用权限 : 超级使用者
 
使用方式 : e2fsck [-pacnydfvFV] [-b superblock] [-B blocksize] [-l|-L bad_blocks_file] [-C fd] device
 
说明 : 检查使用 Linux ext2 档案系统的 partition 是否正常工作
 
 
参数 :
 
device : 预备检查的硬盘 partition,例如:/dev/sda1
-a : 对 partition 做检查,若有问题便自动修复,等同 -p 的功能
-b : 设定存放 superblock 的位置
-B : 设定单位 block 的大小
-c : 检查该partition 是否有坏轨
-C file : 将检查的结果存到 file 中以便查看
-d : 列印 e2fsck 的 debug 结果
-f : 强制检查
-F : 在开始检查前,将device 的 buffer cache 清空,避免有错误发生
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
-L bad_blocks_file : 设定坏轨的block资料存到 bad_blocks_file 里面,若无该档则自动产生
-n : 将档案系统以[唯读]方式开启
-p : 对 partition 做检查,若有问题便自动修复
-v : 详细显示模式
-V : 显示出目前 e2fsck 的版本
-y : 预先设定所有检查时的问题均回答[是]
 
例子 :
检查 /dev/hda5 是否正常,如果有异常便自动修复,并且设定若有问答,均回答[是] :
e2fsck -a -y /dev/hda5
 
注意 :
 
大部份使用 e2fsck 来检查硬盘 partition 的情况时,通常都是情形特殊,因此最好先将该 partition umount,然后再执行 e2fsck 来做检查,若是要非要检查 / 时,则请进入 singal user mode 再执行。
 
名称:df
使用权限: 所有使用者>
使用方式: df [选项]... [FILE]...
 
显示档案系统的状况,或是看所有档案系统的状况(预设值)
 
 
-a, --all 包含所有的具有 0 Blocks 的档案系统
--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
-i, --inodes 列出 inode 资讯,不列出已使用 block
-k, --kilobytes 就像是 --block-size=1024
-l, --local 限制列出的档案结构
-m, --megabytes 就像 --block-size=1048576
--no-sync 取得资讯前不 sync (预设值)
-P, --portability 使用 POSIX 输出格式
--sync 在取得资讯前 sync
-t, --type=TYPE 限制列出档案系统的 TYPE
-T, --print-type 显示档案系统的形式
-x, --exclude-type=TYPE 限制列出档案系统不要显示 TYPE
-v (忽略)
--help 显示这个帮手并且离开
--version 输出版本资讯并且离开
 
名称: dd
使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file
 
使用方式:
dd [option]
 
 
如果你想要在线看 manual, 可以试试:
dd --help
 
或是
info dd
 
如果你想要看看这个版本如何:
dd --version
 
输入或输出
dd if=[STDIN] of=[STDOUT]
 
强迫输入或输出的Size为多少Bytes
bs: dd -ibs=[BYTE] -obs=[SIZE]
 
强迫一次只做多少个 Bytes
cbs=BYTES
 
跳过一段以后才输出
seek=BLOCKS
 
跳过一段以后才输入
skip=BLOCKS
 
当然你可以拿这个来方便的拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)
 
dd if=/dev/cdrom of=cdrom.iso
其中 if 后面以及 of 后面的内容依你的需求调整。
 
然后给系统这个指令就可以烧了:
 
cdrecord -v cdrom.iso
这篇不是在讲 cdrecord 的,所以上面的指令是最为简单但是不一定能符合您的硬件环境....
 
指令:clear
 
用途:清除萤幕用。
 
使用方法:在 console 上输入 clear。
 
名称: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
 
名称: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
 
名称:ps
使用权限:所有使用者
使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
 
au(x) 输出格式 :
 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
 
范例:
 
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........
 
名称: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
 
名称: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
 
 
cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容
 
 
cat 也可以用来制作 image file。例如要制作软碟的 image file,将软碟放好后打
cat /dev/fd0 > OUTFILE
 
相反的,如果想把 image file 写到软碟,请打
cat IMG_FILE > /dev/fd0
 
 
注:
1. OUTFILE 指输出的 image 档名。
2. IMG_FILE 指 image file。
3. 若从 image file 写回 device 时,device 容量需与相当。
4. 通常用在制作开机磁片。
 
名称 : chmod
 
使用权限 : 所有使用者
 
使用方式 : chmod [-cfvR] [--help] [--version] mode file...
 
说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。
 
参数 :
 
mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中
u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
 
范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
 
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
 
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt
 
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
 
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
 
此外chmod也可以用数字来表示权限如 chmod 777 file
语法为:chmod abc file
 
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
 
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
 
范例:
chmod a=rwx file
 
chmod 777 file
 
效果相同
chmod ug=rwx,o=x file
 
chmod 771 file
 
效果相同
 
若用chmod 4755 filename可使此程序具有root的权限
 
名称:cp
 
使用权限:所有使用者
 
使用方式:
 
cp [options] source dest
cp [options] source... directory
 
说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。
 
参数:
 
-a 尽可能将档案状态、权限等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范例:
将档案 aaa 复制(已存在),并命名为 bbb :
cp aaa bbb
 
将所有的C语言程序拷贝至 Finished 子目录中 :
cp *.c Finished
 
名称 : 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 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
 
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
 
每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 7 * * * /bin/ls
 
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
 
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s /"hi/" alex@domain.name < /tmp/maildata
 
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo /"haha/"
20 0-23/2 * * * echo /"haha/"
 
注意 :
 
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可
 
名称: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
 
名称: finger
 
使用权限: 所有使用者
 
使用方式: finger [options] user[@address]
 
说明:finger 可以让使用者查询一些其他使用者的资料。会列出来的资料有:
 
Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward
 
其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等档案里的资料。如果没有就没有。finger 指令并不限定于在同一服务器上查询,也可以寻找某一个远端服务器上的使用者。只要给一个像是 E-mail address 一般的地址即可。
参数:
 
-l
多行显示。
 
-s
单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。
 
范例:下列指令可以查询本机管理员的资料:
finger root
 
其结果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.
 
名称 : at
 
使用权限 : 所有使用者
 
使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME
 
说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程序或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点锺)等口语词。
 
如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks。
 
另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程序,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。
 
参数 :
 
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
 
例子 :
三天后的下午 5 点锺执行 /bin/ls :
at 5pm + 3 days /bin/ls
 
三个星期后的下午 5 点锺执行 /bin/ls :
at 5pm + 2 weeks /bin/ls
 
明天的 17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date
 
1999 年的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
 
名称:mv
 
使用权限:所有使用者
 
使用方式:
 
mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。
参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。
 
范例:
 
将档案 aaa 更名为 bbb :
mv aaa bbb
 
将所有的C语言程序移至 Finished 子目录中 :
mv -i *.c
 
名称:locate
使用权限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明:
 
  locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。
 
  在一般的 distribution 之中,数据库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
 
# locate your_file_name
 
的型式就可以了。 参数:
-u
-U
 
建立数据库,-u 会由根目录开始,-U 则可以指定开始的位置。
 
-e
 
排除在寻找的范围之外。
 
-l
如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
 
-f
将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在数据库中。
 
-q
安静模式,不会显示任何错误讯息。
 
-n
至多显示 个输出。
 
-r
使用正规运算式 做寻找的条件。
 
-o
指定数据库存的名称。
 
-d
 
指定数据库的路径
 
-h
显示辅助讯息
 
-v
显示更多的讯息
 
-V
显示程序的版本讯息 范例:
 
locate chdrv : 寻找所有叫 chdrv 的档案
locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
locate -u : 建立数据库
 
 
  locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)
 
  locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”*”或”?”等)来指定范本样式,如指定范本为kcpa*ner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括子目录在内的所有档案。
 
  locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行 loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
 
  不过第一次在执行update後再使用locate寻找档案常会失败,此时就要执行slocate ˉu该命令(也可执行updatedb指令,其效果相同)来更新slocate数据库,该命令会在/usr/sbin下产生slocate执行档,再由locate到此数据库寻找所要找的资料。
 
名称:rm
 
使用权限:所有使用者
 
使用方式:rm [options] name...
 
说明:删除档案及目录。
 
参数:
 
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
范例:
删除所有C语言程序档;删除前逐一询问确认 :
rm -i *.c
 
将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished
 
名称 : 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
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值