linux常用命令
0x7F~%%2 ,m;S-Im_Xr 称:/etc/aliases
Jr$,w7tQn@ 使用权限:系统管理者
PIR#M(' 使用方式: 请用 newaliases 更新资料库
VG0Ty;bV 说明:
N:?UA sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
GvSSi'q~B <o@&I "
o /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
ajC'C!"^Ty # newaliases
W/!M
eTU&E }Qyuy~-&^ 下面命令会做相同的事,
~P8 6=Vw # sendmail -bi
4QC"|<9R >L\$ 相关命令:
Veo*-sl mail, mailq, newaliases, sendmail
_0N=~`' !m"LIa#/Cs ” mail [返回]
\X.CYkgK 名称:mail
7r;7'X5 Jmrs@ 使用权限:所有使用者
W; yNg d3-F?i
5d 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
*`2.WF@E) t5t,(^ ;f 说明:
I,TJV)B mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
w^OV;gp Y )#x(s?t 参数:
zmH8^:-x i 忽略 tty 的中断讯号。 (interrupt)
?QxI2J I 强迫设成互动模式。 (Interactive)
QZ?# ixvJ v 列印出讯息,例如送信的地点、状态等等。 (verbose)
;wo n 不读入 mail.rc 设定档。
> %h7)}U s 邮件标题。
% `Q[?(z c cc 邮件地址。
}<R,)ZV^G b bcc 邮件地址。
iO1ir+B\ Z6s-n$dSm 范例:
w0qrh\3du KZy2c6XO; 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
~puXZCatN mail
user1@email.address
jz,Mm,Gi mail
user1@email.address user2
0U|t@&q j/.$ (E 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
\ #<.&`8B G>Fk
) mail -s 标题 -c user1 user2 < mail.txt
\WS2g"( 8(-V pU 指令:mesg
ffoL]u\ 使用权限 : 所有使用者
4<V%7z_.B 3y^PKIIrt 使用方式 : mesg [y|n]
%Ms"LoK H<_BnT# 说明 : 决定是否允许其他人传讯息到自己的终端机介面
dbn9t7'{ ` 9;0Y 把计 ?
LLy w9y1 7egE." y : 允许讯息传到终端机介面上。
aa|u*afWQ n : 不允许讯息传到终端机介面上 。
{
0\Ez} 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
] V|hDU=t xgDd5`W 例子 :
7~b=G 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
7LEB,bU mesg n
J)7\k$ D 与 mesg 相关的指令有: talk,write,wall。
LSewMj 名称:/etc/aliases
pK` 1pfih 使用权限:系统管理者
jr/ 使用方式: newaliases
#(@!:f1 说明:
h/oRWl0r sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
X0:V5
e sX8d8d`} /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
L`'#}#O l OBb m?`[ 参数:没有任何参数。 范例:
OlU')0Y # newaliases
Z9
z!YaOL )6+Z9 9w 下面命令会做相同的事,
x,wXR=H # sendmail -bi
V52>K$j rR Kbs@1M 相关命令:
CzMCd
~*7R mail, mailq, newaliases, sendmail
%G0J]QY{(x 名称 : talk
;R5@]Hg6q 使用权限 : 所有使用者
CdBpz/ bG0
|+k3O 使用方式 :
_V2^0CZ Eep~3U talk person [ttyname]
%x'}aTa 说明 : 与其他使用者对谈
m:}PVJ-" LTZ8Eu 把计 :
cI Sugk~ person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name [^Z)f<l ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
2[!3!@. u+/Uc:XK) 例子.1 :
yv[3&E? ]& 8c
45c 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
@h&:xA56 talk Rollaend
rn$G.SMgz }b5omHUE% 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
y^!>'cdV YD3jP}Ym 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
QhhL_vP talk
Rollaend@linuxfab.cx pts/2
GB%kxtGD;\ ,NO2{Ha$ qt(+X 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
Hs:0j$ 1d$qr` 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
t1JU_P sX@}4[)<& 名称 : wall
^ps6\>=0cW 使用权限 : 所有使用者
&Fiesi!tET 7vo8lnQ{ 使用方式 :
4,,DA2^! wall [ message ]
QdIx@[+WOq 使用说明:
_sb~eB~<( wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
vAh'6Ob7r -Oi8]Xw^@y 例子 :
@T"-%L8PL ! k[JP+; 传讯息"hi" 给每一个使用者 :
*{_N*p\{ wall hi
Pz^C3h$5_
名称 : write
b(IZ:ekZ5 使用权限 : 所有使用者
6"Ze%:AZZ F9}
zt 9 使用方式 :
T_)g/,5> {|d28!8w write user [ttyname]
M(^_/1Z 说明 : 传讯息给其他使用者
kYhV1I )[S#:PP 把计 :
F?z:[1(: vfd<qdi3p( user : 预备传讯息的使用者帐号
/0sw rt. ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
,i jB3J }qw->+nD 例子.1 :
Vp7d MY60% 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
C'y4 ~7 write Rollaend
YQ$LU\: m#$$xG 接下来就是将讯息打上去,结束请按 ctrl+c
?8w5tfN6t `h|Y0x 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
>\!G43Q= write Rollaend pts/2
/Rf,Rjs upLjkQ)_ 接下来就是将讯息打上去,结束请按 ctrl+c
XU`ly3! \#h{bnx 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
s
TVX/Q ew \WV" 名称:kill
O$n W 使用权限:所有使用者
]xkh"j+W <~*[OwN 使用方式:
hj=qWGRgI vX7U|zy kill [ -s signal | -p ] [ -a ] pid ...
fN1b+d~*6 kill -l [ signal ]
Vx}e,(i 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
ddS3;Rk2 把计?
soRYM n$lVmQ6 -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
z~-(nyaBS -p : 印出 pid , 并不送出信号
:GN++\1pw -l (signal) : 列出所有可用的信号名称
!}5f{,.RO 范例:
MQQQaD:v NEUr w/ 将 pid 为 323 的行程砍掉 (kill) :
D^QL.Du, kill -9 323
K'}I?H~P_ .kU}x3m 将 pid 为 456 的行程重跑 (restart) :
U(PW$\l kill -HUP 456
oTRidG (rc7Cp3 名称:nice
W}y)vrL 使用权限:所有使用者
[_KV;qS%/ S
n<X 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
S0Ur{!9\#^ B^!-%_q 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
-e_|^T" pw&k0?K# ym p
ik.' 把计?
m2H?VY.^K g[R4/]K^$ -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
aNn4j_V( --help 显示求助讯息
UGlHe7 --version 显示版本资讯
2FW"uYA;6 范例:
2z.~K&+x 将 ls 的优先序加 1 并执行 :
K^6d_b& nice -n 1 ls
(Hmm^MV) gAh#H ?MM 将 ls 的优先序加 10 并执行 :
{{Qbu}/@ nice ls将 ls 的优先序加 10 并执行
jJaMkF;f
bsm/y+R 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
#K`0b$ fLpWTkr0 名称:ps
ek. @ 0c 使用权限:所有使用者
rq^%)tR 使用方式:ps [options] [--help]
0~EGrEt 说明:显示瞬间行程 (process) 的动态
s3T7M:DM4 参数:
/N({"G' ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
ySB0"bl -A 列出所有的行程
w=CzPNRHH! -w 显示加宽可以显示较多的资讯
p>O/H1US; -au 显示较详细的资讯
o%f:BJS -aux 显示所有包含其他使用者的行程
n|pdYe8\ eh%{BXW[p au(x) 输出格式 :
@`#x:p: H0!$aO USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
2~4&4 USER: 行程拥有者
n!.=05OtX PID: pid
`dD_"Hdt %CPU: 占用的 CPU 使用率
-uu&{$ %MEM: 占用的记忆体使用率
8{]nS8i VSZ: 占用的虚拟记忆体大小
@ze2'56F} RSS: 占用的记忆体大小
7x=4P|(\} TTY: 终端的次要装置号码 (minor device number of tty)
@)x*6 2r+ STAT: 该行程的状态:
>gs_Bzy] D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
^Zp R: 正在执行中
3A{)C_1a S: 静止状态
Zwz co T: 暂停执行
|d z2Drc Z: 不存在但暂时无法消除
0WfnX>(C7R W: 没有足够的记忆体分页可分配
BzzZ.AH~ <: 高优先序的行程
Vhh=GJ N: 低优先序的行程
k$ T L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
;Xa
N START: 行程开始时间
2y \ogF TIME: 执行的时间
zRa2iCi COMMAND:所执行的指令
{NQCe0S+p 范例:
Mvue>)g~> ps
@e& 0Wk PID TTY TIME CMD
~#4FL<W 2791 ttyp0 00:00:00 tcsh
8MI8~ 3092 ttyp0 00:00:00 ps
uO-|?{29 % ps -A
1<fW .Q) PID TTY TIME CMD
O) TS$ 1 ? 00:00:03 init
G@`ZDn 2 ? 00:00:00 kflushd
)[cuYH> 3 ? 00:00:00 kpiod
&PH:J*?C} 4 ? 00:00:00 kswapd
DRR)mQBb 5 ? 00:00:00 mdrecoveryd
!zm;C@}ln .......
4;W{#jk % ps -aux
'e*w8h USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Cl9rJ oT root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
^-Ygh[x root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
_yUYEq<` root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
P[-do root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
*Ti"8^`6 ........
_9t1aP5 名称:pstree
XXhN;-p 使用权限:所有使用者
W8$0y2 使用方式:
122s7A pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
JBLUX, pstree -V
<&3aP} 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
ez ! W0 参数:
Zhv%mUj~ -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
-|^)8 -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
:F@Uq<~( 范例:
"&/2@ pstree
YvcV801Go 4xq| init-+-amd
0MroHFh9` |-apmd
uoOUgNwGg |-atd
^e <E/j{~ |-httpd---10*[httpd]
L -:@Om! %pstree -p
m2"e ]I init(1)-+-amd(447)
*!JB^5(H |-apmd(105)
L@/IyQ[H1 |-atd(339)
09anQHa %pstree -c
Z)$@1Q4P?1 init-+-amd
"g #%d |-apmd
nw%9Qw |-atd
p/RT*?< |-httpd-+-httpd
'Etq;^H | |-httpd
(xN1?qXB. | |-httpd
1AN$s
| |-httpd
0+ $gR~^^ ....
s2NBYDi$? 名称:renice
1%*\*z
使用权限:所有使用者
@y~kQ5k @v^j<B 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
}mK,Bi?bj ;*t#:U* 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
$-Ex
g*i _K!.TM+9 把计?
|idw?qCn Dol{y=(3e -p pid 重新指定行程的 id 为 pid 的行程的优先序
<$zhNu~ -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
7L6L{~8
W -u user 重新指定行程拥有者为 user 的行程的优先序
A"&<$5Q 范例:
(DY[OIHI 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
H\a"=&M renice +1 987 -u daemon root -p 32
;5.&TQT _fu <`|kc 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
w(aHB8T =#[oi3k 名称:top
;m#4Q6k)V? 使用权限:所有使用者
V`#2jDz Q2- lHn^L: 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] sH;_U)ssH
DE/SIy?
说明:即时显示 process 的动态 isd-b]@:Lc
:&TM0O
把计? aK
-x{
p> >H$t
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s @-Ql6k
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 +Tu?PuT7k
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 Jj+Q2D:
s : 安全模式,将交谈式指令取消, 避免潜在的危机 sAqy(oy#M
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 V0_tk"
n : 更新的次数,完成后将会退出 top oo2d,
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 `62v5d*>a
T\bP8D
范例: gee~>l
显示更新十次后退出 ; :,aY|2si
top -n 10 Sk>=C0f:
!|xB>d
q?
使用者将不能利用交谈式指令来对行程下命令 : QJ4$) Fr(
top -s 7]zZdqG&p`
<MkvlLu((o
将更新显示二次的结果输入到名称为 top.log 的档案里 : ~Ay)kv;
top -n 2 -b < top.log @}g3\xLiK
ll4CF}k
名称:skill :R=6Ku>
S\N1qux{
使用权限:所有使用者 Rh|9F yN
X:g5;NT
使用方式: skill [signal to send] [options] 选择程序的规则 GIxs>E'X
reh{jMC
说明: EUuSN| a
A8vd@0
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 FUI*nkZY
U?:P7YWy
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 }rfikm
"Mj#P9
一般参数: m
=b7
r
Uc {m##!
-f 快速模式/尚未完成 s __xBY
sV
a0eGc
-i 互动模式/ 每个动作将要被确认 ;un@E:
+|obU9M
-v 详细输出/ 列出所选择程序的资讯 VZWo.Br'W
*
&:_Vgu
-w 智能警告讯息/ 尚未完成 4-x<^
ev=
{sC Ni
-n 没有动作/ 显示程序代号 s<F*kLib
Zyz#xMmM
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 {+WY,%e
K$h\<_V
-t 终端机代号 ( tty 或 pty ) n>q!m@ }<
} jJKE
-u 使用者名称 "UMaZgI
:IS?si5|
-p 程序代号 ( pid ) ErK1j
f_S$CFa@
-c 命令名称 可使用的讯号: 6Bjo9,L
r9_ ON|
以下列出已知的讯号名称,讯号代号,功能。 mEd2f^R
8eS(gKD
名称 (代号) 功能/ 描述 /o;L,mcx*
js81@WX!c
ALRM 14 离开 I!Z`'1"
3tTOs
HUP 1 离开 ~hvj3zC5xz
2 3PRb<q
INT 2 离开 -| m3=#
+zMPkbP6
KILL 9 离开/ 强迫关闭 hYkkr&
)C8^'*!
PIPE 13 离开 34u[#O{2
cr!W5+r
POLL 离开 V)<>W_g
O0qG
6a
PROF 离开 /Pg)7Zn
r/!,((Z\
TERM 15 离开 R}0gIp=
`;6M|5G
USR1 离开 imYfRi=$
H:~p5t
USR2 离开 CwX?%$S
M
co:eE
VTALRM 离开 ;pW8a?
Hloe7+5UD
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 s0?'mC+p
%`&n ;K.c
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 p<r<Y%
y 9]d{:9
TSTP 停止 /产生与内容相关的行为 lw9jk`7^
ZxnPSA@%
TTIN 停止 /产生与内容相关的行为 \
=hg^j
7y|U!r"Y
TTOU 停止 /产生与内容相关的行为 M#'7hm6
(WT\HR
STOP 停止 /强迫关闭 ~][~aEat;V
AhF@
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 YP02/*'
gt}Atr6>_
PWR 忽略 /在某些系统中会离开 %[p*6&V
o&1mX
WINCH 忽略 {:gx*4}q8
HqWWWCWal
CHLD 忽略 #AGO~#aK
tw$EwNI[
ABRT 6 核心 I3nE]OcW@
hH1Q:}a
FPE 8 核心 gFTU9k<
lKejWT`;
ILL 4 核心 $#hU_vr
f 3H uT=n
QUIT 3 核心 ]2@(^x'=
>`x|E-X"
SEGV 11 核心 ^@V*:n^
oWY3dc
TRAP 5 核心 .jQx2O
qB$-H' j:;
SYS 核心 /或许尚未实作 n>v1<^
aH6j,R%
EMT 核心 /或许尚未实作 fS4foMI63)
q0+N#$g#
BUS 核心 /核心失败 -NwG'
U~
3%)cUkD
XCPU 核心 /核心失败 w PR Ns9^
&s`)_P[
XFSZ 核心 /核心失败 _;PQt" ]
W8 g13oAu"
范例: }'P|A
停止所有在 PTY 装置上的程序 SSF:PTeG>
skill -KILL -v pts/* i`sZP#h
M$EF 8
停止三个使用者 user1 , user2 , user3 QfEJU8/5d
skill -STOP user1 user2 user3 U%@PY9#
"> Qxb.Y}
其他相关的命令: kill mx}5":}
名称:expr jo"nK,r
使用权限:所有使用者 #!Cg$6%x9
### 字串长度 3 ~P$p<
ZvF#J_%gE5
shell>> expr length "this is a test" .@&FJYkLYi
14 Wmd@%K
### 数字商数 _|C3\x1c
shell>> expr 14 % 9 h/\v+xiF
5 _K9PA[m5~
### 从位置处抓取字串 3J"`mQ
shell>> expr substr "this is a test" 3 5 uY~mi9E
is is /9ORVV
### 数字串 only the first character n8EKTuy
shell>> expr index "testforthegame" e Ja3#W
K
2 lD$s, hp
### 字串真实重现 7RUztu\_
shell>> expr quote thisisatestformela YeOn
thisisatestformela