linux常用命令
Z1E`I89< Nu>sp,|A 称:/etc/aliases
`kI?Af*;v 使用权限:系统管理者
5VCMpy 使用方式: 请用 newaliases 更新资料库
bf&.rJ0 说明:
RI7qsm6RN sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
r! cNc vy>];!Cu /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
+ytT)S # newaliases
3uB=L7. ^d5gz0d 下面命令会做相同的事,
vY8WqG] # sendmail -bi
^'
edE5 /TR"\xQF 相关命令:
qJe&jLZa mail, mailq, newaliases, sendmail
i'[n`|c< A?%XO
% ” mail [返回]
TW;|G'}$ 名称:mail
*rujdQf $_%2D3-;D 使用权限:所有使用者
'US8"83 )of5229 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
eHfG;NsV/ GFSlYG 说明:
Jv '3]( mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
Fj4l %= 8=!rnJCav 参数:
3(Hj7d7'} i 忽略 tty 的中断讯号。 (interrupt)
\{Ox@ I 强迫设成互动模式。 (Interactive)
_"FbjQ" v 列印出讯息,例如送信的地点、状态等等。 (verbose)
==r? n 不读入 mail.rc 设定档。
t6! p\Y}} s 邮件标题。
R(n0!h4 c cc 邮件地址。
;@=@N9qK b bcc 邮件地址。
|1\dCE03} +3~Gc<OO 范例:
giA~+m~fN Z`0r]V`Ys 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
3\+[38 _ mail
user1@email.address
VdjU2d
mail
user1@email.address user2
Cz$Hk;3\6 jSOa 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
?[*@T2Ck -Lz1#S k]A mail -s 标题 -c user1 user2 < mail.txt
oK(W)[u wUZ(Tin 指令:mesg
&})4?5 使用权限 : 所有使用者
?$`1%Y9 {U+9,6.` 使用方式 : mesg [y|n]
lhW#IiX <W^XSk 说明 : 决定是否允许其他人传讯息到自己的终端机介面
Npg5Z%+y M25z<Y 把计 ?
F(J!dG5# Xbsj:Ko]]U y : 允许讯息传到终端机介面上。
eL]w' }\ n : 不允许讯息传到终端机介面上 。
"cz]bCr8 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
l,FG:"`Z@ ;]O 7^s#v 例子 :
'8kL1 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
G3^n_]Jb mesg n
ko7-%+0|] 与 mesg 相关的指令有: talk,write,wall。
zxynEdO 名称:/etc/aliases
{KQ-Ce-6 使用权限:系统管理者
-$!Pf$l@ 使用方式: newaliases
Af!
W
K= 说明:
7+2aG sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
ED =BZR L}sm R, /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
XH Zu>[ *z;N 参数:没有任何参数。 范例:
(w7cdqe # newaliases
'=G<)z@k #D*J5k>2 下面命令会做相同的事,
-^nQ^Td=j # sendmail -bi
kosJ]q'U {u[K
^G 相关命令:
]6c2[r?g{ mail, mailq, newaliases, sendmail
%;\2QI`R 名称 : talk
/\Y%DpG$ 使用权限 : 所有使用者
bMK'J /Z9`uK 使用方式 :
M6 >\R$ `a1R "A talk person [ttyname]
gV.Pg[[1 说明 : 与其他使用者对谈
^{]sD}Q" HI`A;G] 把计 :
~>-;(YU"t person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name C?<XtIoB ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
cd%g]T)#1 x`|tT%q@l 例子.1 :
>A@D;vx !v;_@iW3e 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
q-)_Qco talk Rollaend
3b/vyZF DDCQ Af 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
@IKe<{w 8LM1oal} 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
/v ;Kb|e talk
Rollaend@linuxfab.cx pts/2
a0W\? arH\QPaka' J,M5<s[Xqt 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
oP`M\KXau o%JIJ7M 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
(w:ACJ[[ O?J:+L( 名称 : wall
M{kh=b)V 使用权限 : 所有使用者
2]3Jb{8FI> JGNxJ S<] 使用方式 :
pxnUe1= wall [ message ]
7;-i_&vws 使用说明:
qN,FX#DP wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
vgp%;-p( CH+& 例子 :
"9T`3cM0 U4I` xw' 传讯息"hi" 给每一个使用者 :
Oqe.t;E 0} wall hi
>u#VHaB 名称 : write
r%mTOLef 使用权限 : 所有使用者
\B ^sJ[n tNf" X! 使用方式 :
A
=#-u&l ?{P6AF-xcf write user [ttyname]
KcF+!;: 说明 : 传讯息给其他使用者
=sVt8FWGY Ck a]F2, 把计 :
c89vx 9 L;t~rW!1 user : 预备传讯息的使用者帐号
[cAg'R6 ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
k_^/ _5`S)G{ 例子.1 :
,ST.pu8N. /<(ik&%N 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
oi4Wxcj write Rollaend
*pUV-^uo 7Cp_41._ 接下来就是将讯息打上去,结束请按 ctrl+c
FAl 6 u9~J1s<e 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
y,
_3Ks write Rollaend pts/2
AFUl R*fR? 接下来就是将讯息打上去,结束请按 ctrl+c
% x;!s=U {YTF]J$ 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
cyeDZ) n
k3lC/f 名称:kill
]H7Mx\ 使用权限:所有使用者
u(`A?H: O!Cu.9} 使用方式:
(,y/nc=GN
xTJ5VgG kill [ -s signal | -p ] [ -a ] pid ...
?^5*[H kill -l [ signal ]
shvcc 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
*%BI*p 把计?
,w>?N\w!} JLn<,Gn)<\ -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
F;@&uXYgc -p : 印出 pid , 并不送出信号
l;kZS -l (signal) : 列出所有可用的信号名称
g}KZL-p4\m 范例:
*uM*)6O 3 bu9&sQ; 将 pid 为 323 的行程砍掉 (kill) :
wcT6d?*5 kill -9 323
0J</`/g H B;_3IHMO 将 pid 为 456 的行程重跑 (restart) :
$zi\ /Yw kill -HUP 456
SnU{ZGR>sP A6.'1OD 名称:nice
vBnHG-5;P 使用权限:所有使用者
6u;(R0n umn^QZ, 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
V3UGx'@^y B`EgL/Wg[ 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
uNBhVsM6< dF]8>jBOL N)Kr4GC 把计?
@ xr 4 Z)]Cq*3 -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
XnOl*#P --help 显示求助讯息
M3`A&*\; --version 显示版本资讯
kn|l 3+ 范例:
AE
_~DZ:%c 将 ls 的优先序加 1 并执行 :
dig76D_[e nice -n 1 ls
p ivS8C 2oASz| 将 ls 的优先序加 10 并执行 :
@'4D9A nice ls将 ls 的优先序加 10 并执行
r!iuwE@ h!GixN? 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
~C
x2Q4E Tyl"N{ _ 名称:ps
KVy5/A/8c 使用权限:所有使用者
6<nO2 GW 使用方式:ps [options] [--help]
X\RTHlw'] 说明:显示瞬间行程 (process) 的动态
!YHu 参数:
ZW%`G@d"H- ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
"ukbqdKD -A 列出所有的行程
D*,H%xA -w 显示加宽可以显示较多的资讯
J< M;vB) -au 显示较详细的资讯
tn1aH
+
-aux 显示所有包含其他使用者的行程
WQL`;uIX h]P$L> au(x) 输出格式 :
mX_`rvYII jXZNr USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
--sb ;QG USER: 行程拥有者
l si8?91 PID: pid
&0`7_g7G %CPU: 占用的 CPU 使用率
&r%3)Z8Et %MEM: 占用的记忆体使用率
UC@ "<$'C VSZ: 占用的虚拟记忆体大小
pC8i&_A RSS: 占用的记忆体大小
[NcOk, TTY: 终端的次要装置号码 (minor device number of tty)
Pme?`YO$x STAT: 该行程的状态:
9Z
4R!Q D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
:g";p.~= R: 正在执行中
XU7bWafy S: 静止状态
>m!.l{*j>N T: 暂停执行
q4=RE Z: 不存在但暂时无法消除
hNy S W: 没有足够的记忆体分页可分配
-AQX-[B <: 高优先序的行程
'h6RZKG T N: 低优先序的行程
_: K\v8 L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
Efl+`6`J START: 行程开始时间
a06DeRCej TIME: 执行的时间
{5JXg9um COMMAND:所执行的指令
=
xk@ Q7$ 范例:
5WYU&8+]{: ps
DM9 5Il[/ PID TTY TIME CMD
uX[
"w| 2791 ttyp0 00:00:00 tcsh
Ex3woT- 3092 ttyp0 00:00:00 ps
}dM^6
Kd% % ps -A
qQ_QF PID TTY TIME CMD
D6WsEd> 1 ? 00:00:03 init
\2!$HA7P 2 ? 00:00:00 kflushd
U_No/$ b 3 ? 00:00:00 kpiod
W]OT=6u8o 4 ? 00:00:00 kswapd
gP@ni$n 5 ? 00:00:00 mdrecoveryd
+|;IIwo .......
4KnDXQ% % ps -aux
,+&j/0U USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
rpmDr7G root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
DVl:s root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
.$iIr:Tc> root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
SH.'E Hd root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
U<b!$"P9 ........
2}t wt 名称:pstree
icmDPq 使用权限:所有使用者
|sh U 使用方式:
3[rB:cE/ pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
[6|vx},N pstree -V
NL 37Y{b 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
`upNP/, 参数:
ks}o9[D3 -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
51vK> -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
W#!\.m`5 范例:
\2jY)UrQs pstree
kXWx )v $u :=lA:N init-+-amd
Gf?KpU |-apmd
z0sB*5VH |-atd
FQyiIT6 |-httpd---10*[httpd]
1yu!:8=ee %pstree -p
%04n,&mg init(1)-+-amd(447)
hd\#Vh(H |-apmd(105)
BlUY9`VWh@ |-atd(339)
H &JKja}` %pstree -c
j4h 7q< init-+-amd
MYDSkW |-apmd
Y"@k vd |-atd
e9d~Xi16KY |-httpd-+-httpd
}W<L;yD | |-httpd
pK4)>q | |-httpd
_OY ;SJ( | |-httpd
5IMH G%W7 ....
ZeO>Ag^ 名称:renice
D fea<5~^z 使用权限:所有使用者
`4CRpz <T wq{kt
使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
s@$AYZm_ zkMQ=,[ 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
m"*:XfOL RY'y%6Z]ZO 把计?
oZ}e
w!V jhLh~.
8 -p pid 重新指定行程的 id 为 pid 的行程的优先序
D&shrKFx -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
m{*l6`dF -u user 重新指定行程拥有者为 user 的行程的优先序
VxCH}&! 范例:
9c 6=[3)V 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
,J|};s+ renice +1 987 -u daemon root -p 32
AOe~VW fAs:[ 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
^{w&&+#,q M Pt7 / 名称:top
p,Z6/e[SI 使用权限:所有使用者
b Y>Ug{O; S;])Nt'X' 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] !o@-kl
t]x HM
说明:即时显示 process 的动态 EVf'1^f
ciTQH (G
把计? sqw _c{9
lwU&jo*@
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s 7,1idY%cy
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 Z|W=.RdA;
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 z,9qAts?mh
s : 安全模式,将交谈式指令取消, 避免潜在的危机 &[YG\8sxWa
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 gvC2\k{
n : 更新的次数,完成后将会退出 top ^{s)`j'I*
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 *M"wH_cd
=vFI4)$-
范例: c|7Pnx%gT
显示更新十次后退出 ; R8 m/Nt2
top -n 10 7-5q\[ZK
en
使用者将不能利用交谈式指令来对行程下命令 : J.-#:OZ
top -s 8{ep`$(K@
-l\@50,D
将更新显示二次的结果输入到名称为 top.log 的档案里 : zme:U![
top -n 2 -b < top.log 0h7\zoZ5
1)r1/0
名称:skill ,y0kzwPR1
;#;X@BhS
使用权限:所有使用者 gQ?k}D
+o/q@&v;Ax
使用方式: skill [signal to send] [options] 选择程序的规则 $d"6y
6+It>mnR
说明: %$cwbh-{{
5`+*({
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 9J?j2!D
%=]{~5f>
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 L^=>)\R2$[
u7/M>YJ`T
一般参数: {[$p}#7Y
!B\\:k]aO^
-f 快速模式/尚未完成 v uJ~Lg{
}$7Hf+G
-i 互动模式/ 每个动作将要被确认 {*|yU"
dlWw=^
-v 详细输出/ 列出所选择程序的资讯 p?}Rolk7
j#*K[
-w 智能警告讯息/ 尚未完成 M6e"4Gh
H(pOR<`
-n 没有动作/ 显示程序代号 0trFLX
';1
c
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 q%JV"9,
YFW+l~[#
-t 终端机代号 ( tty 或 pty ) MVdE7P
T1x$v,)8x
-u 使用者名称 ht1
jrCe
U'\\(m|
-p 程序代号 ( pid ) =3}+f-6"'
OxD\e5r
-c 命令名称 可使用的讯号: !PO(Bfd
d`:0kOF+
以下列出已知的讯号名称,讯号代号,功能。 04(h!@!g:
A.y$.(
名称 (代号) 功能/ 描述 _|*j8v3
Y)uNzb6R
ALRM 14 离开 #>233<
1D*eu
HUP 1 离开 , vky
f6m^pbQFl
INT 2 离开 "aP/214Ul
-Wmpj
KILL 9 离开/ 强迫关闭 }x%"Oq|2]x
5[GX
PIPE 13 离开 ^wX_@?aKtt
vv3dr_l:
POLL 离开 o?b"B+#
3{:d$- y
PROF 离开 ;BI{v^()s
a#kZY7s
TERM 15 离开 K,So#Ui
Edjh*
USR1 离开 {L8SDU{P
&;y(@e}D
USR2 离开 4gYP .h:,
I\[*vgjm3G
VTALRM 离开 SkK=VeD>8
e\P+R>i0
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 's
e9|:
J+9D/VT
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 HHX9QebiST
Y<{j':
TSTP 停止 /产生与内容相关的行为 "['YMhu_
lRO4-
y
TTIN 停止 /产生与内容相关的行为 mX<D]Z< k
'dx4L }d
TTOU 停止 /产生与内容相关的行为 H\O|Y@uVr
1XSqgr"3
STOP 停止 /强迫关闭 |C5i3?
!x,3k\M
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 AKS(WNGEp
)Dv"seH.
PWR 忽略 /在某些系统中会离开 6/GhQ/T%D
//WgK{Mt
WINCH 忽略 | o+vpy
mhcJ0\@_
CHLD 忽略 eqLETo@} *
KKOu":b
ABRT 6 核心 GM@TWwG-B
R,y8~D
FPE 8 核心 atPf527\`
.fZv H
ILL 4 核心 -,Q<*)q{
t[#`%$%'
QUIT 3 核心 PZ"xW0"-
%.Mtn%:I*
SEGV 11 核心 0ai4%=d-
{(t (}-:Z
TRAP 5 核心 f(9w FT
h>\}-|Ek
SYS 核心 /或许尚未实作 X-t4irZ)
J,E&Uz95%
EMT 核心 /或许尚未实作 A]R"C:o
AjZT- Q0L
BUS 核心 /核心失败 d/7c#er
v}iJ:'
XCPU 核心 /核心失败 ;7qk9rz4
?p$WqVN}
XFSZ 核心 /核心失败 F.O2;M|x
jP+4'O!s[
范例: Rk`c'WP0*
停止所有在 PTY 装置上的程序 <f:b%Pm7
skill -KILL -v pts/* ;9 b?[G
_*&<hAZj
停止三个使用者 user1 , user2 , user3 I /RvU,
skill -STOP user1 user2 user3 b/<4\f
en#W<"_"
其他相关的命令: kill &
yw-y4 =
名称:expr =axi0q?}
使用权限:所有使用者 nEs l
### 字串长度 Vd|/]Zj
=(v/pLLK?
shell>> expr length "this is a test" g[!sGa&
14 '?Hy"5gUA
### 数字商数 M}us^t*
shell>> expr 14 % 9 LgB}!OLQ
5 q-p4k`]
### 从位置处抓取字串 >Utn[']~
shell>> expr substr "this is a test" 3 5 e3',? 5j
is is "BEU%,w
### 数字串 only the first character C%G-Ye|@
shell>> expr index "testforthegame" e _3ZZ-=J:=*
2 'L= g(
### 字串真实重现 E-n!3RQ(w
shell>> expr quote thisisatestformela MQp1j:CK
thisisatestformela