导航

linux 命令大全(2)

Posted on 2007-06-12 09:22  菜鸟都不容易  阅读(115)  评论(0编辑  收藏  举报
 名称:date
  使用权限:所有使用者
  使用方式:
  date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

  说明:
  date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:
  时间方面:

  %:印出 %
  %n:下一行
  %t:跳格
  %H:小时(00..23)
  %I:小时(01..12)
  %k:小时(0..23)
  %l:小时(1..12)
  %M:分钟(00..59)
  %p:显示本地 AM 或 PM
  %r:直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
  %s:从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  %S:秒(00..61)
  %T:直接显示时间 (24 小时制)
  %X:相当于 %H:%M:%S
  %Z:显示时区

  日期方面:
  %a:星期几 (Sun..Sat)
  %A:星期几 (Sunday..Saturday)
  %b:月份 (Jan..Dec)
  %B:月份 (January..December)
  %c:直接显示日期与时间
  %d:日 (01..31)
  %D:直接显示日期 (mm/dd/yy)
  %h:同 %b
  %j:一年中的第几天 (001..366)
  %m:月份 (01..12)
  %U:一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
  %w:一周中的第几天 (0..6)
  %W:一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
  %x:直接显示日期 (mm/dd/yy)
  %y:年份的最后两位数字 (00.99)
  %Y:完整年份 (0000..9999)

  若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
  把计:
  -d datestr:显示 datestr 中所设定的时间 (非系统时间)
  --help:显示辅助讯息
  -s datestr:将系统时间设为 datestr 中所设定的时间
  -u:显示目前的格林威治时间
  --version:显示版本编号
  例子:
  显示时间后跳行,再显示目前日期:
  date +%T%n%D
  显示月份与日数:
  date +%B %d

  显示日期与设定时间(12:34:56):
  date --date 12:34:56
  注意:
  当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。
  当你以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。
名称:sleep
  使用权限:所有使用者
  使用方式:sleep [--help] [--version] number[smhd]
  说明:sleep 可以用来将目前动作延迟一段时间
  参数说明:
  --help:显示辅助讯息
  --version:显示版本编号
  number:时间长度,后面可接 s,m,h 或 d
  其中 s 为秒,m 为 分钟,h 为小时,d 为日数
  例子:
  显示目前时间后延迟 1 分钟,之后再次显示时间:
  date;sleep 1m;date

  名称: time
  使用权限: 所有使用者
  使用方式: time [options] COMMAND [arguments]
  说明:
  time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间,记忆体,输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。

  把计:
  -o or --output=FILE
  设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
  -a or --append
  配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
  -f FORMAT or --format=FORMAT
  以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。
  一般设定上,你可以用
  \t
  表示跳栏,或者是用
  \n
  表示换行。每一项资料要用 % 做为前导。如果要在字串中使用百分比符号,就用.(学过C语言的人大概会觉得很熟悉)
  time 指令可以显示的资源有四大项,分别是:

  Time resources
  Memory resources
  IO resources
  Command info
  详细的内容如下:
  Time Resources
  E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数字并不代表实际的 CPU 时间。
  e 执行指令所花费的时间,单位是秒。请注意这个数字并不代表实际的 CPU 时间。
  S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
  U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
  P 执行指令时 CPU 的占用比例。其实这个数字就是核心模式加上使用者模式的 CPU 时间除以总时间。

  Memory Resources
  M 执行时所占用的实体记忆体的最大值。单位是 KB
  t 执行时所占用的实体记忆体的平均值,单位是 KB
  K 执行程序所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
  D 执行程序的自有资料区(unshared data area)的平均大小,单位是 KB
  p 执行程序的自有堆叠(unshared stack)的平均大小,单位是 KB
  X 执行程序间共享内容(shared text)的平均值,单位是 KB
  Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数


  IO Resources
  F 此程序的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给其他程序。此时该页的内容必须从置换档里再读出来。
  R 此程序的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程序。此时该页的内容并未被破坏,不必从置换档里读出来
  W 此程序被交换到置换档的次数
  c 此程序被强迫中断(像是分配到的 CPU 时间耗尽)的次数
  w 此程序自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
  I 此程序所输入的档案数
  O 此程序所输出的档案数
  r 此程序所收到的 Socket Message
  s 此程序所送出的 Socket Message
  k 此程序所收到的信号 ( Signal )数量

  Command Info
  C 执行时的参数以及指令名称
  x 指令的结束代码 ( Exit Status )

  -p or --portability
  这个选项会自动把显示格式设定成为:
  real %e
  user %U
  sys %S
  这么做的目的是为了与 POSIX 规格相容。
  -v or --verbose
  这个选项会把所有程式中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。
  范例:
  利用下面的指令
  time -v ps -aux

  我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
  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 [-V]
  说明: uptime 提供使用者下面的资讯,不需其他参数:
  现在的时间
  系统开机运转到现在经过的时间
  连线的使用者数量
  最近一分钟,五分钟和十五分钟的系统负载
  参数: -V 显示版本资讯。
  范例: uptime
  其结果为:
  10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99
名称:chfn
  使用权限:所有使用者
  用法:shell>> chfn
  说明:提供使用者更改个人资讯,用于 finger and mail username
  范例:
  shell>> chfn
  Changing finger information for user
  Password: [del]
  Name[]:Johnney Huang ### 提供 finger 时的资料
  Office[]:NCCU
  Office Phone[]: [del]
  Home Phone[]: [del]

  名称:chsh
  使用权限:所有使用者
  用法:shell>> chsh
  说明:更改使用者 shell 设定
  范例:
  shell>> chsh
  Changing fihanging shell for user1
  Password: [del]
  New shell [/bin/tcsh]: ### [是目前使用的 shell]
  [del]

  shell>> chsh -l ### 展示 /etc/shells 档案内容
  /bin/bash
  /bin/sh
  /bin/ash
  /bin/bsh
  /bin/tcsh
  /bin/csh


  ” finger [返回]
  名称: finger
  使用权限: 所有使用者
  使用方式: 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.
名称:last
  使用权限:所有使用者
  使用方式:shell>> last [options]
  说明:显示系统开机以来获是从每月初登入者的讯息
  把计:
  -R 省略 hostname 的栏位
  -num 展示前 num 个
  username 展示 username 的登入讯息
  tty 限制登入讯息包含终端机代号
  范例:

  shell>> last -R -2
  johnney pts/1 Mon Aug 14 20:42 still logged in
  johnney pts/0 Mon Aug 14 19:59 still logged in

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


  shell>> last -2 minery
  minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
  minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)
  wtmp begins Tue Aug 1 09:01:10 2000


  名称:login
  这个命令都不会就不要干算了!呵呵我也不在这里多费笔墨耽误大家美好青春了^_^

  名称:passwd
  使用权限:所有使用者
  使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
  说明:用来更改使用者的密码
  参数:
  -k
  -l
  -u
  -f
  -d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 权限的使用者方可使用.
  -S 显示指定使用者的密码认证种类, 只有具备 root 权限的使用者方可使用.
  [username] 指定帐号名称.

  名称:who
  使用权线:所有使用者都可使用
  使用方式:who - [husfV] [user]
  说明:显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。
  把计:
  -h:不要显示标题列
  -u:不要显示使用者的动作/工作
  -s:使用简短的格式来显示
  -f:不要显示使用者的上线位置
  -V:显示程式版本
名称:/etc/aliases
  使用权限:系统管理者
  使用方式: 请用 newaliases 更新资料库
  说明:
  sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 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
  使用权限:所有使用者
  使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
  说明:
  mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。


  参数:
  i 忽略 tty 的中断讯号。 (interrupt)
  I 强迫设成互动模式。 (Interactive)
  v 列印出讯息,例如送信的地点,状态等等。 (verbose)
  n 不读入 mail.rc 设定档。
  s 邮件标题。
  c cc 邮件地址。
  b bcc 邮件地址。
  范例:
  将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
  mail user1@email.address
  mail user1@email.address user2

  将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
  mail -s 标题 -c user1 user2 < mail.txt

  指令:mesg
  使用权限:所有使用者
  使用方式:mesg [y|n]
  说明 : 决定是否允许其他人传讯息到自己的终端机介面
  把计 :
  y:允许讯息传到终端机介面上。
  n:不允许讯息传到终端机介面上 。
  如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
  例子:
  改变目前讯息设定,改成不允许讯息传到终端机介面上:
  mesg n

  与 mesg 相关的指令有: talk,write,wall。
名称:/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)C
  例子:
  传讯息"hi" 给每一个使用者:
  wall hi
名称:write
  使用权限:所有使用者
  使用方式:
  write user [ttyname]
  说明:传讯息给其他使用者
  把计:
  user:预备传讯息的使用者帐号
  ttyname:如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
  例子.1:
  传讯息给 Rollaend,此时 Rollaend 只有一个连线:
  write Rollaend


  接下来就是将讯息打上去,结束请按 ctrl+c

  例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3:
  write Rollaend pts/2

  接下来就是将讯息打上去,结束请按 ctrl+c
  注意:若对方设定 mesg n,则此时讯席将无法传给对方

  名称:kill
  使用权限:所有使用者
  使用方式:
  kill [ -s signal | -p ] [ -a ] pid ...
  kill -l [ signal ]
  说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
  把计:
  -s (signal):其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
  -p:印出 pid , 并不送出信号
  -l (signal):列出所有可用的信号名称
  范例:
  将 pid 为 323 的行程砍掉 (kill):
  kill -9 323
  将 pid 为 456 的行程重跑 (restart):
  kill -HUP 456


  名称:nice
  使用权限:所有使用者

  使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]
  说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
  把计:
  -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
  --help 显示求助讯息
  --version 显示版本资讯
  范例:
  将 ls 的优先序加 1 并执行:
  nice -n 1 ls

  将 ls 的优先序加 10 并执行:
  nice ls将 ls 的优先序加 10 并执行

  注意:优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
名称: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) idC


  名称: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:安全模式,将交谈式指令取消, 避免潜在的危机 ...