名称: 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 详细的内容如下:
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
这个选项会把所有程序中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。
范例:
利用下面的指令
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
说明:提供使用者更改个人信息,用于finger and mail username
范例:
shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供finger 时的资料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]
名称:chsh
使用权限:所有使用者
用法:shell>> chsh
说明:更改使用者shell 设定
范例:
shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的shell]
[del]
shell>> chsh -l ### 展示/etc/shells 档案内容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
名称: finger
使用权限: 所有使用者
使用方式: finger [options] user[@address]
说明:finger
可以让使用者查询一些其它使用者的资料。会列出来的资料有:
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
使用权限: 所有使用者
使用方式:
talk person [ttyname]
说明: 与其它使用者对谈
参数:
person :
预备对谈的使用者帐号,如果该使用者在其它机器上,则可输入person@machine.name
ttyname : 如果使用者同时有两个以上的tty 联机,可以自行选择合适的tty
传讯息
例子.1 :
与现在机器上的使用者Rollaend对谈,此时Rollaend 只有一个联机:
talk Rollaend
接下来就是等Rollaend响应,若Rollaend接受,则Rollaend输入`talk
jzlee`即可开始对谈,结束请按ctrl+c
例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈:
talk Rollaend@linuxfab.cx pts/2
接下来就是等Rollaend响应,若Rollaend接受,则Rollaend输入`talk
jzlee@jzlee.home`即可开始对谈,结束请按ctrl+c
注意: 若屏幕的字会出现不正常的字符,试着按ctrl+l
更新屏幕画面。
名称: wall
使用权限: 所有使用者
使用方式:
wall [ message ]
使用说明:
wall 会将讯息传给每一个mesg 设定为yes
的上线使用者。当使用终端机接口做为标准传入时, 讯息结束时需加上EOF
(通常用Ctrl+D)。
例子:
传讯息"hi" 给每一个使用者:
wall hi