linux常用命令
WBR# Ux JOyM#g9-? 称:/etc/aliases
<pM6fI6BD 使用权限:系统管理者
+_jM$?:F} 使用方式: 请用 newaliases 更新资料库
y5 X FJj 说明:
TN<"X :x9 sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
n`!6EaD _Td#C1g3 /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
/T2 v`Li # newaliases
bK{ VjXF )1 QOA 下面命令会做相同的事,
i-.AD4 # sendmail -bi
_|{Z850AS \+&)9 !K 相关命令:
_Ud! tK*H mail, mailq, newaliases, sendmail
]W5p\(1g OzR<jCOS ” mail [返回]
RL
H!f1cta 名称:mail
Bn.5ivF3 wk'&n^_br 使用权限:所有使用者
F+L%Ho;@P f{uS 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
\GKR(~f ~_IQ:]k 说明:
-9Ygn_M mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
\7%wJIeyx s'OK])>` 参数:
(*,R21<% i 忽略 tty 的中断讯号。 (interrupt)
{s8g;yU5 I 强迫设成互动模式。 (Interactive)
r%NzKPW' v 列印出讯息,例如送信的地点、状态等等。 (verbose)
p*Yx1er1 n 不读入 mail.rc 设定档。
`b%^_@Fb s 邮件标题。
d[nz0LI|mk c cc 邮件地址。
KHGUR(\Rd6 b bcc 邮件地址。
mx#)iHY 3o"l
sly 范例:
):A.A,skf "-j96
KD 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
+q+JOS]L mail
user1@email.address
jVHS1Vsei mail
user1@email.address user2
A,(9|#%L if3z Fh 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
OMd:#cWsQ ;0NJX)GL mail -s 标题 -c user1 user2 < mail.txt
px(~ZZB" fI'+4
)@x 指令:mesg
k~F,n 使用权限 : 所有使用者
y,@yaM}-/K }lCQ+s! 使用方式 : mesg [y|n]
&> R:oYN de[NIDA;` 说明 : 决定是否允许其他人传讯息到自己的终端机介面
.[1@wW&L 06v'!M 把计 ?
8i<]$ sGpAaGY> y : 允许讯息传到终端机介面上。
madbl0[y. n : 不允许讯息传到终端机介面上 。
O7yj< 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
/b/ 6*& "?FBbJ
例子 :
" BLJh)i 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
hzpl;Mj mesg n
(]10Z8"fJ 与 mesg 相关的指令有: talk,write,wall。
w'7J`n:{] 名称:/etc/aliases
YPO24_B 使用权限:系统管理者
JNP6qM 使用方式: newaliases
^t$uDQ[hA 说明:
;Cjj_9e,: sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
dxH . y(E<MRd8V /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
Z|)1 ftcC {~G~=sC$ 参数:没有任何参数。 范例:
LlVbY=EX7 # newaliases
_'^_9u G g_?Q3 下面命令会做相同的事,
)n[=)"rf # sendmail -bi
DbtkWq% -rT#Wi 相关命令:
A"R(?rQi= mail, mailq, newaliases, sendmail
g1]bI$; 名称 : talk
?ef7%0 使用权限 : 所有使用者
W1ndb: Uv~|Xj4. 使用方式 :
mHJGpJ=a- $1Wb`$ talk person [ttyname]
5fz
K*[B 说明 : 与其他使用者对谈
AsvH@\\ AVfF<E/ 把计 :
F
IB)cpo person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name Y]5MM:mI ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
`)MKCw$e q!~DCv df 例子.1 :
[$:L|V!{ 8U7dd[ 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
Lr=^0 talk Rollaend
,}9
tJY@E 9}tl@ 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
3\C+g{}e 2!9Zw$ 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
w@n}DCFt talk
Rollaend@linuxfab.cx pts/2
C}DIm&)) 1TF S2R n BHErc\ITP 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
![J_6f}! ~k}O"{
y 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
SUW=-M x3.,zfWs 名称 : wall
j*;.>akY7 使用权限 : 所有使用者
\~t!M~H TmM~uc7mj 使用方式 :
%az6\"n wall [ message ]
G)_Zls2; 使用说明:
1K R4Wq@ wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
<(V~eo
e kLpq{GUv: 例子 :
PSX
o" nV`W0r(f' 传讯息"hi" 给每一个使用者 :
y9=<q%Kc- wall hi
K8_\U0 K 名称 : write
_}T )\o 使用权限 : 所有使用者
Gvvw:]WgF <aI}+ 使用方式 :
Cb.M */K]sQZa write user [ttyname]
og&h$<uOZt 说明 : 传讯息给其他使用者
LnsYtkbr N.ZuSkRM 把计 :
2"%f:?xV{ ` K0PLxSv user : 预备传讯息的使用者帐号
]&`=p{Z ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
]mgpd}Y ASr@5uFR 例子.1 :
AN|f:259 %L
wq. 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
%Y5F@=>& write Rollaend
f&RjvVP?s ^62I 5k/u 接下来就是将讯息打上去,结束请按 ctrl+c
<U\8&Uv> NA`8 ^PZ 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
"V`DhOG& write Rollaend pts/2
-w5sXnS vb`aV<MhH 接下来就是将讯息打上去,结束请按 ctrl+c
OPogH=vf ?32i1F! 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
\C$cbI=;+ qElPYN*wF 名称:kill
"pH;0[r] 使用权限:所有使用者
?1] \3nj U}5]Vm$] 使用方式:
D0TFC3.k} dxtG3 kill [ -s signal | -p ] [ -a ] pid ...
_sy]k A kill -l [ signal ]
up0=Y
o@ 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
>g@@ yR, 把计?
8s-X H `0!%jz= -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
!C^>tmqS -p : 印出 pid , 并不送出信号
IR;3{o -l (signal) : 列出所有可用的信号名称
oEj$xm_} 范例:
x-4d VKE*z v$5D&Tv 将 pid 为 323 的行程砍掉 (kill) :
{ 9\/aXPS kill -9 323
2t45/:, ^uVPN1}b^@ 将 pid 为 456 的行程重跑 (restart) :
b.kV>K"X3 kill -HUP 456
H\9ePo\b~ P_75-0G 名称:nice
i*A_Po 使用权限:所有使用者
GxC\Nj# ?|!m 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
J Rj{Q 1J :hR^?{9Z4> 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
NX:\iJD)1U JLjs`oqh }_@p`>|)rB 把计?
-9o7a_Z +RkXe;q -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
K,*-Y)v2W --help 显示求助讯息
-7%dgY( --version 显示版本资讯
R|Uu 范例:
kX:1=+{xg 将 ls 的优先序加 1 并执行 :
W`TSR?4~t? nice -n 1 ls
`gJ$fTi& T,PN6d 将 ls 的优先序加 10 并执行 :
e#F3KLSL` nice ls将 ls 的优先序加 10 并执行
6BEDk!
MIWc
@.i2 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
>xsY"N&1i' Hc8!cATQk 名称:ps
J6rWe 使用权限:所有使用者
%,aSD#l`f 使用方式:ps [options] [--help]
x {Dw?6TP 说明:显示瞬间行程 (process) 的动态
'SrDc'? 参数:
4nh0bI N1 ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
HYY+Fv5 -A 列出所有的行程
Q|2*V1"r<2 -w 显示加宽可以显示较多的资讯
t"e %'dFv -au 显示较详细的资讯
U^qS[HM -aux 显示所有包含其他使用者的行程
Z,M2vRj"qT OIjG`~Rx au(x) 输出格式 :
DNyt_5j&: :2:%
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
C#3&,G W USER: 行程拥有者
0V`~z-# PID: pid
ZjrBOb %CPU: 占用的 CPU 使用率
ej=}OH4 %MEM: 占用的记忆体使用率
:
Cli8# VSZ: 占用的虚拟记忆体大小
Wc;N;K52 RSS: 占用的记忆体大小
roe_H> TTY: 终端的次要装置号码 (minor device number of tty)
<yvo<R^30 STAT: 该行程的状态:
CUBL/U\= D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
F6:LH,~8 R: 正在执行中
2^:iU{ S: 静止状态
If8
^ T: 暂停执行
wub7w# Z: 不存在但暂时无法消除
Be<bBKQb W: 没有足够的记忆体分页可分配
TD4
n%k. <: 高优先序的行程
HIfi18 N: 低优先序的行程
F5M|QX@- L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
9F~5Ht START: 行程开始时间
dP]Z: TIME: 执行的时间
K5??WB63B
COMMAND:所执行的指令
Kq+vAp). 范例:
lE8_Q *ev ps
Vf=,@7 PID TTY TIME CMD
l\d[S] 2791 ttyp0 00:00:00 tcsh
E33x)CP 3092 ttyp0 00:00:00 ps
Ay%]l| Gm % ps -A
nB5^ PID TTY TIME CMD
n0%S: ( 1 ? 00:00:03 init
q~*|Wd'& 2 ? 00:00:00 kflushd
o? K>ji! 3 ? 00:00:00 kpiod
]"j%:fr 4 ? 00:00:00 kswapd
*/$] kE 5 ? 00:00:00 mdrecoveryd
,JPDPI/a .......
HW"5MZ8E % ps -aux
s:z USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
_)4zm root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
BIg2`95F| root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
x@pzgqi3 root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
=CCddLO root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
mJH4M9WJ] ........
[[]NnWJ 名称:pstree
+ EKp*Vje 使用权限:所有使用者
6{fo.M? 使用方式:
,">CPl] pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
}wEt=zOJ pstree -V
0G+qF96 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
qP=a:R- 参数:
t$R0UprK -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
GSH,;cY -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
BAT.> 范例:
l}#d^S/ pstree
JxM32?Rm*w `/WOP`'zM init-+-amd
2+R]q35- |-apmd
GW%!?mJ |-atd
*GdJ<B$ |-httpd---10*[httpd]
%0 U@k!lP %pstree -p
3jto$_3'w init(1)-+-amd(447)
FR]uCH |-apmd(105)
<Oy2JjY |-atd(339)
aghlYcPg %pstree -c
y'JJ#7O= init-+-amd
zhyf}Ta' |-apmd
2j1HN |-atd
~i>'3j0@k |-httpd-+-httpd
|]-~yYqP3 | |-httpd
eQqCRXx | |-httpd
VjZb\
d4 | |-httpd
#ZHKq7 ....
6r[pOl: 名称:renice
e%0IEX 使用权限:所有使用者
_LWMz=U=J/ 6QP T 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
+]hc!s8 VwXR,( 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
EFu> gs~u8"B 把计?
:
>$v@d X3ZKN; -p pid 重新指定行程的 id 为 pid 的行程的优先序
?b(DDQMf -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
+hH7|:JQ -u user 重新指定行程拥有者为 user 的行程的优先序
R m2M 范例:
n~i^+pD@ 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
;B:\e8 renice +1 987 -u daemon root -p 32
.l,NmF9 "#Q"gC.K 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
u =(.} 4%<D\# 名称:top
u}?{1B! 使用权限:所有使用者
?b]f$
2
?9*[\m?- 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] %fh-x(4v
Cth<x n(Q
说明:即时显示 process 的动态 LXR>M>a`
|m$]I4Jr
把计? PK_2
Y)M-?|4
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s Ow-;WO_HQ
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 wMM1Q/-#
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 /5\{(=0
s : 安全模式,将交谈式指令取消, 避免潜在的危机 P rv=f@
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 +bWo{
n : 更新的次数,完成后将会退出 top b}hQU~,E
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 2D3mTpw
Ka"1gbJ|
范例: oV~S4|9:
显示更新十次后退出 ; wFBSux$
top -n 10 4@M}5WJ7
B{V(g"dM
使用者将不能利用交谈式指令来对行程下命令 : %XXjQ5p
top -s v6T<K)S
Jp~[Dm
将更新显示二次的结果输入到名称为 top.log 的档案里 : ~UsE"5
top -n 2 -b < top.log ,JJ1sf2A
3b<;y%
名称:skill 9a'}j#mJo
@\=4 Rin/q
使用权限:所有使用者 >vuR:4B
g_"B:DR
使用方式: skill [signal to send] [options] 选择程序的规则 J^pq<
F}5skD=
说明: %V-Hy ;V
C{V,=Fo^
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 ;9uDV-"
}7qboUG e
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 U(<~("ocN
xp"F)6
一般参数: H.[(`wi!I
pJQ_G`E
-f 快速模式/尚未完成 ip*UujmNyR
cs]3Rp^g
-i 互动模式/ 每个动作将要被确认 R~#&xfMd.
"
_TAo
-v 详细输出/ 列出所选择程序的资讯 2]tW&y_i
AxCFZf 5
-w 智能警告讯息/ 尚未完成 asbFNJG{
6N.MCB^
-n 没有动作/ 显示程序代号 S&'-wAEd
Lcs?2c:%
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 cvV8;
d ?,wEfwp
-t 终端机代号 ( tty 或 pty ) <!?ZH"F0
t&G #%
-u 使用者名称 1kh()IrA
^pocbmg
-p 程序代号 ( pid ) (abtCuZ8z
?"p.Gy)
-c 命令名称 可使用的讯号:
8oJp_sw
biHZyUJ
以下列出已知的讯号名称,讯号代号,功能。 BM02k\%
=>xyJ->R
名称 (代号) 功能/ 描述 d s}E|Q
I"WmDC`1
ALRM 14 离开 kM(,8j
qK&h$;~*y
HUP 1 离开 ^O3p:X4u
|b|bL 7nx
INT 2 离开 U+@rLQ.-
?a~#`<
KILL 9 离开/ 强迫关闭 -L2%,.E>4
zY&/lWW._
PIPE 13 离开 I -V=Z:
F'njtrO3
POLL 离开 sfCU"O2G
^<Sy{KY
PROF 离开 t\-;n:p-
sTECNY=l
TERM 15 离开 EB5^eNdL
x<) T,c5Y
USR1 离开 ODPWFdRar
G5$YXNV
USR2 离开 ezr'"1Ba}
>NBwtF>
VTALRM 离开 2| ERif;)
-p20UP 1I
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 RG`eNRTQ%
?#u_x4==e
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 kBrU%[0O
H`jvT]
TSTP 停止 /产生与内容相关的行为 ?L>}(
{9
>]?!9@#IH
TTIN 停止 /产生与内容相关的行为 ~4ysg[`
lJU]sZ9~b
TTOU 停止 /产生与内容相关的行为 cb _nlG!
IjRUL/\=
STOP 停止 /强迫关闭 W%K=N-kE_
?qczMck_
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 |Q#CQz
6b h.5|
PWR 忽略 /在某些系统中会离开 e|.a%,Dcy
* l-F
WINCH 忽略 ++d[YhO
qk!,:T
CHLD 忽略 @)3orH
~@'DYZb-
H
ABRT 6 核心 jN sM&s,
{o8K&XU#&t
FPE 8 核心 !]!J"!xg*
Qy|6A@
ILL 4 核心 u S{WeL6%
c4FU@^Vv
QUIT 3 核心 1tFx
Z#(G
jGOE
CKP
SEGV 11 核心 4Kn)5>
:&$WWv
TRAP 5 核心 )<^G]ajn
e&F=w`F\
SYS 核心 /或许尚未实作 vA0f4W 8+
Rc`zt7hbJ
EMT 核心 /或许尚未实作 z6bIv}
#|acRZ9
}
BUS 核心 /核心失败 -o`|A767
d{RMX<;G
XCPU 核心 /核心失败 1IZTo!xi
BPC>
XFSZ 核心 /核心失败 n,%/cUl
jg=}l1M"
范例: UJrN+RtL
停止所有在 PTY 装置上的程序 `:EU~4s\
skill -KILL -v pts/* IFF3gh42.
RJA#cv~f
停止三个使用者 user1 , user2 , user3 WlnS.P\+E
skill -STOP user1 user2 user3 )W3kBDD
"l
1z@
其他相关的命令: kill C 4hvk'=
名称:expr e2MjV8Bs
使用权限:所有使用者 QhmOO-Z?
### 字串长度 Eilo;-El
}1Km h]
shell>> expr length "this is a test" c$R<j'7
14 [knwp$
### 数字商数 +cx(Q(HD\
shell>> expr 14 % 9 2)jf~!o)Z
5 MHAWnH8
### 从位置处抓取字串 "AHuq%j
shell>> expr substr "this is a test" 3 5 'Rw*WK
is is /7yd&6`I
### 数字串 only the first character hO4* X
shell>> expr index "testforthegame" e w!m4
2 Xm[Cgt_?
### 字串真实重现 Y .\<P*iO
shell>> expr quote thisisatestformela j'nrdr6n
thisisatestformela