linux常用命令
"R23Pi Aq"PG}Ic 称:/etc/aliases
9:-T@u 使用权限:系统管理者
0R|K0XH#$ 使用方式: 请用 newaliases 更新资料库
Z(HZB 说明:
D-pX<0-y sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
xQo~%wW,? _IxamWpX$ /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
tq&Yek>C # newaliases
\45(#H<$ >ZeEX,N 下面命令会做相同的事,
,T$r9!WTM # sendmail -bi
c;wA MqdB\OW& 相关命令:
-2 xE#r mail, mailq, newaliases, sendmail
&DLhb90 ~M*gsW$ ” mail [返回]
j&CZ=?K^c 名称:mail
q`^3ov^</ WYLX?x 使用权限:所有使用者
>)^NJ2Fd <Y>3 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
,eXFN?CB (@q3^)I4 说明:
)[jy[[K( mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
g/#~N~& YBvd
q1 参数:
o@3B(j;J` i 忽略 tty 的中断讯号。 (interrupt)
>A($8=+#x I 强迫设成互动模式。 (Interactive)
Q>=-ext}q v 列印出讯息,例如送信的地点、状态等等。 (verbose)
*H"aOT^{ n 不读入 mail.rc 设定档。
y9!:^kDI s 邮件标题。
;Iq5|rzDn c cc 邮件地址。
K_#UZA< Y b bcc 邮件地址。
uNbIX:L, _2OuskL 范例:
-!TcQzHUs D0 ruTS 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
TsD;Kl1 mail
user1@email.address
v459},!P mail
user1@email.address user2
3ji:O T QKccrAo 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
Gw{+xz KJ @9vvR7{P mail -s 标题 -c user1 user2 < mail.txt
+"uwV1)b" tS<h8g_ 指令:mesg
XWtiwf'K 使用权限 : 所有使用者
nU17L6'$ PN
&|8_ 使用方式 : mesg [y|n]
azX`oU,l $XGtS$ 说明 : 决定是否允许其他人传讯息到自己的终端机介面
0T))>.iu# {eR9 ;2! 把计 ?
lFfXWNb .C= I^ y : 允许讯息传到终端机介面上。
e$|VG*
d n : 不允许讯息传到终端机介面上 。
aZKXD! 4 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
c'05{C VR4%v9[1 例子 :
y|sma;D 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
{mSJUK?TKl mesg n
tU:FX[&?R 与 mesg 相关的指令有: talk,write,wall。
fxtxu?A> 名称:/etc/aliases
o56kp3b)b 使用权限:系统管理者
Ae49n4J 使用方式: newaliases
I4ilR$jg 说明:
/DO'IHC.o sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
0S.?E.-&0 zfjw;sUX /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
?"j@;/= 9":2"<'+ 参数:没有任何参数。 范例:
#ElejQ|? # newaliases
>nry0 ;z0, "EH,J 下面命令会做相同的事,
FkB{ SCJ # sendmail -bi
Mr*|9h S$O,] @) 相关命令:
+(mL~td01 mail, mailq, newaliases, sendmail
dJl^ADX[@ 名称 : talk
c7qwNs*f 使用权限 : 所有使用者
[H,u)8) !8$RBD % 使用方式 :
}q'WC4. GuO`jz F talk person [ttyname]
wiE]z 说明 : 与其他使用者对谈
yd>}wHt ?/d!R]3 把计 :
T"!EK& person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name l!IGc: ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
``9 GY O&'/J8 例子.1 :
Q4wc-s4RN q#vlBL 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
/6U
4S>'( talk Rollaend
};sMU6e <*Y'lV 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
GBbh ar},g 5@P-g 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
]0/p 7N14 talk
Rollaend@linuxfab.cx pts/2
]MAT2$"le ;fGx;D Ro r2qDF 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
NHkL24ve 1q]c7" 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
AuCWQ~ FT/amCRyT 名称 : wall
HC7JMj 使用权限 : 所有使用者
cOku1g8 70Ka! 使用方式 :
3ATjsOL wall [ message ]
`|<+ ? 使用说明:
5 =Z!hQ} wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
Uix{" ~m`!;rE 例子 :
"l,UOv c =!,Gst_ 传讯息"hi" 给每一个使用者 :
O3%[dR wall hi
s#^pC*,' 名称 : write
k/lFRi-i 使用权限 : 所有使用者
I]uhi{\C @2e2^8X7f 使用方式 :
Pp_V5,i\ 9Nt3Z>d write user [ttyname]
\9/1L?@ 说明 : 传讯息给其他使用者
/cY^]VLe hz)9"B\S 把计 :
f\K#>u*
Q \0AiCMX[ user : 预备传讯息的使用者帐号
-x'e+zT ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
aqr!oxn?t uD)-V;}P@; 例子.1 :
a$}mWPp+f
W9R`A 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
-7`-wu write Rollaend
Sz0+<F#5 EOVZGZF 接下来就是将讯息打上去,结束请按 ctrl+c
b3U6;]|x Z+idLbIs 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
+LzovC@^ write Rollaend pts/2
`6Hf&u< 97!5Q~I 接下来就是将讯息打上去,结束请按 ctrl+c
xl]
;*& -G b-^G 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
?~F. / 9L)L|4A.l 名称:kill
fp&Got!pB 使用权限:所有使用者
h~miP7,c<u $TG?4 使用方式:
.JAcPyK^ &" h]y?Q kill [ -s signal | -p ] [ -a ] pid ...
"mZ.V kill -l [ signal ]
?R6`qe_F 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
9
5 H?{ 把计?
,Y!zORv<7 @ajM^L!O -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
9]$`)wZ -p : 印出 pid , 并不送出信号
((MLM3zJ -l (signal) : 列出所有可用的信号名称
PXEKV0y 范例:
V5MO} 6Rz[?-mkLO 将 pid 为 323 的行程砍掉 (kill) :
GGE[{Gb9 kill -9 323
c8ZCs? 8H
$ #+^lW 将 pid 为 456 的行程重跑 (restart) :
JTUNb'#RZ kill -HUP 456
>q(6,Mmb xm^95}80yh 名称:nice
C\Ayv)S#2 使用权限:所有使用者
KQ)T(mIqp s4t0f_vj` 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
E`AYee%l 3N<&u 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
}kPVtSQ 25em[Q:
4lz{G*u 把计?
J{~Rxa \ 4gXY$`@ -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
t[2i$%NVM --help 显示求助讯息
zj20;5o>U& --version 显示版本资讯
xo~g78jm7, 范例:
6P+DnS[] 将 ls 的优先序加 1 并执行 :
XO
wiHW{ nice -n 1 ls
S< x:t( 4/MNqit+ 将 ls 的优先序加 10 并执行 :
1xTTJyoq nice ls将 ls 的优先序加 10 并执行
YIOR$ gX*K&*q 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
!F7: i )N)ljA3] 名称:ps
rYGRz#:~+ 使用权限:所有使用者
_T]>/}}p 使用方式:ps [options] [--help]
Q]\j>> 说明:显示瞬间行程 (process) 的动态
IJPgFZ7 参数:
[ud|dwP" ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
j>!sN`dBj -A 列出所有的行程
~ hm`uP -w 显示加宽可以显示较多的资讯
qG9qN.|dC -au 显示较详细的资讯
oVkr3KZ -aux 显示所有包含其他使用者的行程
p>p'.#M gpAHC au(x) 输出格式 :
OCW+?B; Qp!J:YV USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
o}~3JBnT USER: 行程拥有者
yWHne~! PID: pid
sXB+s %CPU: 占用的 CPU 使用率
V2Y$yV8g1 %MEM: 占用的记忆体使用率
mo9$NGM&} VSZ: 占用的虚拟记忆体大小
m2b`/JW RSS: 占用的记忆体大小
cht TTY: 终端的次要装置号码 (minor device number of tty)
3h&bZ STAT: 该行程的状态:
K-4tdC3 D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
!6E:5=L^ R: 正在执行中
@^CG[:| S: 静止状态
{!=2<-Aq T: 暂停执行
;3UvkN Z: 不存在但暂时无法消除
3; y_mg W: 没有足够的记忆体分页可分配
:qnokrGzB <: 高优先序的行程
1nB@zBQu- N: 低优先序的行程
F^rl$#pCS L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
AgsR-"uh START: 行程开始时间
XGIpUz TIME: 执行的时间
EUZq$@uWL COMMAND:所执行的指令
bi,mM,N/ 范例:
l* Y[^' ps
W5/};K\. PID TTY TIME CMD
0N VI+Z$ 2791 ttyp0 00:00:00 tcsh
7@P656{ 3092 ttyp0 00:00:00 ps
RpN <= % ps -A
Qa?aL PID TTY TIME CMD
uF<S 1 ? 00:00:03 init
};p~A-E= 2 ? 00:00:00 kflushd
Gl>E[iO 3 ? 00:00:00 kpiod
a#QByP 4 ? 00:00:00 kswapd
}+DDJ6Jzs 5 ? 00:00:00 mdrecoveryd
C1 {ZW~"YI .......
xid:" y=_& % ps -aux
T} 8CfG_j USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
<gcmsiB| root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
o)!m$Q~v root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
BD'NuI root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
hbnS~sva root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
>zR14VO`_| ........
+H}e)1^I 名称:pstree
D3.VXuKn6 使用权限:所有使用者
V}:'Xgp*N 使用方式:
;eh/_hPM pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
[;@):28" pstree -V
CB({Rn 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
(UcFNeo 参数:
OPiaG!3< -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
M.[wKGX( -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
K;C_Z/<% 范例:
VN+\>j- pstree
w,
7Cr z1Q2*:)c init-+-amd
*(nJX.7 |-apmd
5H!%0LrJg= |-atd
WRM$DA |-httpd---10*[httpd]
o=mo/N4 %pstree -p
wA",SBGX init(1)-+-amd(447)
y.ql#eQ, |-apmd(105)
k_O-5{ |-atd(339)
1p=&WM %pstree -c
fz8h]PZ init-+-amd
Y Z\@)D; |-apmd
GBr,LN |-atd
-t>Z
9 |-httpd-+-httpd
M8_ R | |-httpd
hr1$1&p | |-httpd
.q inR6= | |-httpd
9A<0zt ....
J{!'f|
J 名称:renice
|hD~6a 使用权限:所有使用者
cIZ[[(Db #%WCL'6B 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
[D hEh@ 1t#XQ?8 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
.FJj 6=3(oUl 把计?
a7=YG6[ Ge1duRGa -p pid 重新指定行程的 id 为 pid 的行程的优先序
GoL|iNW` -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
8~qlLa>jc -u user 重新指定行程拥有者为 user 的行程的优先序
^k;mn-0 范例:
1b+h>.gWar 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
m2ox8(sd renice +1 987 -u daemon root -p 32
p2^)2v g@(4ujOT 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
ZR6&AiL(Bj %HVD^. V 名称:top
l# BZzJ?~ 使用权限:所有使用者
nj"m^PmWo3 _j>L4bT 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] h[,XemwX
Oc~VHT
说明:即时显示 process 的动态 H\d;QN9Q;
kw#X]`c3
把计? AbG &9=Ks
:fW.-^"VP
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s <k5`&X!+
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 My],6va^
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 UI_v3c3b
s : 安全模式,将交谈式指令取消, 避免潜在的危机 <d S5|||
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 >'.[G:b
n : 更新的次数,完成后将会退出 top :i}@Br+R7L
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 6qf-Y!D5
=tHD 4I
范例: +8eVj#N
显示更新十次后退出 ; o
Fi) d[`
top -n 10 IF
e+B"
ovSH}h!
使用者将不能利用交谈式指令来对行程下命令 : "G@E6{/
top -s EFD?di)s
3jS7 uU
将更新显示二次的结果输入到名称为 top.log 的档案里 : ^} tuP
top -n 2 -b < top.log s*eyTm
}9
?y'6l
名称:skill ]An_5J
xjE7DCmA
使用权限:所有使用者 _V&x`ks
*cPN\Iu.W
使用方式: skill [signal to send] [options] 选择程序的规则 y%FYXwR{
h*l
cEzG?A
说明: VH[l\I(h
ys/vI/e\
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 =CE HRny
JC/d:.
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 !L/tLHk+
}]`}Ja
一般参数: >gF-6nPQ
c|+y9(0|y
-f 快速模式/尚未完成 *s~i 2}
kM,@[V
-i 互动模式/ 每个动作将要被确认 n}f3Vrl
`{Hb2
}L5
-v 详细输出/ 列出所选择程序的资讯 =^#0.
g(1"GKg3K
-w 智能警告讯息/ 尚未完成 <34 7 C{q
K('
9l& A
-n 没有动作/ 显示程序代号 vWuyft*
y]w )`}Ax
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 r<v_CFJ
o;E(Kj
-t 终端机代号 ( tty 或 pty ) =m7C Jc
uRFNfX(*
-u 使用者名称 8cB=}XgYS
@::lJDGVv
-p 程序代号 ( pid ) \6Xn]S
M`(;>Kp7
-c 命令名称 可使用的讯号: {rz>^
raSF3b/0
以下列出已知的讯号名称,讯号代号,功能。 @}ZGY^
+ 2OZJVJ
名称 (代号) 功能/ 描述 {({
R: !c
!eV^Ah>PZ
ALRM 14 离开 Zi
ma^IL
4bE42c=Ca7
HUP 1 离开 ]bf'
4^0\dq
INT 2 离开 xiEcEz'lk
y)IGTW o
KILL 9 离开/ 强迫关闭 &&ja|o-
f]hBPkZ6
PIPE 13 离开 5VuCU
B5D3_iX]
POLL 离开 9#ZzE/
:J<Owh@
PROF 离开
8 qn{
$tEdBnf^ca
TERM 15 离开 HhzkMJR8
=P1RdyP
USR1 离开 }F~f&<GX6
i[mC3ghM6,
USR2 离开 !'+\]eA
<##|311o
VTALRM 离开 fi5YMYd1
C+DG+_%V*S
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 _xa}B,H
2-QuT"Gkd
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 Fka1]|j9
k>7gy?Y!K<
TSTP 停止 /产生与内容相关的行为 u}^a^B$
llHN2R%(
TTIN 停止 /产生与内容相关的行为 S_a :ML<
8moUK3w
TTOU 停止 /产生与内容相关的行为 ?0? x+
7ZL,p:f
STOP 停止 /强迫关闭 :P HUsy
`^?}s-H+
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 nZ" {y
y?[5jL|Ue
PWR 忽略 /在某些系统中会离开 ]r"31.w(
~GAlNIv]
WINCH 忽略 h<+PP]l=
-7&^jP\,
CHLD 忽略 +oE7~64LL
-bv>iIC
ABRT 6 核心 Z83q-
LZgwIMd
FPE 8 核心 .`:oP&9r
Z|V"8jE
ILL 4 核心 d4b 9rtM
EI[e+@J
QUIT 3 核心 MtMvpHk
SD)5?{6<
SEGV 11 核心 aS c#&{
A@9U;8k
TRAP 5 核心 6 ,7/8
rhlW
SYS 核心 /或许尚未实作 8<wtf]x
Z'7 c^c7_
EMT 核心 /或许尚未实作 W@R$'r,@O
g(ZeFOn
BUS 核心 /核心失败 jydp4ek_n
T*7S;<2
XCPU 核心 /核心失败 "`gf y
e[d7UV[Knn
XFSZ 核心 /核心失败 Zkwy.Hq^
2+c>O%L
范例: M Ak-=?t
停止所有在 PTY 装置上的程序 =; ~%L
skill -KILL -v pts/* oO! 1
(mD-FR@#
停止三个使用者 user1 , user2 , user3 4d{"S02h
skill -STOP user1 user2 user3 r[C3u[
GC5#1+fQ
其他相关的命令: kill U89]?^|bb
名称:expr :F!dTD$
使用权限:所有使用者 ):|G
kSm
### 字串长度 TFiuz;*|
7I2a*4}
shell>> expr length "this is a test" m'G?0^Ft
14 N7RG5?
### 数字商数 &0;{lS[N:L
shell>> expr 14 % 9 .{'Uvn
5 Im0+`9Jw
### 从位置处抓取字串 a'*5PaXU@/
shell>> expr substr "this is a test" 3 5 l<0[ K(
is is C,sD?PcSi+
### 数字串 only the first character 2n-Tpay0
shell>> expr index "testforthegame" e ,H#qgnp
2 SK2J`*
### 字串真实重现 F^ %{
;
shell>> expr quote thisisatestformela w@gl
thisisatestformela