linux常用命令
-Y*"!8
>dnH 称:/etc/aliases
UDJ{iZ 使用权限:系统管理者
Ueq*R(9> 使用方式: 请用 newaliases 更新资料库
6ty>0 说明:
g]'RwI sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
QAp+LSm TRQ@=. /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
[n[!RddY # newaliases
9?VyF'r= 3GH@|id 下面命令会做相同的事,
wVI 1sR # sendmail -bi
s Zan.Kc# mSn> 相关命令:
24ojjxz+ mail, mailq, newaliases, sendmail
y^7ol;t {Vc%g a|E ” mail [返回]
dQ4VpR9|; 名称:mail
uF xrv /H_,1Fu| 使用权限:所有使用者
E0;KTcZi kC=e>v 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
~!*xi < ag|# 说明:
M;BDo(1 mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
NVEjUt/ +-~:E_G 参数:
WaU+ZgDrG i 忽略 tty 的中断讯号。 (interrupt)
#WBlEVx;Z I 强迫设成互动模式。 (Interactive)
2OXcP!\Y v 列印出讯息,例如送信的地点、状态等等。 (verbose)
@a AR99 M n 不读入 mail.rc 设定档。
#Y*?kTF s 邮件标题。
41c]o<!=)j c cc 邮件地址。
Dc,h(2 b bcc 邮件地址。
I~LN)hqd o P@gVzx)M 范例:
pYtG%< }b9"&io 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
c7$L: mail
user1@email.address
)7U^&I, mail
user1@email.address user2
sSisO?F!Z D&Xh|}2A 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
q[6tvPfkX _ >)+
u mail -s 标题 -c user1 user2 < mail.txt
g7($lt> |}~2=r z 指令:mesg
XcOfQs 使用权限 : 所有使用者
AXUSU(hU _:hrm%^ 使用方式 : mesg [y|n]
J%G
EIe| {K\l3_=5qb 说明 : 决定是否允许其他人传讯息到自己的终端机介面
&PHejG_# 3F5Y#[L` 把计 ?
RlRkw+%m 8dg\_H_ y : 允许讯息传到终端机介面上。
!.(Kpcrg n : 不允许讯息传到终端机介面上 。
hT`kma 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
dP>~ExYtm 6S#Y$2
P 例子 :
8@Zg@>, 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
+mM=`[Z`?? mesg n
K>=KsG 与 mesg 相关的指令有: talk,write,wall。
?F{sym@i 名称:/etc/aliases
hlY]s
&0 使用权限:系统管理者
Lu.D,oP 使用方式: newaliases
CqMm'6;$a} 说明:
<Fkm7ME] sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
x-wIgo+ pGQP9r% /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
1 &24:& n#jBqr&!M 参数:没有任何参数。 范例:
;7id![KI4 # newaliases
^SP/&w<c cE{hy7cH 下面命令会做相同的事,
XILB>o.^3 # sendmail -bi
Gm,vLs9H$T }2WscxL 相关命令:
W'aZw9 mail, mailq, newaliases, sendmail
RrFq" 名称 : talk
Rne#z2Ok 使用权限 : 所有使用者
D?+\"lI ~SI`%^L 使用方式 :
!VaKq_W 'q158x talk person [ttyname]
F.zx]][JV 说明 : 与其他使用者对谈
(mO{W C$"N)6%q 把计 :
Y(aEp_kV person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name !+sC'/ ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
#6t 4 vJ1 "r!>p\.0O 例子.1 :
#w%d )7$1Da|. 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
@DiXe[kI talk Rollaend
J1i{n7f=@ pbfIO47ZC 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
f`ro{p `pMI@"m 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
h |Ofi talk
Rollaend@linuxfab.cx pts/2
gMN>`Z`fV 4LG[i}u.N 26SXuFJ@ 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
$w,?%i97 4Zz%vY 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
C`G+b{o L]wWJL 名称 : wall
9((BOq 使用权限 : 所有使用者
~m/nV81 Xk9mJ]31LC 使用方式 :
lk.]!K$} wall [ message ]
wM$N#K@ 使用说明:
w=NM==cLj wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
" ^v/Y u|;?FQ$M 例子 :
VI xGD#m [&_7w\m 传讯息"hi" 给每一个使用者 :
RIhu9W wall hi
d=`a-R0 名称 : write
968<yO] 使用权限 : 所有使用者
z7vc|Z|
5j8aMnv s 使用方式 :
:G.u{cw @nC][gNv write user [ttyname]
b 7XTOB_HO 说明 : 传讯息给其他使用者
PK C}!>2 WqX$;'}h 把计 :
UL{+mp {gL8s
user : 预备传讯息的使用者帐号
M =/+q ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
U yb -feG ,/fB~On- 例子.1 :
QN4{xf:}S BlLK6"gJT 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
.uh>S!X, ] write Rollaend
]%%I=r CP]nk0 接下来就是将讯息打上去,结束请按 ctrl+c
-_*ux! 7
KuUV!\h` 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
2XX- write Rollaend pts/2
]\~s83?X (vR9vOpJ 接下来就是将讯息打上去,结束请按 ctrl+c
r\PO?1 )WBp.j /# 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
c)*,">$# {[|je]3v 名称:kill
g~7x+cu0 使用权限:所有使用者
ftb .CPWI T!f+H?6 使用方式:
8"'Z0
Ey c-jE1y< kill [ -s signal | -p ] [ -a ] pid ...
{PGiNY%q kill -l [ signal ]
zIzL7oD 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
Y)O88C 把计?
VQ R
E] YW14X -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
v pg*J/1[ -p : 印出 pid , 并不送出信号
dguN<yS-E -l (signal) : 列出所有可用的信号名称
?&`PN<~2z 范例:
Ad}Nc"O &GfDo4$ 将 pid 为 323 的行程砍掉 (kill) :
N9dx^+\ kill -9 323
rSg OQ N*1{yl76x 将 pid 为 456 的行程重跑 (restart) :
T1-.+&< kill -HUP 456
\ u*R6z }5Zmc6S{ 名称:nice
KgH_-REN 使用权限:所有使用者
1
$m[#3 *'-[J 2 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
We`6# \Z X ~D0e\Q(A 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
XLgp.w; _:1s7EC iW?z2%# 把计?
^XgBkC~ .)g7s? K -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
9Ai3p --help 显示求助讯息
17E,Qnf --version 显示版本资讯
d)WGI
RUx 范例:
3/{,}F$ 将 ls 的优先序加 1 并执行 :
oypF0?!m nice -n 1 ls
N Zu2D H3xMoSs 将 ls 的优先序加 10 并执行 :
u2E}DhV nice ls将 ls 的优先序加 10 并执行
vNDf1B5z D_Zt:tzO 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
Yn_v'Os2 jtv<{7a 名称:ps
J1u&Ga 使用权限:所有使用者
1YtbV3 使用方式:ps [options] [--help]
uPVO!`N3 说明:显示瞬间行程 (process) 的动态
0{'m":D9 参数:
z.T>=C ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
0sP*ChY5S -A 列出所有的行程
9 gc0Ri[4m -w 显示加宽可以显示较多的资讯
)i^S:2 -au 显示较详细的资讯
5F78)qu6N -aux 显示所有包含其他使用者的行程
D & Bdl5g wBlo2WY au(x) 输出格式 :
;S?ei>Q {00Qg{;K| USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
8zO;=R A7% USER: 行程拥有者
Kgw,]E&7 PID: pid
s?Z{LWZ@ %CPU: 占用的 CPU 使用率
p_B5fm7#6W %MEM: 占用的记忆体使用率
.)c+gyaQ VSZ: 占用的虚拟记忆体大小
M^&^g RSS: 占用的记忆体大小
l+#uQo6cqQ TTY: 终端的次要装置号码 (minor device number of tty)
?~3Pydrb# STAT: 该行程的状态:
GUps\:ss D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
z7s}-w, R: 正在执行中
veAdk9 S: 静止状态
|/%X8\ T: 暂停执行
S[e> 8 Z: 不存在但暂时无法消除
Ly-}HW ( W: 没有足够的记忆体分页可分配
AIG5a$}& <: 高优先序的行程
PVi0| N: 低优先序的行程
<xlyk/ L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
Tl
L,dPM START: 行程开始时间
FL[,?RU?2 TIME: 执行的时间
$ vBFs]h COMMAND:所执行的指令
tx$`1KA 范例:
bMB@${i} ps
^@
Xzh: PID TTY TIME CMD
`PtfPt<{ 2791 ttyp0 00:00:00 tcsh
Xd@ d$ 3092 ttyp0 00:00:00 ps
v[4-?7- % ps -A
/^9=2~b PID TTY TIME CMD
?/fC"MJq? 1 ? 00:00:03 init
6Zx)L|B 2 ? 00:00:00 kflushd
)@],0yL 3 ? 00:00:00 kpiod
f<;eNN 4 ? 00:00:00 kswapd
>{{0odBF 5 ? 00:00:00 mdrecoveryd
!8I80:e_~ .......
Hyb_>n % ps -aux
fp?/Dg"49. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
R9-Uoc/ root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
9*S9~ root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
5i-VnG
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
IOY<'t+ root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
ig ^x%!; ........
! JauMR 名称:pstree
UmL Boy&* 使用权限:所有使用者
eWr2UXv$ 使用方式:
pwVaSnre` pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
39bw,lRPV pstree -V
@2~;)* 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
I&f!>y?,Z 参数:
Eih6?Lpu -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
i|xC#hV -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
!
Q8y]9O 范例:
L5wR4Ue) pstree
|qf ef& GK[9Cm"v init-+-amd
pB0 SCS* |-apmd
g f<vQb| |-atd
Prrz> |-httpd---10*[httpd]
_ZE&W %pstree -p
Ud_0{%@ init(1)-+-amd(447)
xk7VuS* |-apmd(105)
\;1nEjIA |-atd(339)
> .K %pstree -c
lv#L+}T init-+-amd
)
D5JA` |-apmd
3b/J |-atd
W)AfXy
|-httpd-+-httpd
:)F0~Q | |-httpd
_q}^#- | |-httpd
-Np}<O`./ | |-httpd
QsBC[7<jd- ....
T~
P<Gq}, 名称:renice
^@)*voP#G 使用权限:所有使用者
Y o\%53w/ Lb~'
I=9D 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
%GGSd0
g A&V'WahC@I 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
P} w0= |<JBoE]3B 把计?
H#3Ma1z De\Ocxx -p pid 重新指定行程的 id 为 pid 的行程的优先序
kBtzJ#j B -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
63VgQ -u user 重新指定行程拥有者为 user 的行程的优先序
IeAi ' 范例:
C3KAQU 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
l4YTR4D renice +1 987 -u daemon root -p 32
y>c Yw! Qx8O&C?Ti 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
"}b/[U@> AG|:mQO 名称:top
!O4)YM 使用权限:所有使用者
TiKfIv h#Z~x 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] cvC 7#i[G
zd=N.
说明:即时显示 process 的动态 ywj'O
e41
~<"{u-q#K
把计? QO %;%p*
,L; y>::1
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s C?]+(P
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 7>3+]njw
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 %<1_\N7
s : 安全模式,将交谈式指令取消, 避免潜在的危机 5}2148
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 u179!
n : 更新的次数,完成后将会退出 top 2tS,q_-=
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 rxOvYF
MC1&X'
范例: dB8 e
显示更新十次后退出 ; p-h(C'PqF
top -n 10 #e[igxwi
Jm 1n|f
使用者将不能利用交谈式指令来对行程下命令 : j07b!j:"\}
top -s } a!HbH
7! ~)a
将更新显示二次的结果输入到名称为 top.log 的档案里 : |Ew&. fgz
top -n 2 -b < top.log oN,9#*PVL
!gi3J @
名称:skill d!y_N&z|(
8Rnq
&8A
使用权限:所有使用者 QEP|%$:i
o4,9jk$
使用方式: skill [signal to send] [options] 选择程序的规则 &(NW_<(
'JJ :
说明: q*}$1 zb
"5"{~3Gw^
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 HBZtg
5>-~!Mg1
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 cK75Chsu
V=E5pB`Pr
一般参数: 5s<.qDc
N~DO_^
-f 快速模式/尚未完成 G*g*+D[HM
)!5"\eys
-i 互动模式/ 每个动作将要被确认 HG3iK
jWK>=|)=c
-v 详细输出/ 列出所选择程序的资讯 54Vb[;`Kkb
n66b(6"mO2
-w 智能警告讯息/ 尚未完成 ySHio;g9
~I@ %ysR
-n 没有动作/ 显示程序代号 vAtR\Vh
Er|j\(jM
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 Q@rlqWgU
~
*rC%nmJwk!
-t 终端机代号 ( tty 或 pty ) nX<yB9bXDg
\cQ+9e)
-u 使用者名称 bLO^5` 6
c#a>> V
-p 程序代号 ( pid ) (]$&.gE.F
Fyc":{Jd
-c 命令名称 可使用的讯号: pz]KUQ
@1V?94T1
以下列出已知的讯号名称,讯号代号,功能。 }BiA@n,
9Yji34eDZ
名称 (代号) 功能/ 描述 k"+/DK,:
?$=Ml$
ALRM 14 离开 UZo[]$"Q`
8< z
HUP 1 离开 @"afEMd
\o5/, C
INT 2 离开 B]PG
3*e )D/lm
KILL 9 离开/ 强迫关闭 ,P X7}//X^
d V3R)
PIPE 13 离开 T5aeO^x
)_K:A(V>
POLL 离开 X`7O%HiX/`
J74kK#uF=
PROF 离开 R".*dC,0'B
L/,M@1@R
TERM 15 离开 nz Klue
j^D/,SW
USR1 离开 q^b12@.
vZIx>
USR2 离开 o'ZW
:-j/Y'H_
VTALRM 离开 H4BuxM_r
+[#^c3x2
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 2K2_-
M2M&L,/O
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 /?S,u,R
avd`7eH2
TSTP 停止 /产生与内容相关的行为 '3B7F5uLx"
!~]'&9
TTIN 停止 /产生与内容相关的行为 _J0(GuG=~
^NrC8,p
TTOU 停止 /产生与内容相关的行为 z[0t%]7l
($[@'?Z1
STOP 停止 /强迫关闭 XZxzw*Y1J
Wbi12{C
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 ^F-AZP
/5F
<#lNi.?.
PWR 忽略 /在某些系统中会离开 6^TWY[z2%
20 )8e!jP
WINCH 忽略 WU6F-{M"?
'L2[^iF9
CHLD 忽略 -\g@s@5
{QIdeB[
ABRT 6 核心 t=n@<1d
'^BTa6W}m
FPE 8 核心 {QT:1U\.
sl*&.F,v=
ILL 4 核心 tS[@?qP
1pTQMf a
QUIT 3 核心 w=ZK=@
5-"aK~@+
SEGV 11 核心 }SGb`l
CMYkxU
TRAP 5 核心 `W %R
8b $e)
SYS 核心 /或许尚未实作
1Pd2%
S,#UA%V"
EMT 核心 /或许尚未实作 nk+9J#Gs
0;" >.
BUS 核心 /核心失败 O_Z
Y%8[bL$
d
XCPU 核心 /核心失败 _%<qZT
@&2#kO~=
XFSZ 核心 /核心失败 Ki%RSW(_`
OZno 3Hn
范例: Edl .R}&1
停止所有在 PTY 装置上的程序 6{2 9cX.
skill -KILL -v pts/* \C`2z]V%
8o,"G}Hjk
停止三个使用者 user1 , user2 , user3 CPu~^ik
skill -STOP user1 user2 user3 0y=lf+xA*
*"j3x}
U<
其他相关的命令: kill 34qfP{9!N
名称:expr !p3vnOX6
使用权限:所有使用者 Xl/2-'4
### 字串长度 19i [DR
%F] :nk`
shell>> expr length "this is a test" <s5s<q2
14 h\*I*I8C
### 数字商数 qa5 T(:8
shell>> expr 14 % 9 Ryi%}!
5 ,/..f!bp
### 从位置处抓取字串 8z*/J=n
shell>> expr substr "this is a test" 3 5 g y1i%
is is \_|r>vQ
### 数字串 only the first character &(A'uX.>pr
shell>> expr index "testforthegame" e EV N:3
2 5}`e"X
### 字串真实重现 MW)=l
| G
shell>> expr quote thisisatestformela ?yAjxoE~?
thisisatestformela