linux常用命令
*gL-v]V 3q$"`w 称:/etc/aliases
L3^+`e 使用权限:系统管理者
5(&'/U^ 使用方式: 请用 newaliases 更新资料库
U=\!`_f': 说明:
kmF@u@5M sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
"midC(rTm ^q)s /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
l]__!X # newaliases
u+, z+qrsT/?L 下面命令会做相同的事,
qHra9yuSh # sendmail -bi
EPGp8VGXp~ +G?nmXG[vj 相关命令:
.0u@PcE:O mail, mailq, newaliases, sendmail
C:@JLZB HD{2nZT ” mail [返回]
VF] ~J=>i 名称:mail
u(g0Ob t73" d#+ 使用权限:所有使用者
M"<B@p]rk: u8i!Fxu 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
^|ln q.j 4 .d~u@= 说明:
EnnE@BJ" mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
N3QDPQ f"g-Hbl5 参数:
t7qY!S ( i 忽略 tty 的中断讯号。 (interrupt)
8UN7(J I 强迫设成互动模式。 (Interactive)
I`FqZw v 列印出讯息,例如送信的地点、状态等等。 (verbose)
DE _<LN
n 不读入 mail.rc 设定档。
h}cR>
s 邮件标题。
=^S1+B
MY- c cc 邮件地址。
w{5v*SHl}` b bcc 邮件地址。
%XAF"J
Oa/# 2C~ 范例:
sAfNu~d "YePd*W 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
^OnZ9?C{R mail
user1@email.address
byetbt(IF mail
user1@email.address user2
Ym5ji$!2 cfA)Ui 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
0L|D1_k[ QFX )Nov]; mail -s 标题 -c user1 user2 < mail.txt
E|l qlS7 S"G`j!m1 指令:mesg
s\A4y " 使用权限 : 所有使用者
|?/,ED+|>D brt1Kvu8( 使用方式 : mesg [y|n]
TuX9:Q Rt2<F-gY 说明 : 决定是否允许其他人传讯息到自己的终端机介面
af<wUxM0 -Ay=*c.4 把计 ?
^4 ?LQ[t' '\I!RAZ y : 允许讯息传到终端机介面上。
urA
kV#d# n : 不允许讯息传到终端机介面上 。
i"J`$u 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
&R;Cm]jt K \_JG$(9 例子 :
lD\vq 2 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
r\DA&b mesg n
/yNLFL" 与 mesg 相关的指令有: talk,write,wall。
}hyl)?*~ 名称:/etc/aliases
pGdo:L? 使用权限:系统管理者
vo JmNH 使用方式: newaliases
mx;1'!'fr 说明:
GFppcL@a sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
rwSmdJ~ 5svM3 # /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
Ir :y# .P5OUK 参数:没有任何参数。 范例:
T?Y/0znB* # newaliases
95%QF;h }{(J*T 下面命令会做相同的事,
+JrbC/& # sendmail -bi
(n0h#% mcqLN5 相关命令:
r}Ec_0_lt mail, mailq, newaliases, sendmail
@_4E^KgF 名称 : talk
D*o5fPvFO 使用权限 : 所有使用者
l6#ms!e 0G}]d17ho 使用方式 :
)CM3vL { ?KMGk]_< talk person [ttyname]
!H/5Ud9 说明 : 与其他使用者对谈
bIP%xl
Vp 1'Y7h;\~\ 把计 :
QdtGFY4f, person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name g:]X '%Ub ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
B A(PWX`H lZf=# 例子.1 :
1K&l}/zUl |\k,qVQ 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
g\q*,1
talk Rollaend
PG*:3![2 I' TprT 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
asd3J Xah-*]ET 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
H". [&VP5Z talk
Rollaend@linuxfab.cx pts/2
gUtxyW `@)>5gW&p 9~ JeI / 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
I@jXW>$ ,wPvv(b]a 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
ZtPnHs.x uk=f /nT
名称 : wall
Zm+QhnY| 使用权限 : 所有使用者
iz@LS O/1:2G/` 使用方式 :
I5mtr wall [ message ]
W&`{3L 使用说明:
m(o^9R_=^9 wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
"nQ&~KQ 0P7sMCYu 例子 :
)E>nr
Z ~D1&CT#s 传讯息"hi" 给每一个使用者 :
|w3b! wall hi
2SV}mK U 名称 : write
ilr'<5rq 使用权限 : 所有使用者
QK0-jYG^ Oi-=
Fp 使用方式 :
A4 $-ICTp write user [ttyname]
[JyhzYf\ 说明 : 传讯息给其他使用者
o~ J~-$T{ [,86||^ 把计 :
}ofx?s} @4xV3Xkf&C user : 预备传讯息的使用者帐号
2?)8s"Y ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
Cyu= c1D ; fv+t%,++: 例子.1 :
{#C)S&o)6 (YC{BM} 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
j Wjp0ii write Rollaend
WkUV)/j B57MzIZi] 接下来就是将讯息打上去,结束请按 ctrl+c
#WqpU. 5R}K8"d 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
m]D3ec\K' write Rollaend pts/2
8K@>BFk1. w8iXuRv 接下来就是将讯息打上去,结束请按 ctrl+c
5zi}OGtXv V N<omi+4 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
J@l QzRqRb "eG@F 名称:kill
(N[R`LN 使用权限:所有使用者
/{71JqFis } 8&? 使用方式:
hy|Yy&- Lh;U2pA kill [ -s signal | -p ] [ -a ] pid ...
\h48]ZjC` kill -l [ signal ]
tB)nQw7 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
Xdl7'~k 把计?
?4%@"49n X ]TX"BH"2 -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
3)0z( 30 -p : 印出 pid , 并不送出信号
gUWW}*\ U -l (signal) : 列出所有可用的信号名称
E -+t[W 范例:
(\$=de>? =;A>1g$ 将 pid 为 323 的行程砍掉 (kill) :
oo-O>M#5 kill -9 323
KJP}0|[ qLWM,[Og 将 pid 为 456 的行程重跑 (restart) :
ec3zoKtV kill -HUP 456
J5"d|i >i!y[F 名称:nice
v9"|VhZ 使用权限:所有使用者
k(ho? ?R":"*eu 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
)\RG
NJMC M'|?*aNK 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
!=bGU= ^
;}KT 3Q<^ [MXyOE 把计?
5hj
_YqQ7 ;FnU[Q`M#L -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
aE
2= --help 显示求助讯息
1uco{JX<S --version 显示版本资讯
*)D$w_06S 范例:
2|\WaH9P 将 ls 的优先序加 1 并执行 :
O<()T6 nice -n 1 ls
\&\U&^? D5"Xjo* 将 ls 的优先序加 10 并执行 :
MN^d28^/ nice ls将 ls 的优先序加 10 并执行
m(KBg'kQ w\lc;4U 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
\N[2-;[3 >J) 9&? 名称:ps
Uu[dx}y 使用权限:所有使用者
\5P 5N]] 使用方式:ps [options] [--help]
>UnLq:G 说明:显示瞬间行程 (process) 的动态
X4CiVV 参数:
j.kv!;Rj= ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
nq
qqP -A 列出所有的行程
!S#K6: -w 显示加宽可以显示较多的资讯
}uiD8b{I -au 显示较详细的资讯
au#/Q -aux 显示所有包含其他使用者的行程
wK!7mZ h!J|4Qa au(x) 输出格式 :
Ejt?B')aB5 g&r3; USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
K^e4w`F| USER: 行程拥有者
~FnuO!C PID: pid
$[0\Th %CPU: 占用的 CPU 使用率
ib%'{?Q. %MEM: 占用的记忆体使用率
k2/t~|5 VSZ: 占用的虚拟记忆体大小
h{ T{3 RSS: 占用的记忆体大小
Vl/fkd,Z TTY: 终端的次要装置号码 (minor device number of tty)
3FG'A[x3O STAT: 该行程的状态:
hdDL92JVg D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
:_[pZ;-@ R: 正在执行中
y*e({fio_ S: 静止状态
sL],@z8<k T: 暂停执行
{RN-rF3w Z: 不存在但暂时无法消除
sB0m^Y' W: 没有足够的记忆体分页可分配
JH._/I
<: 高优先序的行程
${{[g16X N: 低优先序的行程
M'nzoRk L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
%$'Z"njO& START: 行程开始时间
E<'V6T9bi TIME: 执行的时间
5}TTf2&Xo# COMMAND:所执行的指令
"Pl.G[Buc- 范例:
U;#G$ ps
($Q|9>5, PID TTY TIME CMD
[&pMU) 2791 ttyp0 00:00:00 tcsh
1EWskmp 3092 ttyp0 00:00:00 ps
K"cV7U rE % ps -A
:Q ?p^OC PID TTY TIME CMD
&2r[4 1 ? 00:00:03 init
+zf`_1+)U 2 ? 00:00:00 kflushd
E&dxM{` 3 ? 00:00:00 kpiod
C:.>*;?7 4 ? 00:00:00 kswapd
4mvnFY} 5 ? 00:00:00 mdrecoveryd
#<d'=R[AK .......
]JQ}9"p=5 % ps -aux
M44$E4a20 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Ym?VF{e, root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
0[p"8+x root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
N<XMSt root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
X7txAp. root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
^t?vv;@} ........
WsW] 1p 名称:pstree
M_h8{ 使用权限:所有使用者
+z<GycIc?K 使用方式:
y
~Fi pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
eq@-J+ pstree -V
`SQobH 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
vr4{|5M 参数:
U~w8yMxX -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
KGGJ\r6 -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
oG\lejO 范例:
<B!DwMk;. pstree
UAGh2?q2 gOr%N!5 init-+-amd
M7{_"9X{ |-apmd
8On MtP |-atd
?8FJMFv;4% |-httpd---10*[httpd]
]U&<y8Q_6 %pstree -p
'4}8WYKQ init(1)-+-amd(447)
+1^L35\@ |-apmd(105)
y?Pw6;e. |-atd(339)
v >s,* %pstree -c
4'"WD0 init-+-amd
=R)w=ce |-apmd
]"'1-h91 |-atd
[-Xah]g |-httpd-+-httpd
Sa@T#%oU | |-httpd
N]-skz<v | |-httpd
>z73uKA( | |-httpd
R&Ss ET. ....
<{i1/"k?X 名称:renice
Js^(mRv= 使用权限:所有使用者
Zr(eH2}0D eQ*zi9na 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
gHFQs](G. 3R%yKa# 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
i:Gyi([C BS%pS( 把计?
e ^ZY u/V&1In -p pid 重新指定行程的 id 为 pid 的行程的优先序
HX ,\a` -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
ZC`VuCg2O -u user 重新指定行程拥有者为 user 的行程的优先序
iNilk!d6Q3 范例:
`dhBLAt 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
YMVmpcz renice +1 987 -u daemon root -p 32
;rV+eb)I _{n4jdw%( 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
-/Zy{2 <u O;|jLf_If 名称:top
a:;7'w' 使用权限:所有使用者
#Z,@yJ2wl dptfIBYc+ 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] !x!1H5"
bXA%|7*
说明:即时显示 process 的动态 WWC&-Ni
!w%p Gv.wg
把计? *S?'[PS]1
u8gqWsvruM
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s 0`Uw[Er&
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 =Y*@8=V
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 ;.^!
7j
s : 安全模式,将交谈式指令取消, 避免潜在的危机 /PbMt
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 7}e5a c
n : 更新的次数,完成后将会退出 top 5 Pf)&iG
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 % bKy
gLg.mV1<
范例: S(/^_Y
显示更新十次后退出 ; +VL:O]`DJ
top -n 10 )l.AsfW%
ia,5=SKJ
使用者将不能利用交谈式指令来对行程下命令 : U;0:@.q
top -s db@^CS[P
Jp|eKZ
将更新显示二次的结果输入到名称为 top.log 的档案里 : %Y,Ru)5}
top -n 2 -b < top.log 8l'W[6
q>wO=qWx
名称:skill ) I(9qt>Y
@|s$:;(=
使用权限:所有使用者 HU$]o N
F'CJN$6Mw/
使用方式: skill [signal to send] [options] 选择程序的规则 uG/'9C6Z
&[SFl{fx>-
说明: brG!TJ
KT+{-"4-
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 0/1=2E^,
%gj7KF
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 [WV&Y,E
f>e0l'\
一般参数: hQ@#h`lS
{&L^|X
-f 快速模式/尚未完成 Fnay{F8z
)l/
.<`|
-i 互动模式/ 每个动作将要被确认 5>UQ 3hWo
%Y"pVBc
-v 详细输出/ 列出所选择程序的资讯 ?uU_N$x
$zF%F.rln
-w 智能警告讯息/ 尚未完成 %dzO*/8cWo
]{|lGtK %
-n 没有动作/ 显示程序代号 Q [C26U
$$EEhy
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 1OqVV?oz
o+)y!
-t 终端机代号 ( tty 或 pty ) <L<^uFB
1yqsE`4f
-u 使用者名称 TL)7X.1'L
bZ:xH48MY
-p 程序代号 ( pid ) F1BXu@~e(
Ni|MTE]~
-c 命令名称 可使用的讯号: !%$,S=_F
(nXnP{yb
以下列出已知的讯号名称,讯号代号,功能。 ,In%r`{i
s
{^wr6B
名称 (代号) 功能/ 描述 8aKS=(Z!j
ZJm$7T)V
ALRM 14 离开 $ M/1pZ
8nL9#b
HUP 1 离开 SlHDBr!.z
(h=]Ox
INT 2 离开 +@yU `
oI'& &Bt
KILL 9 离开/ 强迫关闭 Ab>Kf r#
]mz '(t
PIPE 13 离开 r=SCbv
Gt
_tL%
POLL 离开 q'4P/2)va
fD3'Ye<R
PROF 离开 ^,FG9
hc3tzB
TERM 15 离开 <&2<>*/.y
ww[||
=
USR1 离开 BkPt 1i
H_Va$}8z
USR2 离开 &:u3-:$:9
#I*{_|}=
VTALRM 离开 9Kgyt
*SIYZE'
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 Vh2uzG
x*RSD,3
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 nC!]@lA
KLj=M;$:K
TSTP 停止 /产生与内容相关的行为 jSH.e?
wa{!%qu5.R
TTIN 停止 /产生与内容相关的行为 +a%D+
{MyI3mvA
TTOU 停止 /产生与内容相关的行为 5k9
vYW5k
%NJ0Y(:9(
STOP 停止 /强迫关闭 #5kclu%L$
Gqc6]{
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 >;R`Q9s7
.MRN)p
PWR 忽略 /在某些系统中会离开 5f?GSHA}
*W`7JL,
WINCH 忽略 uv8kea .(
"I:*
CHLD 忽略 RAk"C!&^m
HV-;?5
ABRT 6 核心 I8% -ii
WTM
FPE 8 核心 eThFRU3 F
Nnr[@^M5
ILL 4 核心 "Nb2[R
BfCnyL%
QUIT 3 核心 w{|`F>f9
Rm}5AJ
SEGV 11 核心 C.":2F;-e
oU @!R
TRAP 5 核心 2+DK:T[
<|.]$QSi
SYS 核心 /或许尚未实作 EJMd[hMhe
r<Z .J/a
EMT 核心 /或许尚未实作 CTKw2`5u
'q_ Z
dw%
BUS 核心 /核心失败 0Zp5y@V8
US3)+6
XCPU 核心 /核心失败 9I2&Vx=DSt
0#Pa;(
XFSZ 核心 /核心失败 .VNz(s
,
V,Q(!$F
范例: TBQ68o
停止所有在 PTY 装置上的程序 D`!BjhlW
skill -KILL -v pts/* q_`j-!
j~V$q/7S
停止三个使用者 user1 , user2 , user3 VpAwvMw
skill -STOP user1 user2 user3 @ext6cFe3<
r&B0-7r
其他相关的命令: kill je2"D7D
名称:expr K]Vp! G
使用权限:所有使用者 )=X g
### 字串长度 MffCk!]
s]6;*mI2
shell>> expr length "this is a test" "crp/Bj?
14 C4d'z(<
### 数字商数 vnVT0)Lel
shell>> expr 14 % 9 MzgP@tB
5 "S6";G^I
### 从位置处抓取字串 V|B4lGS&
shell>> expr substr "this is a test" 3 5 tKcC{
is is }CMGK{
### 数字串 only the first character ZzTkEz >
shell>> expr index "testforthegame" e zh0T3U0D
2 U1Fo #L
### 字串真实重现 !.q99DB
shell>> expr quote thisisatestformela Wa.xm_4s2
thisisatestformela