linux常用命令
~*D)L'`2M Nd/iMV6V; 称:/etc/aliases
kNfqdCF{P 使用权限:系统管理者
th8f 使用方式: 请用 newaliases 更新资料库
ZjY_AbD 说明:
C,C%1
sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
_)Uw-vhQiT /zn|?Y[ /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
i%H_ua # newaliases
/_E:sI9( cH6ie?KvAo 下面命令会做相同的事,
VP=(",` # sendmail -bi
9}kN9u .z+?b8Q\ 相关命令:
V
?3>hQtB mail, mailq, newaliases, sendmail
w.J[3m/ -yeQQ4b ” mail [返回]
>]Hz-2b 名称:mail
}5bh,' wXDF7tJh 使用权限:所有使用者
!zL1XW)q ,5'LbO- 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
XEV-D9n NUb^!E" 说明:
\(.&E`r mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
`|wH= OYC4iI 参数:
;6t>!2I>C i 忽略 tty 的中断讯号。 (interrupt)
dra'1E I 强迫设成互动模式。 (Interactive)
TW).j6@f v 列印出讯息,例如送信的地点、状态等等。 (verbose)
m3
; n 不读入 mail.rc 设定档。
y?<[g;MuT s 邮件标题。
UT [7 J c cc 邮件地址。
QL}5vSl b bcc 邮件地址。
~X5yHf3 (}O)pqZ> 范例:
#`:s:bwM: gB&]kHLO 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
93x.b]]" mail
user1@email.address
[V{JuG;s mail
user1@email.address user2
<qZXpQ# xC`Hm?kM 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
n<8$_?- mW1Sd#0 mail -s 标题 -c user1 user2 < mail.txt
{b^naE Zqd&EOm 指令:mesg
:84ja>`c 使用权限 : 所有使用者
CB_(9T72H '15j$q 使用方式 : mesg [y|n]
Q6,rY(b6 s6Bt)8A 说明 : 决定是否允许其他人传讯息到自己的终端机介面
dpZ7eJ 0-0 )E&2 把计 ?
dVVeH\o Y@KZ:0< y : 允许讯息传到终端机介面上。
k(=\&T n : 不允许讯息传到终端机介面上 。
0o At=S 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
FO_nS 7zr\AgV9 例子 :
vc6UA%/f 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
8)5n mesg n
MP[v 9m@ 与 mesg 相关的指令有: talk,write,wall。
(m)%5*: 名称:/etc/aliases
|rdG+> 使用权限:系统管理者
;DC0LJ 使用方式: newaliases
ol!o8M%Q 说明:
dr~MyQ sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
7b+OIZB "1%<IqpU+ /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
)@eBe^ Q)#<T]~= 参数:没有任何参数。 范例:
6i.'S5. # newaliases
(N;Jw^C@ 8S]Mf*~S' 下面命令会做相同的事,
MFW?m,It) # sendmail -bi
Pdf_{8r c::x.B"w 相关命令:
=#BeAsFfO mail, mailq, newaliases, sendmail
1"/V?ArfL 名称 : talk
|\QR9> 使用权限 : 所有使用者
+V2a|uvEc <g*rTqT' 使用方式 :
d.2b7q09 zNE!m:s talk person [ttyname]
W**=X\"' 说明 : 与其他使用者对谈
OzO_E8Kb\ .Z_U]_( 把计 :
.&sguAyG person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name P?9CBhN ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
v/m`rc]e n:*+pL; 例子.1 :
xR_]^Get 2CmeO&(Qf* 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
>F+:ej talk Rollaend
rA1
gH6D HhqqJEp0 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
$35Oyd3s< hJ}G5pX 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
c'G\AbUVjE talk
Rollaend@linuxfab.cx pts/2
F)gL=6h Rw/G =zV@2 vo::y" 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
qS2%U?S7 ?-i|f_` 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
2f:'~ P56 \]9;c6( 名称 : wall
8p5'}Lq 使用权限 : 所有使用者
~(Tz < ?BLOc;I&a 使用方式 :
RU{}qPs? wall [ message ]
#zy%B 使用说明:
`3+U6>U [ wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
hV,3xrm?P TgUQD(d^ 例子 :
Ja (/ym^ 5G!X4%a 传讯息"hi" 给每一个使用者 :
S 5d{dTPq wall hi
@"~\[z5 名称 : write
5sE^MS1 使用权限 : 所有使用者
HAiUFO/R p/:5bvA 使用方式 :
fC-^[Af) g@U#Y#b@" write user [ttyname]
T+[e6/| 说明 : 传讯息给其他使用者
AzV5Re8M
1y@- 把计 :
srSTQ\l4 k N^)6 user : 预备传讯息的使用者帐号
yp4G"\hN9 ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
O-B3@qQ. h \8$`:3,@ 例子.1 :
=aekY;/ D!P?sq _5r 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
7 dzE"m write Rollaend
I,S'zHR 4tC_W!?$t 接下来就是将讯息打上去,结束请按 ctrl+c
L,ra=SV F U\
L"\N 7 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
4sAshrUf write Rollaend pts/2
IN"vi|1 b1#=q0Zl 接下来就是将讯息打上去,结束请按 ctrl+c
bPOx~ CMh f@{C3E dd 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
,YY#ed&l wY95|QS 名称:kill
VZ,T`8" 使用权限:所有使用者
r#Mx~Zg~ w=`z!x![/ 使用方式:
/Ow?nWSt n1t(ns| kill [ -s signal | -p ] [ -a ] pid ...
J4vKfxEg kill -l [ signal ]
]R@G5d 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
jQb D2x6( 把计?
AAW7@\q. /kz&9FM -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
d0B+syl&4l -p : 印出 pid , 并不送出信号
nADd,|xD3 -l (signal) : 列出所有可用的信号名称
p[)<d_ 范例:
CwvNxH#LVu MT`gr 将 pid 为 323 的行程砍掉 (kill) :
DS C4 kill -9 323
#H`y1zm /;4MexgB% 将 pid 为 456 的行程重跑 (restart) :
Lm|X5RVq kill -HUP 456
P1wRt5 f
99PwE(= 名称:nice
#+
'@/5{ n 使用权限:所有使用者
9ojhI=: Y+GeT#VHe 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
pG
@iR*? JNaW>X$K 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
X t =bc tTH%YtG kDq%Y[6Z 把计?
a1SOC=.M; v|@n8ED|@K -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
<&:&qngg --help 显示求助讯息
Y}uQ`f --version 显示版本资讯
g i'agB^ 范例:
]Rh(=bg 将 ls 的优先序加 1 并执行 :
L_"(A
#H: nice -n 1 ls
FH8mK) kA!(}wRL 将 ls 的优先序加 10 并执行 :
4QAIQQS nice ls将 ls 的优先序加 10 并执行
g@i>R> HFuaoS+b* 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
%:KV2GP 4oV_b"xz~ 名称:ps
ZT8Ji?_n 使用权限:所有使用者
WWW#s gM% 使用方式:ps [options] [--help]
/}`/i(k 说明:显示瞬间行程 (process) 的动态
|.O!zRm 参数:
Dh No +"!z ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
d[e:}1 -A 列出所有的行程
9C}aX}` -w 显示加宽可以显示较多的资讯
?vn 0%e868 -au 显示较详细的资讯
mqk(UOK` -aux 显示所有包含其他使用者的行程
H
r^15 eH%L?"J~: au(x) 输出格式 :
; [%}Xx D4Y!,7WEVt USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cJ##K/es USER: 行程拥有者
_:X|R#d PID: pid
]Wd`GI %CPU: 占用的 CPU 使用率
R``VQ %MEM: 占用的记忆体使用率
ix7
e])m( VSZ: 占用的虚拟记忆体大小
xSDE6] RSS: 占用的记忆体大小
L\Fu']l TTY: 终端的次要装置号码 (minor device number of tty)
6!%d-Z7) STAT: 该行程的状态:
%Mng8r D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
n22hVw R: 正在执行中
w$lfR, S: 静止状态
NnLhJPh T: 暂停执行
SXBQ Z: 不存在但暂时无法消除
c >
mu)('U W: 没有足够的记忆体分页可分配
oIvnF:c <: 高优先序的行程
O<dZA=Oez N: 低优先序的行程
1%hM8:)i_ L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
>[XOMKgQ]( START: 行程开始时间
Z0"& TIME: 执行的时间
0?F@iB~1F COMMAND:所执行的指令
adO!Gs9f? 范例:
827)n[#%| ps
Sz|Y$, PID TTY TIME CMD
c. TB8Ol 2791 ttyp0 00:00:00 tcsh
qXB03}] G 3092 ttyp0 00:00:00 ps
2JA&{ch % ps -A
*{.&R9#7U' PID TTY TIME CMD
l|vWeBs 1 ? 00:00:03 init
V+=*2?1 2 ? 00:00:00 kflushd
:!I)r$ 3 ? 00:00:00 kpiod
qX
p,d 4 ? 00:00:00 kswapd
Fp5NRM*-! 5 ? 00:00:00 mdrecoveryd
rKzv8d .......
I(^jOgYU % ps -aux
P 34LV+e USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Jcalf{W6 root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
{
OxAY_ root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
f/0v'
Jt root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
|D;"D root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
9 {O2B5u1 ........
.*EOVo9S 名称:pstree
ZVdsxo< 使用权限:所有使用者
.#= j
<& 使用方式:
wRXn9 pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
NVO9XK pstree -V
P"R97#C 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
f
MY; 参数:
F!OOrW]p0 -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
#<a_: m)@ -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
gdoJ4b 范例:
n_""M:X H pstree
0|+>A?E}E v!<PDw2' init-+-amd
M1AZ}bc0] |-apmd
";wyNpb( |-atd
0Jm]f/iZ |-httpd---10*[httpd]
G$;>ueM %pstree -p
ps"/}u l init(1)-+-amd(447)
D^66p8t |-apmd(105)
KI Ek/]<H |-atd(339)
_MM %pstree -c
gB(9vhj$ init-+-amd
0s860Kn |-apmd
xGKfej9 |-atd
zc6Ho |-httpd-+-httpd
r_4TtP&UW | |-httpd
"DVt3E | |-httpd
Y.DwtfE | |-httpd
@4;HC=~ ....
!+m@AQ:, 名称:renice
|WB"=PE 使用权限:所有使用者
3H1Pp*PH E;9Z\?P 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
&(gm4bTg M6# \na 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
66oK3%[ Kn']n91m 把计?
q#;BhPc f.@Xjf -p pid 重新指定行程的 id 为 pid 的行程的优先序
$np=eT) -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
ft{W/ * +_ -u user 重新指定行程拥有者为 user 的行程的优先序
P?uf?{ 范例:
Was'A+GZ 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
TW>?h=.z renice +1 987 -u daemon root -p 32
GOGt?iw*< <lFdexH"T 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
*]5z^>
q;7 ,NDh@VYe 名称:top
a~WqUL 使用权限:所有使用者
4 &|C} Z)NrhJC 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] |Td_S|:d
3:UA<&=s
说明:即时显示 process 的动态 |B
eA==
5lO^;.cS,
把计? vEF=e
jA,|JgN|n
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s 3)y{n%3L
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 8\DME
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 zwnw'
s : 安全模式,将交谈式指令取消, 避免潜在的危机 85}
ii{S
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 3EmcYC
n : 更新的次数,完成后将会退出 top lcCJ?!lsSW
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 3 q"7K
sYW[O"oNi
范例:
qtzFg#
显示更新十次后退出 ; [.a;L">
top -n 10 v~}5u
5$O
@HvScg*Y
使用者将不能利用交谈式指令来对行程下命令 : <Pio Q>~
top -s -1CEr_(P^
Jh?z=JY
将更新显示二次的结果输入到名称为 top.log 的档案里 : x<@kjfm5
top -n 2 -b < top.log 7 W{~f?Sh
SF^x=[ir
名称:skill EI\v
\6:>{0\
使用权限:所有使用者 gD6tHg>_
~0ooRUWU7
使用方式: skill [signal to send] [options] 选择程序的规则 LEK/mCL
Xem5@
(u
说明: (f~gEKcB2u
T(V8;!
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 \TUE<<?1s
?q!FG(
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 zKxvN3!
Fu%X
一般参数: w;+ br
q@kOTkHv)
-f 快速模式/尚未完成 -`Q}tg>cT
DbtF~`3, .
-i 互动模式/ 每个动作将要被确认 VFSz-<L
*,lh:
-v 详细输出/ 列出所选择程序的资讯 W2eAhz&
)o jDRJ&
-w 智能警告讯息/ 尚未完成 ru{f]|
x2k*|=$
-n 没有动作/ 显示程序代号 Z>2]Xx%
\
MCU9O
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 O R
#7"
NR4Jn?l{
-t 终端机代号 ( tty 或 pty ) DMd ,8W7a
.GCR!V
-u 使用者名称 WeC(w+}p
w!`Umll2
-p 程序代号 ( pid ) yN\e{;z`
g19S
-c 命令名称 可使用的讯号: ooE{V*Ie
})[($$f/
以下列出已知的讯号名称,讯号代号,功能。 (A{NF(
^u)rB<#BR
名称 (代号) 功能/ 描述 1h=D4yN
OCnFEX"
ALRM 14 离开 2a `J%A
aFY u}kl
HUP 1 离开 +xj "hX>3
hNbIpi=
INT 2 离开 =g~j=v,e
i- lKdpv
KILL 9 离开/ 强迫关闭 I:$"E%
>=
6OB" ,
PIPE 13 离开 <I2z&
_k2w(ew?
POLL 离开 {/}^D-
;%zC@a~{
PROF 离开 3t(c_:[%
{'R)4hL
TERM 15 离开 o8z)nOTO;
#w>~u2W
USR1 离开 Fr5 Xp
k^An97J
USR2 离开 Q2s&L]L=
P`"mM?u
VTALRM 离开 nQ=aLV+'
u) *Kws
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 @Zm Jz
+K{LQsR]
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 5=Lq=,K$
9%!dNnUk
TSTP 停止 /产生与内容相关的行为 B9M>e'H%<
<DZcra
TTIN 停止 /产生与内容相关的行为 fKkjn4&W
4%_M27bu[
TTOU 停止 /产生与内容相关的行为 Tbf:eVIG
Rs7|}Dl}
STOP 停止 /强迫关闭 LM.`cb;?G
{exrwnIZj
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 gx;O6S{
PW)aLycPK
PWR 忽略 /在某些系统中会离开 $s gH'/>
J(iV0LAZb
WINCH 忽略 K
,isjh2
I>"Ci(N
CHLD 忽略 jv&+<j`r
+jV_Wz
ABRT 6 核心 ;BBpN`T
:&yDqoQKJ
FPE 8 核心 'Q|c@t
s<7XxQ
ILL 4 核心 Yx%bn?%;&
'uC59X4l
QUIT 3 核心 7z'ha?
fL6e?\Pw
SEGV 11 核心 +AI`R`Tm
IZNOWX|Z;
TRAP 5 核心 O@&+} D>
REA;x-u*
SYS 核心 /或许尚未实作 ! OE*z $\
BD*G1k_q
EMT 核心 /或许尚未实作 G{lcYP O
bFGDgwe z
BUS 核心 /核心失败 ;j'Daupt;=
.v])S}K
XCPU 核心 /核心失败 I}.i@d'O
w^;DG
XFSZ 核心 /核心失败 5PiOH"!19
I=rwsL
范例: r9@AT(
停止所有在 PTY 装置上的程序 n=!uNu7
skill -KILL -v pts/* ' [p)N,
.C!vr@@]
停止三个使用者 user1 , user2 , user3 k<Sl1vK
skill -STOP user1 user2 user3 Oh; Jw
gH7z
其他相关的命令: kill !I8f#'p
名称:expr H3O@9YU
使用权限:所有使用者 npH?4S-8G
### 字串长度 ~]fJlfR*
8Y{s;U0n
shell>> expr length "this is a test" |b.z*G
14 QLo(i
### 数字商数 (! KG)!
shell>> expr 14 % 9 jRj=Awy
5 Vxdp|
### 从位置处抓取字串 0A[e sWmP
shell>> expr substr "this is a test" 3 5 K-Mc6
is is b2)\
MNH
### 数字串 only the first character Lp&k3?W
shell>> expr index "testforthegame" e ^[q /Mw
2 r<R4
1Fz
### 字串真实重现 bS^WhZy'(
shell>> expr quote thisisatestformela ^&