linux常用命令
Pv,Q*gh` +X#JCLD 称:/etc/aliases
Kw_> X&GcJ 使用权限:系统管理者
$ReoIU^< 使用方式: 请用 newaliases 更新资料库
tn>z%6;&Z 说明:
!(QDhnx}9c sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
#[=%+ *Q D;
i%J /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
T$)N2]FE # newaliases
X} <p|P+ >,;,
6|S 下面命令会做相同的事,
F-0 |&0 # sendmail -bi
/a@gE^TM W{'RR. 相关命令:
!0p_s;uu,W mail, mailq, newaliases, sendmail
[ed6n@/O@ bruM#T@} ” mail [返回]
&b~if}vcb 名称:mail
]w*w@:Zk {\u=m>2U| 使用权限:所有使用者
D}YAu,<K d'y\~M9( 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
KicPW}_ wd86 y 说明:
iY_E"$}P mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
q3Tp/M. I#?NxP\S 参数:
u^5X@. i 忽略 tty 的中断讯号。 (interrupt)
9 8"/]ERJ I 强迫设成互动模式。 (Interactive)
iPoh2 v 列印出讯息,例如送信的地点、状态等等。 (verbose)
n^kszIu~ n 不读入 mail.rc 设定档。
N!RkV\:X s 邮件标题。
U5_1-wV c cc 邮件地址。
Wg \`!T b bcc 邮件地址。
&\[3m^L =XbOY[ 范例:
PH$fDbC8 $d:>(_p=A 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
"lU%Pm]> mail
user1@email.address
9'tOF mail
user1@email.address user2
=gG_ %]``R (`nn\) 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
35>VCjCw0 Ro1b (+H mail -s 标题 -c user1 user2 < mail.txt
dG{D2~# 9#C hn~ \ 指令:mesg
e(t,~( 使用权限 : 所有使用者
~ 8hAmM ;ndsq[k> 使用方式 : mesg [y|n]
<Vu/6"DP {Ftz4y)6 说明 : 决定是否允许其他人传讯息到自己的终端机介面
+=Xgi$ 02|f@bP. 把计 ?
fYv= yP~ F?>rWP
y : 允许讯息传到终端机介面上。
~QVN^8WPg n : 不允许讯息传到终端机介面上 。
I)9un|+,y 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
!+Ia#( 7J:zIC$u> 例子 :
lL6bIjf 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
u>e4;f`F mesg n
7*D*nY4+ 与 mesg 相关的指令有: talk,write,wall。
MJxTzQE 名称:/etc/aliases
*cNqgw#\qL 使用权限:系统管理者
XnBpL6"T` 使用方式: newaliases
Ry5/O?QL 说明:
_4H}OGZI sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
<X5'uve 3)5Gzn /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
6L`{oSX! wTT_jyH) 参数:没有任何参数。 范例:
g`('
k5= # newaliases
o'9K8q\1 aN\psg 下面命令会做相同的事,
P[|FK(l # sendmail -bi
^g[,}t:/d u2p5*gzZ 相关命令:
~[E@P1 mail, mailq, newaliases, sendmail
O^tH43C 名称 : talk
"!\O N)l* 使用权限 : 所有使用者
86.LkwlqoH xUp[)B6?: 使用方式 :
D'dE!CAUs W6=j^nv talk person [ttyname]
QEUr+7[ 说明 : 与其他使用者对谈
mQVc ZV GQZLOjsop 把计 :
ML6V,-KU person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name E="FE.%A ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
=x8F!W}Bt< IYJS>G%* 例子.1 :
8A|{jH74 W> ZL[BQ 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
C&d%S|:IR talk Rollaend
X<6Ro
es2 co
<ATx 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
]6PX4oK_t F0cde 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
%TO=]>q talk
Rollaend@linuxfab.cx pts/2
ct,Iu+HJ m5m'ByX(* caK<;bmu- 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
@O~ ;H%&Jht 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
T2;%@Ghc s`:>"1\| 名称 : wall
j\,HquTR 使用权限 : 所有使用者
_;8aiZt|u ah82S)a`} 使用方式 :
f^
q0#+k ) wall [ message ]
$6&P 69< 使用说明:
}7`HJ>+m)H wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
H<^*V8J 'w $Vu%4kq 例子 :
(WW*yv.J jafIKSD]% 传讯息"hi" 给每一个使用者 :
q T16th[D wall hi
uVO*@Kj+ 名称 : write
3'
HtT 使用权限 : 所有使用者
M5mCG pt"yJtM'P 使用方式 :
y:FxX8S$'e W YHr'xJ write user [ttyname]
`5y+3v~" 说明 : 传讯息给其他使用者
/(`B;? t>04nN_@,s 把计 :
M?61g( ^X&`:f user : 预备传讯息的使用者帐号
(r&e| ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
QuJ~h}k n@3(bl5{ 例子.1 :
XIv{jzgF GCw<jHw 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
=1rq?M eX write Rollaend
aJnZco6 =cy;{2S'p 接下来就是将讯息打上去,结束请按 ctrl+c
Hk65c0 c*O{?b 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
c1v,5c6d j write Rollaend pts/2
Ch`nDIne 0YMmW xV 接下来就是将讯息打上去,结束请按 ctrl+c
s_(%1/{ aFI?^"L 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
,bv?c@ nm[ yp3B 名称:kill
##%R|P3 使用权限:所有使用者
R]oi&"H@r) "82<}D^; 使用方式:
wm3fd7T h6!o,qw" kill [ -s signal | -p ] [ -a ] pid ...
ya+eGD@N': kill -l [ signal ]
@J[l^o9 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
i(eLE"G+ 把计?
[+=h[DC }v0IzGKs -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
0baq696<F -p : 印出 pid , 并不送出信号
aL wd#/! -l (signal) : 列出所有可用的信号名称
!&~8j7{ 范例:
\M]w I rcc.FS 将 pid 为 323 的行程砍掉 (kill) :
!PCw-& kill -9 323
?0Xt | <lk_]+ XJ3 将 pid 为 456 的行程重跑 (restart) :
"@xF(fyg kill -HUP 456
hFC4CqBV .Yxx
名称:nice
S #M<d~rK 使用权限:所有使用者
(7P{k<5 a '/yN{?p 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
@!92Ok dHU#Y,v 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
'o2V}L'nG YF{ KSGq 7=.}484>J 把计?
4<`x*8`
, fo"dX4%} -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
_IAvFJI --help 显示求助讯息
S9sFC!s1g --version 显示版本资讯
` r; . 范例:
"s']@Qv 将 ls 的优先序加 1 并执行 :
+C~,q{u nice -n 1 ls
gnS0$kCJ: b"Hg4i) 将 ls 的优先序加 10 并执行 :
y{Wtm7fnA nice ls将 ls 的优先序加 10 并执行
AHws5#;$6* G0sg\] 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
C[j'0@~V:B T)o)%Yv 名称:ps
;SBM7fwRk 使用权限:所有使用者
@Q"%a`mKH 使用方式:ps [options] [--help]
^s@?\v 说明:显示瞬间行程 (process) 的动态
~lx5RTkp 参数:
wW4/]so M ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
S.o@95M
-A 列出所有的行程
opz.kP[e, -w 显示加宽可以显示较多的资讯
H6<\7W89y -au 显示较详细的资讯
\ H#zRSbZ -aux 显示所有包含其他使用者的行程
}r&^*"
2= cad%:%p au(x) 输出格式 :
H<dOh5MFh YaTJKgi"0 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
>6XGF(G
USER: 行程拥有者
)j6VROt PID: pid
M9MfO* %CPU: 占用的 CPU 使用率
tzv&E0|d %MEM: 占用的记忆体使用率
=G*rfV@__V VSZ: 占用的虚拟记忆体大小
f=v+D0K$n RSS: 占用的记忆体大小
Rv=(D^F, TTY: 终端的次要装置号码 (minor device number of tty)
[guJd"; STAT: 该行程的状态:
~4th;#' D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
#UH|,>W6 R: 正在执行中
9C5w!_b@ S: 静止状态
9:^SnHAa T: 暂停执行
rj"oz" Z: 不存在但暂时无法消除
_20nOg`o W: 没有足够的记忆体分页可分配
[`P+{ R <: 高优先序的行程
(o_w[jv N: 低优先序的行程
XW6>;:4k L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
D_,}lsrb START: 行程开始时间
-#v1b>ScY TIME: 执行的时间
`gq@LP"o COMMAND:所执行的指令
Q7`}4c) 范例:
Qcu1&t\ C ps
P@'<OI PID TTY TIME CMD
RE]u2R6Y 2791 ttyp0 00:00:00 tcsh
bet?5Dk 3092 ttyp0 00:00:00 ps
#RK?3?wcr % ps -A
|+//pGx PID TTY TIME CMD
' } rUbJo 1 ? 00:00:03 init
8D
eRs# 2 ? 00:00:00 kflushd
e:IUO1# 3 ? 00:00:00 kpiod
R;6(2bTN6 4 ? 00:00:00 kswapd
6\(wU?m'/ 5 ? 00:00:00 mdrecoveryd
xW*L^97 ; .......
I%(`2rD8G % ps -aux
iXtar;% USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
B 8z3W9 root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
=LHE_ AA root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
BnH<-n_ root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
?DEj|
i8 root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
d?_Bll" ........
5haJPWG|' 名称:pstree
C|c'V-f 使用权限:所有使用者
d^X;XVAvP 使用方式:
UJ1Ui'a(!! pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
I.I:2Ew+ pstree -V
oDul ?% 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
#KZ6S9>@ 参数:
Ji SJi? -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
gW'aK>*c -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
P?*$Wf,~n 范例:
epi{Ayb pstree
*M;!{)m? @giipF2$ init-+-amd
K2<Q9 ,vt |-apmd
aG QC |-atd
uW!',"0ER |-httpd---10*[httpd]
zN JK+_O= %pstree -p
F*hOa|7/ init(1)-+-amd(447)
ZRO |-apmd(105)
7Zp'}Om<I |-atd(339)
kpi)uGvGUA %pstree -c
g7@G&Ro9J\ init-+-amd
3dNOXk,# |-apmd
6=2M[T |-atd
HF}%Ow
|-httpd-+-httpd
H2 7_T]\ | |-httpd
R[5*]$(b | |-httpd
<jXXj[M2 | |-httpd
#
)-Kf ....
zghUwW |K 名称:renice
tG(?PmQ 使用权限:所有使用者
j}Lt"r2F |xyN#wi 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
&AH@|$!E A-r-^S0\ 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
}R*[7V9" r-'(_t~FT 把计?
Iq.*2aff+ D1t@Y.vl -p pid 重新指定行程的 id 为 pid 的行程的优先序
/\_`Pkd3m -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
1pogk0h.: -u user 重新指定行程拥有者为 user 的行程的优先序
}|MGYS ) 范例:
hv te) 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
Ee;&;Q,O.z renice +1 987 -u daemon root -p 32
a+ZP]3@
7 c?5e| dZz 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
xJrRJwL F`-|@k 名称:top
cf?*6q?n 使用权限:所有使用者
{tMpI\>S Qy`{y?T2 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] Am&/K\O
.%;UP7g
说明:即时显示 process 的动态 K5No6dsD
/10 I}3D
把计? \Fj$^I>C
Ss+e*e5Ht
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s n; ;b6s5
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 j_c0oclSz
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 ~|kre:j9
s : 安全模式,将交谈式指令取消, 避免潜在的危机 '0D2e
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 }Wjb0V
n : 更新的次数,完成后将会退出 top J4!Om&\@
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 E]V:@/(M'
&S9Sl
范例: =FQ]eb*
显示更新十次后退出 ; ,2S w6u
top -n 10 >Du5B&41
C4e3Itc9X
使用者将不能利用交谈式指令来对行程下命令 : $EHAHNL?Lx
top -s d-nqV5
|&lAt\
将更新显示二次的结果输入到名称为 top.log 的档案里 : 9{\eE]0
top -n 2 -b < top.log vQ"EI1=7Z
%4?
名称:skill `!Ei
H<H}
pJ-/"Q|:i
使用权限:所有使用者 z( L\I
[3h~y7
使用方式: skill [signal to send] [options] 选择程序的规则 F`g oYwA%
,\zp&P"p
说明: +"rZ< i
Rf2$k/lZ
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 V~M>K-AL
S@;>lw,s!
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 #aUe7~
6[>UF!.=
一般参数: H^sPC{6+pf
E8#RG-ci
-f 快速模式/尚未完成 rld4uy}m
)]~'zOE_
-i 互动模式/ 每个动作将要被确认 OJe#s;oH
WL(u'%5
-v 详细输出/ 列出所选择程序的资讯 iHhoNv`MR
[4B.;MS(
-w 智能警告讯息/ 尚未完成 "?a(JC
-I4-K%%B`
-n 没有动作/ 显示程序代号 LyR to
?LAKH$t
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 8&: *<
bv,_7UOG
-t 终端机代号 ( tty 或 pty ) ?<VahDBS+A
~]8bTw@
-u 使用者名称 nV'~uu
e 5U<nf
-p 程序代号 ( pid ) -_BS!T%r
6O2 r5F$T
-c 命令名称 可使用的讯号: pv1J6
f@lRa>Z(Fm
以下列出已知的讯号名称,讯号代号,功能。 qV0C2jZ2
1"{3v@yi
名称 (代号) 功能/ 描述 _D7MJT
}2 zJ8A9-
ALRM 14 离开 wZN<Og+;
J'B6l#N
HUP 1 离开 !/O c)Yk
'zV/4iE=
INT 2 离开 j;@7V4'
l<0BMw S8
KILL 9 离开/ 强迫关闭 !m(5N4:vV
z17
PIPE 13 离开 i)=!U>B_0
>J>4g;Y
POLL 离开 fdP[{.$?(
YOo?.[}@
PROF 离开 g(m3
&
\NwL #bQ~
TERM 15 离开 v&oE!s#
|u,2A1
USR1 离开 *X_CtjgF
8_WFSF^
USR2 离开 >Z
ZX]#=I
0kP,Zj<
VTALRM 离开 &qqS'G*
c!"&E\F
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 Rg~ ~[6G>
Y0iL+=[k`m
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 UV8,SSDTV
l9
RjxO.~U
TSTP 停止 /产生与内容相关的行为 f;M7y:A8q,
m5Gt8Z 6a
TTIN 停止 /产生与内容相关的行为 44_7gOZ
SAswP
TTOU 停止 /产生与内容相关的行为 xh
Sp<|X_
;,GE!9HW
STOP 停止 /强迫关闭 \2,7fy'
eED Fm
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 aV`4M VWOz
o<2H~2/
PWR 忽略 /在某些系统中会离开 DP`$gd
RMU]GCa
WINCH 忽略 j2NnDz'
o =)hUr
CHLD 忽略 P_)h8-!+ $
}|>mR];
ABRT 6 核心 zM?JLNs]<{
Vh1{8'GQ
FPE 8 核心 `iuo([E d
}I_/>58
ILL 4 核心 `ZL~k
;\yY*
QUIT 3 核心 !7XAc,y
Z!o&};_j
SEGV 11 核心 @WVpDhG
ImQ?<g8$
TRAP 5 核心 BhC.#u/
gd3~R+Kd
SYS 核心 /或许尚未实作 `ro~l_U;A
rxtp?|v9
EMT 核心 /或许尚未实作 bm9@A]yP
n`<YhV
BUS 核心 /核心失败 w]Z*"B&h
g2p/#\D\J
XCPU 核心 /核心失败 </0@7
!uoU 8Ki9
XFSZ 核心 /核心失败 3 "fBp
*ZP$dQ
范例: cSy{*K{B
停止所有在 PTY 装置上的程序 '&4W@lvyz
skill -KILL -v pts/* I\J^@&JE
;~Y0H9`
停止三个使用者 user1 , user2 , user3 P wL]v. :
skill -STOP user1 user2 user3 d>@&[C!28
@MMk=/WDw
其他相关的命令: kill DEEQ/B{
名称:expr 3x2*K_A5:Q
使用权限:所有使用者 7,U^v}$
### 字串长度 ?:F#WDD
Iqe=)
shell>> expr length "this is a test" Q $Y ]KV
14 ``bIqY
### 数字商数 9A0wiKp
shell>> expr 14 % 9 'B&gr}@4O=
5 &`hx
### 从位置处抓取字串 M]PH1 2Ob
shell>> expr substr "this is a test" 3 5 "@IrBi6
is is "bZ{W(h
### 数字串 only the first character YI!ecx%/4
shell>> expr index "testforthegame" e 1j7^2Y|UT`
2
meQ>mW
### 字串真实重现 }& ;49k
shell>> expr quote thisisatestformela (izGF;N+
thisisatestformela