linux常用命令
-+1O*L! !`?i>k?Q E 称:/etc/aliases
( `bb1gz 使用权限:系统管理者
PbZ%[F 使用方式: 请用 newaliases 更新资料库
T})q/oUqK 说明:
(BP p2^ sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
8=L"rekV_ CqC
)H7A /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
$eI
cCLF # newaliases
81y<Uz 6 0{
mm%@o 下面命令会做相同的事,
X/:V{2 # sendmail -bi
&}e>JgBe0 ,NZllnW 相关命令:
~8nR3ki mail, mailq, newaliases, sendmail
EIQ3vOq6 z;oia!9z ” mail [返回]
TIiYic!_~ 名称:mail
"i#g [x 4y3c=L
No 使用权限:所有使用者
ed',\+.uB PZqp;!:xz 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
~$K{E[^< DL4`j>2Ov 说明:
BuRsz6n mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
_h^.`Tz, @H#Fzoo. 参数:
,}'8.
f i 忽略 tty 的中断讯号。 (interrupt)
oH0g>E; I 强迫设成互动模式。 (Interactive)
QK6_dIvDz v 列印出讯息,例如送信的地点、状态等等。 (verbose)
q1u$Sm n 不读入 mail.rc 设定档。
GNv{Ij< s 邮件标题。
w%qnH e9 c cc 邮件地址。
Yh1nXkA!V b bcc 邮件地址。
Q<AOc\oO ~HGSA( 范例:
0;><@{' ]vf0 f,F 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
3>7{Q_5 mail
user1@email.address
z4BU}`;b3t mail
user1@email.address user2
MnFrQC 0M;El2
P$ 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
QnS^ G{ ._tEDY/1m mail -s 标题 -c user1 user2 < mail.txt
5`fUR/|[
zo@vuB. 指令:mesg
9FSa=<0wE 使用权限 : 所有使用者
mB>0$l y %XukiA+ 使用方式 : mesg [y|n]
}(u:K}8 PRiE2Di2S 说明 : 决定是否允许其他人传讯息到自己的终端机介面
BZ.l[LMp ${z#{c1 把计 ?
eC<RM Q4 sjLMM_' y : 允许讯息传到终端机介面上。
OW};i| n : 不允许讯息传到终端机介面上 。
Rl cL(HM 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
+%9Re5R b`+yNf 例子 :
Ix_w.f=8 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
k%~;mu"4} mesg n
Bq)dqLwk 与 mesg 相关的指令有: talk,write,wall。
f:\)!
&W 名称:/etc/aliases
[n/c7Pe 使用权限:系统管理者
/
S' + 使用方式: newaliases
S'|PA7a}h 说明:
o NA ]G] sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
$S<B\\
% /d|: /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
jq]5Y^e 5SUO`4L 参数:没有任何参数。 范例:
'6NrL;
# newaliases
9O&gR46. R[\1Kk(Zo 下面命令会做相同的事,
d.w]\ # sendmail -bi
6BA$v-VVU s'N < 相关命令:
[!;sp~ mail, mailq, newaliases, sendmail
t{},Th 名称 : talk
;Ngk"5 使用权限 : 所有使用者
OHAU@*[lM ,rN$ah$CL 使用方式 :
_Cz98VqRk ~v\
W[ talk person [ttyname]
}xr0m+/ 说明 : 与其他使用者对谈
V Zbn@1 _XP}fx7$C 把计 :
mYo~RXKGF person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name L9e<hRZ$ ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
3HuocwWbz Jf=V< 例子.1 :
u8JH~b |)>+&
xk 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
u=L Dfn talk Rollaend
Kh=\YN\E< y-H9fWi8Y& 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
EZiLXQd_ `,~'T [ 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
\(Nx)F talk
Rollaend@linuxfab.cx pts/2
j<!dpt #9}1Lo> z0\
$#r^I 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
tQNc+>7k+u 9C?SEbC 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
b4^O= ?;UR9f|! 名称 : wall
QhRz57' 使用权限 : 所有使用者
pe,y'w{ & .1-6 使用方式 :
aO}hE2] wall [ message ]
<L8FI78[* 使用说明:
"@VYJ7.1 wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
cX1?4e8 arR<!y7 例子 :
y,rdyt Tz6I7S-w 传讯息"hi" 给每一个使用者 :
|95K wall hi
Tw$tE: 名称 : write
(5Q<xJ 使用权限 : 所有使用者
RgH 6l2 -a|b.p 使用方式 :
ua=7YG V!. Y M)B write user [ttyname]
sbVEA 说明 : 传讯息给其他使用者
I&i6-xp k1g-%DB 把计 :
l%Ke>9C =pmG.>Si user : 预备传讯息的使用者帐号
4s%zvRu ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
O\cc=7 `2+TN 例子.1 :
C[Q4OAFG U:7w8$_ 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
F> Ika=z, write Rollaend
8VU(+%X WQCnkP 接下来就是将讯息打上去,结束请按 ctrl+c
&m36h`tM T; [T` 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
d,i4WKp write Rollaend pts/2
fO5L[U^` aLLI\3 接下来就是将讯息打上去,结束请按 ctrl+c
uIO?4\s&G .EWj eVq 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
\rh+\9( tkptm%I_
名称:kill
'6\w4J( 使用权限:所有使用者
c^H#[<6p f:P;_/cJc 使用方式:
lz>.mXdx
Rq2bj_ j kill [ -s signal | -p ] [ -a ] pid ...
h*<`ct xL kill -l [ signal ]
.#tA .%
说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
!a V:T&6 把计?
N@Ap|`Ei T:%0i8p -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
D` cy.},L -p : 印出 pid , 并不送出信号
5IzCQqOPgX -l (signal) : 列出所有可用的信号名称
T,/<'cl" 范例:
;^E\zs U74L:&yLI 将 pid 为 323 的行程砍掉 (kill) :
9_svtO ]P kill -9 323
@S~n^v,) \cX9!lHl 将 pid 为 456 的行程重跑 (restart) :
%sZ3Gpi kill -HUP 456
8N j} _(=g[=Mer 名称:nice
)iIsnM 使用权限:所有使用者
t vW0 W \jZmu 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
p[|V7K'Z >#S}J LZ 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
7|Wst)_~j ]3]B$ D=D.s)ns* 把计?
$@^\zg1n H%=;pD>o -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
Ai 8+U) --help 显示求助讯息
_a$5" --version 显示版本资讯
pox;NdX7 范例:
Wo9=cYC) 将 ls 的优先序加 1 并执行 :
ia.+<,
$`S nice -n 1 ls
YGyw^$.w -`spu) 将 ls 的优先序加 10 并执行 :
fK(:vwh nice ls将 ls 的优先序加 10 并执行
j)Q}5M 6 AY~>p 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
})mD{c/ WT,dTn;W 名称:ps
L1 k 使用权限:所有使用者
l%i*.b( 使用方式:ps [options] [--help]
-c0*
说明:显示瞬间行程 (process) 的动态
xjxX4_ 参数:
Om7 '_} ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
E\Iz:ES^ -A 列出所有的行程
1"<{_&d1 -w 显示加宽可以显示较多的资讯
meap ;p -au 显示较详细的资讯
S n~P1C -aux 显示所有包含其他使用者的行程
9zBt
a g[ @Q iy au(x) 输出格式 :
D7thLqA ei]Q<vT6 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
$K\;sn; |: USER: 行程拥有者
$S?xB$ PID: pid
|a\,([aU %CPU: 占用的 CPU 使用率
HmsXV_B8[Y %MEM: 占用的记忆体使用率
@YS,)U)4S VSZ: 占用的虚拟记忆体大小
RSM+si/ RSS: 占用的记忆体大小
'wBOnGi6 TTY: 终端的次要装置号码 (minor device number of tty)
=b6G' O[ STAT: 该行程的状态:
uE,TEa9; D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
^MhMYA R: 正在执行中
B/~ubw S: 静止状态
Gh3f^PWnc T: 暂停执行
$b_~ Z: 不存在但暂时无法消除
YD~(l-?" W: 没有足够的记忆体分页可分配
&d!ASa <: 高优先序的行程
>N~jlr | N: 低优先序的行程
5Ktll~+:# L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
`J{{E,y
@ START: 行程开始时间
oq>jCOVh TIME: 执行的时间
3][
COMMAND:所执行的指令
us:v/WTQ 范例:
op&j4R ps
S!R(ae^} PID TTY TIME CMD
`X=[ m> 2791 ttyp0 00:00:00 tcsh
s9u7zqCF 3092 ttyp0 00:00:00 ps
(r<F@)J % ps -A
#7J3,EV PID TTY TIME CMD
5!6iAS+I 1 ? 00:00:03 init
xTZJ5iZ17 2 ? 00:00:00 kflushd
i MS4<` 3 ? 00:00:00 kpiod
7{rRQ~s&g9 4 ? 00:00:00 kswapd
sv\=/F@n 5 ? 00:00:00 mdrecoveryd
,>pv>)u{ .......
ypA 9WF % ps -aux
WUx2CK2N USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
yaI jXv root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
h9. Yux root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
Sn;q:e3i{A root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
$nf
%<Q root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
BMU#pK;P] ........
KWw?W1H 名称:pstree
z5f3T D6, 使用权限:所有使用者
; ?,'jI*1 使用方式:
rO,n~|YJ pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
7B)@ aUj$ pstree -V
eQ#"-i 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
M?ElD1#Z 参数:
xaIe7.Z"xo -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
ciPq@kMV -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
FlH=Pqc 范例:
T(kG"dz pstree
7:C2xC ;Qlb].td init-+-amd
)d=&X|S> |-apmd
C*Y0GfW= |-atd
_oU~S$hO |-httpd---10*[httpd]
~~,#<g[ %pstree -p
*+ O init(1)-+-amd(447)
@Y6~;(p |-apmd(105)
'sjks sy.3 |-atd(339)
dpcv'cRfw %pstree -c
r?Pk}Q init-+-amd
$! UEpQ |-apmd
lYrW"(2 |-atd
<+`}:
A |-httpd-+-httpd
0 n)UvJ | |-httpd
6"bdbV=t | |-httpd
7<F{a"5P | |-httpd
f[$Z<:D-ve ....
W TC/mcS 名称:renice
*&F~<HC2+ 使用权限:所有使用者
73E[O5?b t(- 5l 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
~0{F,R.$ vqwSOh|P9 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
:\#/T,K" ]=5D98B 把计?
~uO9>(?D m\|ie8 -p pid 重新指定行程的 id 为 pid 的行程的优先序
kQtnT7 -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
I9jzR~T -u user 重新指定行程拥有者为 user 的行程的优先序
Z&y9m@ 范例:
/}-LaiS 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
&?SU3@3| renice +1 987 -u daemon root -p 32
`H|#l\ [PU0!W; 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
`vrLFPdO % wh>_Ho 名称:top
`S/;S<'; 使用权限:所有使用者
a#P{ [ ey[+"6Awne 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] |uln<nM9
izP>w*/nO
说明:即时显示 process 的动态 -Wl79lE
KrD?Z2x
把计? U\tujK1
)u5+<OG}=
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s PPj0LFA
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 ->U9u lTC
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 :]IYw!_-p
s : 安全模式,将交谈式指令取消, 避免潜在的危机 kT{d pGU9
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 6y)NH 8l7
n : 更新的次数,完成后将会退出 top Hz3KoO &
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 Z|$OPMLX
Ha20g/UN.
范例: *Q2}Qbu
显示更新十次后退出 ; #ZpR.$`k
top -n 10 8u#2M8.5E
mA']*)L1
使用者将不能利用交谈式指令来对行程下命令 : <bgFc[Z
top -s G8!* &vR/
3 n=ftkI
将更新显示二次的结果输入到名称为 top.log 的档案里 : XVkCYh4,
top -n 2 -b < top.log y j C@
ygfUy
名称:skill ju?D=n@i
MFm2p?zPm
使用权限:所有使用者 4z> SI\Ss
H{j
jA+0
使用方式: skill [signal to send] [options] 选择程序的规则 `%S#XJU
@a}jnl(2
说明: n|f Huv
)wueR5P
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 E(G&mfhb
$fl+l5?9
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 a EmLf
_mn2bc9M
一般参数: ORP-@-dap
V`XtGTx
-f 快速模式/尚未完成 +LsACSB
w [7vxQ!-
-i 互动模式/ 每个动作将要被确认 {pyTiz#JY
&x<y4ORH|
-v 详细输出/ 列出所选择程序的资讯 &F#K=R| .j
%T'<vw0
-w 智能警告讯息/ 尚未完成 6E@qZvQ
r;cILS|Xr
-n 没有动作/ 显示程序代号 79O'S du@
E+e:UBeUV
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 e.jbFSnA
V+&C_PyC
-t 终端机代号 ( tty 或 pty ) mJ L=H
|QB[f*y5
-u 使用者名称 !U8n=A#,-
s'JbG&T[J
-p 程序代号 ( pid ) yRv4,{B}X>
G2BB]] m3
-c 命令名称 可使用的讯号: H$={i$*,Y
M"Q{lR
以下列出已知的讯号名称,讯号代号,功能。 ];8S<KiS~
1'"TO5
名称 (代号) 功能/ 描述 _[t:Vme}v
5isqBu
ALRM 14 离开 ?,0 a#lG
%$CV?K$C
HUP 1 离开 cHjnuL0fsy
%{HeXe
INT 2 离开 DA wUG
8*Ke;X~N
KILL 9 离开/ 强迫关闭 |g,99YIv>
&Y3r'"
PIPE 13 离开 OT{cP3;0*o
pa8R;A70Dl
POLL 离开 hX9vtV5L
N>Q~WXvV#
PROF 离开 *\PCMl
!b 4v}70,
TERM 15 离开 ~duF2m 72
-h8@B+
USR1 离开 y0_z_S#gO
[h[@?8vB
USR2 离开 urK~]68
AMf{E
VTALRM 离开 Jwt_d}ns
j9^V)\6)
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 2U.'5uA"L
@Tz}y"VG
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 ,,HoD~]rd
&-zW1wf
TSTP 停止 /产生与内容相关的行为 L| K8
xh|<`>5
TTIN 停止 /产生与内容相关的行为 &UfP8GE9
RBOg;EJ
TTOU 停止 /产生与内容相关的行为 ]wm<$+@
;nbV-<e
STOP 停止 /强迫关闭 (utk)
?8]g&V
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 Q"F" 13
8]j*z n?,
PWR 忽略 /在某些系统中会离开 L-eO_tTh0
<@H`5[R
WINCH 忽略 {u)>W@Lr
SS*3Qx:[
CHLD 忽略
Ci(c`1av
@<`P-+m
ABRT 6 核心 #G!\MYfQt
@|'$k{i
FPE 8 核心 DA_}pS"
c$^~7.~{Qy
ILL 4 核心 b>]k=zd
tg6iHFa
QUIT 3 核心 /l>!7
jT=fq'RK
SEGV 11 核心 PT39VI
=
;:obg/;uJ
TRAP 5 核心 Tnoy#w}Ve
H[2W(q6
SYS 核心 /或许尚未实作 %Hu?syo
AjD?_DPc
EMT 核心 /或许尚未实作 IN7Cpg~9%
P"f4`q
BUS 核心 /核心失败 ,{2= nb[
-an~&C5\
XCPU 核心 /核心失败 sWv!ig_
keb.%cb=
XFSZ 核心 /核心失败 9%Qlg4~<s
~CuJ$(9Y
范例: R4vf
停止所有在 PTY 装置上的程序 YHzP/&0
skill -KILL -v pts/* (tvfF0~
~$d(@T&
停止三个使用者 user1 , user2 , user3 N$N7aE$
skill -STOP user1 user2 user3 kX%vTl7F
g&I|@$\
其他相关的命令: kill ;
,n}>iTE
名称:expr oy\U\#k
使用权限:所有使用者 |.;*,bb|3
### 字串长度 t?wVh0gT
T/234;Uf|
shell>> expr length "this is a test" 9m%2&fjK^
14 @%BsQm
### 数字商数 4^T_" W}
shell>> expr 14 % 9 P,@/ap7J
5 ~J HEr48
### 从位置处抓取字串 ZRj/lQ2D
shell>> expr substr "this is a test" 3 5 ^cCNQS}r
is is S$ n?
### 数字串 only the first character m:6*4_!
shell>> expr index "testforthegame" e \+j:d9?
2 Yk0/f|>O
### 字串真实重现 +CN!3(r
shell>> expr quote thisisatestformela ~9Qd83`UH
thisisatestformela