linux常用命令
Su#0F0 SMN.AJ
J 称:/etc/aliases
>i/jqT/ 使用权限:系统管理者
Tq1\ 使用方式: 请用 newaliases 更新资料库
kaBjA* 说明:
S_ATsG*( sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
B~]Kqp7yU
Gl~l /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。范例:
s)^/3a # newaliases
={BD*=i j q+(2 下面命令会做相同的事,
"=h1gql' # sendmail -bi
`w@:h4f /"{d2 相关命令:
?
#K|l* mail, mailq, newaliases, sendmail
]E`<8hRB Pe,>ny^J1 ” mail [返回]
lTx_E#^s 名称:mail
^m>4<~/ ^6s im 2 使用权限:所有使用者
c!6D{(sfh Itl8#LpLM 使用方式:mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]
l1 +l@r\ f"MID6 说明:
+:MSY p mail 不仅只是一个指令, mail 还是一个电子邮件程式,不过利用 mail 来读信的人应该很少吧!对于系统管理者来说 mail 就很有用,因为管理者可以用 mail 写成 script ,定期寄一些备忘录提醒系统的使用者。
@Cj!MZ=T $RD~,<oEm 参数:
?cV,lak i 忽略 tty 的中断讯号。 (interrupt)
zm_8a!.
I 强迫设成互动模式。 (Interactive)
feej'l }F v 列印出讯息,例如送信的地点、状态等等。 (verbose)
QYH-"-) n 不读入 mail.rc 设定档。
\nl(tU#j s 邮件标题。
SI7rTJ]/ c cc 邮件地址。
3c<aI=$^ b bcc 邮件地址。
78&|^sq "5hk%T' 范例:
U&^q#[' )jM%bUk,! 将信件送给一个或以上的电子邮件地址,由于没有加入其他的选项,使用者必须输入标题与信件的内容等。而 user2 没有主机位置,就会送给邮件伺服器的 user2 使用者。
8!_jZ f8 mail
user1@email.address
gQnr. mail
user1@email.address user2
3jx%]S^z| t~Q9}+ 将 mail.txt 的内容寄给 user2 同时 cc 给 user1 。如果将这一行指令设成 cronjob 就可以定时将备忘录寄给系统使用者。
r.C6`
a +3v)@18B1 mail -s 标题 -c user1 user2 < mail.txt
iN;Pg_Kq xGd60"w2 指令:mesg
l<=;IMWd 使用权限 : 所有使用者
59E9K)c3 I7ao2aS 使用方式 : mesg [y|n]
1By tu >2 A
6(` 说明 : 决定是否允许其他人传讯息到自己的终端机介面
e"
v%m'G i5e10@Q{ 把计 ?
o E+'@ q<YM,%mgj y : 允许讯息传到终端机介面上。
B%F]K<
n : 不允许讯息传到终端机介面上 。
L}Z.FqJ 如果没有设定,则讯息传递与否则由终端机界面目前状态而定。
WtM%(8Y[] iq&3S 0 例子 :
ipSMmpB 改变目前讯息设定,改成不允许讯息传到终端机介面上 :
+H-=`+, mesg n
Eb3 ZM# 与 mesg 相关的指令有: talk,write,wall。
o_:v?Y>0 名称:/etc/aliases
)%(ZFn} 使用权限:系统管理者
u6|C3,!z" 使用方式: newaliases
oF%m 说明:
kg/ B<w' sendmail 会使用一个在 /etc/aliases 中的档案做使用者名称转换的动作。当 sendmail 收到一个要送给 xxx 的信时,它会依据 aliases档的内容送给另一个使用者。这个功能可以创造一个只有在信件系统内才有效的使用者。例如 mailing list 就会用到这个功能,在 mailinglist 中,我们可能会创造一个叫
redlinux@link.ece.uci.edu 的 mailinglist,但实际上并没有一个叫 redlinux 的使用者。实际 aliases 档的内容是将送给这个使用者的信都收给 mailing list 处理程式负责分送的工作。
i VSNara :5YIoC /etc/aliases 是一个文字模式的档案,sendmail 需要一个二进位格式的 /etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一个 sendmail 所能了解的资料库。
]N>ZOV,> #:)'D?, 参数:没有任何参数。 范例:
)V1XL # newaliases
t@%w:*& ^~4]"J};M 下面命令会做相同的事,
N?\X2J1 # sendmail -bi
(Y1*Bs[l <A3%182 相关命令:
ni;_Un~ mail, mailq, newaliases, sendmail
K~(RV4oF8B 名称 : talk
DUOoTlp 使用权限 : 所有使用者
~ k*]Z8Z [ 8Ohg 使用方式 :
/!6 'K 3.&BhLT talk person [ttyname]
Iiy5;:CX:q 说明 : 与其他使用者对谈
Jqoo&T") Yh<F-WOo2 把计 :
)nm+_U person : 预备对谈的使用者帐号,如果该使用者在其他机器上,则可输入
person@machine.name 4n,&,R r# ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
K?.~}82c &PMQ]B 例子.1 :
[gW eD :jiEn
y 与现在机器上的使用者Rollaend对谈,此时 Rollaend 只有一个连线 :
Fis!MMh.$ talk Rollaend
~
'ZwD/!e dSDZMB sd 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk jzlee`即可开始对谈,结束请按 ctrl+c
u8f\)m \0\ O/^W0 例子.2 :与linuxfab.cx上的使用者Rollaend对谈,使用pts/2来对谈 :
>S5J^c talk
Rollaend@linuxfab.cx pts/2
pW]j.JM h+km? j }k-V( 接下来就是等Rollaend回应,若Rollaend接受,则Rollaend输入 `talk
jzlee@jzlee.home`即可开始对谈,结束请按 ctrl+c
$QJ3~mG2 *i"9D: 注意 : 若萤幕的字会出现不正常的字元,试着按 ctrl+l 更新萤幕画面。
xm m,-u Tmg C {_ 名称 : wall
r)<A YX]J 使用权限 : 所有使用者
OUv )`K P\"kr?jZP 使用方式 :
T?3Q<[SmI wall [ message ]
J= A)]YE 使用说明:
[S6u:;7 wall 会将讯息传给每一个 mesg 设定为 yes 的上线使用者。当使用终端机介面做为标准传入时, 讯息结束时需加上 EOF (通常用 Ctrl+D)?
fUw:jExz "Q: Gd6?h; 例子 :
a;o0#I#Si E ,i^rA m 传讯息"hi" 给每一个使用者 :
J*@ pM wall hi
J""Cgf 名称 : write
lm`*x=x 使用权限 : 所有使用者
!j!w$ Y9.3`VX 使用方式 :
2Zu9?
L ,I 7D'\z
IW write user [ttyname]
BMp'.9Qgm 说明 : 传讯息给其他使用者
yfl?\X{ %"
iX3 把计 :
b(K"CL\p /k.0gYD user : 预备传讯息的使用者帐号
!W}sOK7# ttyname : 如果使用者同时有两个以上的 tty 连线,可以自行选择合适的 tty 传讯息
\h
~_<) N{Sp-J> 例子.1 :
;4O[/;i OVLVsNg 传讯息给 Rollaend,此时 Rollaend 只有一个连线 :
HLyAzB~r write Rollaend
8xy8/UBIk0 fJFNS
y 接下来就是将讯息打上去,结束请按 ctrl+c
TXImmkC MlV(XG>' 例子.2 :传讯息给 Rollaend,Rollaend 的连线有 pts/2,pts/3 :
.n\JY;" write Rollaend pts/2
xe@e#9N$ @eYpARF 接下来就是将讯息打上去,结束请按 ctrl+c
lZk
z\ 7Ae`>5B# 注意 : 若对方设定 mesg n,则此时讯席将无法传给对方
X,Ql6uO D||0c"E 名称:kill
LOU P 使用权限:所有使用者
BlJiHz! p4T$(]7 使用方式:
b0~r/M;J '_v~+ kill [ -s signal | -p ] [ -a ] pid ...
V%-hP~nyBx kill -l [ signal ]
V60L\?a 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
Q[OwP 把计?
.`D'eS6b ItVN,sVJb -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
mSYjc)z -p : 印出 pid , 并不送出信号
M`Y^hDl 6 -l (signal) : 列出所有可用的信号名称
Nj9A-*0g6N 范例:
FC0fe_U(F _c-3eQ1 将 pid 为 323 的行程砍掉 (kill) :
g*$2qKm kill -9 323
12`u[O}\}- >axeUd+@i 将 pid 为 456 的行程重跑 (restart) :
w$
8r<?^3 kill -HUP 456
cSt)Na~C e!VtDJDS 名称:nice
<+QdBp'd; 使用权限:所有使用者
GDLw_usV xvl$,\iqE 使用方式:nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command ][arg...]]
v ,")XPY ~b_DFj 说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序)
UytMnJ88 :FAPH8]
\HGf!zZ 把计?
R+LKa Z 1Vpti4OmU -n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment
rC8p!e.yL --help 显示求助讯息
#-yCR --version 显示版本资讯
Lx,=Up. 范例:
|k.'w<6mb9 将 ls 的优先序加 1 并执行 :
]p! { nice -n 1 ls
xXJ*xYn"} xsa`R^5/c 将 ls 的优先序加 10 并执行 :
FWbp;v{ nice ls将 ls 的优先序加 10 并执行
Z6I|Y5#H U F"%FF 注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用『回合制(round-robin)』的演算法来做 CPU 排程,优先序越高,所可能获得的 CPU时间就越多。
vF^d40gV s#?ZwD,= 名称:ps
@^| [J
_4 使用权限:所有使用者
iil<zEic 使用方式:ps [options] [--help]
&%OY"Y~bI! 说明:显示瞬间行程 (process) 的动态
UA<Fxt 参数:
wnS,Jl ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
.`Rt -A 列出所有的行程
z +MH co" -w 显示加宽可以显示较多的资讯
lu.]R>w -au 显示较详细的资讯
+a5F:3$ -aux 显示所有包含其他使用者的行程
O`Tz^Q/D a=2.Y? au(x) 输出格式 :
Vk{;g zYzV!s2^ USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
6n]+(= USER: 行程拥有者
3U<m\A1 PID: pid
ceUe*}\cr %CPU: 占用的 CPU 使用率
B=0^Rysg %MEM: 占用的记忆体使用率
Ge?Wmq> VSZ: 占用的虚拟记忆体大小
I=dG(?#7% RSS: 占用的记忆体大小
[=K
lDfU= TTY: 终端的次要装置号码 (minor device number of tty)
I?rB7*: STAT: 该行程的状态:
[
<X% D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
A.>mk598 R: 正在执行中
[
U:C62oK, S: 静止状态
?[JP[
qS T: 暂停执行
J*;RL` Z: 不存在但暂时无法消除
nH#>_R
( W: 没有足够的记忆体分页可分配
]PS`"o,pF$ <: 高优先序的行程
>~o-6g N: 低优先序的行程
GK$[ !{w; L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O)
TUfj\d, START: 行程开始时间
6?a`'& TIME: 执行的时间
l*l*5hA COMMAND:所执行的指令
_=mzZe[ 范例:
aqON6|6K ps
) H,Xkex PID TTY TIME CMD
NWf=mrS8@$ 2791 ttyp0 00:00:00 tcsh
}zGx0Q 3092 ttyp0 00:00:00 ps
Sgi`&;PF % ps -A
D?n6h\h\$% PID TTY TIME CMD
<K0epED 1 ? 00:00:03 init
?c#s}IH 2 ? 00:00:00 kflushd
`w!XO$"]Z 3 ? 00:00:00 kpiod
c5ij2X|I 4 ? 00:00:00 kswapd
u`'"=Y_E 5 ? 00:00:00 mdrecoveryd
E0ED[d, .......
^8
VW$} % ps -aux
WE\TUENac( USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
I[?\Or root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
Ll]5u~ root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
CXq[VYM&X root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
81Z;hO"~ root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
f"s_dR ........
\]>YLyG 名称:pstree
x?L[*N_ml 使用权限:所有使用者
FJ3S
使用方式:
@1*^ttC pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
phy}Hk/ pstree -V
av'm$I|O 说明:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root) ,如果有指定使用者 id , 则树状图会只显示该使用者所拥有的行程
qHk{5O3 参数:
w~@"r#- -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
2 5 \S> -c 如果有重覆的行程名, 则分开列出 (预设值是会在前面加上 *
.8YxEnXw)( 范例:
Uj5-x%~ pstree
h4]^~stI gWr7^u&q@| init-+-amd
'WW:'[Syn' |-apmd
x0# Bc7y |-atd
0=>$J
WF |-httpd---10*[httpd]
`vBBJ@f4) %pstree -p
Wj.t4XG! init(1)-+-amd(447)
QXb2jWz |-apmd(105)
Z!g6uV+.5 |-atd(339)
bB$f=W!m% %pstree -c
p]kEH\
sh init-+-amd
@_do<'a |-apmd
}#^Cj; |-atd
9"P+K.% |-httpd-+-httpd
M+%Xq0`T | |-httpd
<@Q27oEuA | |-httpd
d]0:r]e | |-httpd
w;,34qbf ....
&'u|^d 名称:renice
it}h8:^< 使用权限:所有使用者
o898pg <D|&)/# 使用方式:renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]
mz0{eO f\
P0% 说明:重新指定一个或多个行程(Process)的优先序(一个或多个将根据所下的参数而定)
k{2Gq1S{ *q6XK_ 把计?
'x%gJi# TnQ>v{Rx -p pid 重新指定行程的 id 为 pid 的行程的优先序
I~6)
Gk& -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序
4v_Ac;2m& -u user 重新指定行程拥有者为 user 的行程的优先序
wa[L[mw 范例:
s~7a-J 将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1 :
DXf renice +1 987 -u daemon root -p 32
"1,*6(;: 9 :2Bt <q 注意 : 每一个行程(Process)都有一个唯一的 (unique) id?
m.+h@ jG1(Oe;# 名称:top
hNXZL>6 使用权限:所有使用者
z@`o(gh %mQ&pk 使用方式:top [-] [d delay] [q] [c] [S] [s]
[n] as@8L|i*
qxI$F
说明:即时显示 process 的动态 Ae7FtJO
^Q#_
把计? %2:UsI
^0zfQu+!
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s e(s0mbJE
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 6_%Cd`4Z
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来 :aOR@])>o
s : 安全模式,将交谈式指令取消, 避免潜在的危机 ^=x /:0
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程 ;n't:yQW
n : 更新的次数,完成后将会退出 top f9#zV2ke]
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内 )5@P|{FF
ykC3Z<pI.
范例: E+Bc>xl@m
显示更新十次后退出 ; {z>!Fw
top -n 10 $6n
J+
&>AwG4HW#j
使用者将不能利用交谈式指令来对行程下命令 : My>q%lF=fw
top -s bpc1>?
syr0|K[
将更新显示二次的结果输入到名称为 top.log 的档案里 : k'8q/]
top -n 2 -b < top.log SA'g`
'ayb`
名称:skill i@9
qp?eb
45 ^ Z5t
使用权限:所有使用者 &-*l{"7p+%
]0>
使用方式: skill [signal to send] [options] 选择程序的规则 8)S)!2_h
y^H5iB[SPL
说明: ;?{^LiD+F
N7s0Ua'-v
送个讯号给正在执行的程序,预设的讯息为 TERM (中断) , 较常使用的讯息为 HUP , INT , KILL , STOP , CONT ,和 0 Gbhw7
(&
- ;gQy[U
讯息有三种写法:分别为 -9 , -SIGKILL , -KILL , 可以使用 -l 或 -L 已列出可使用的讯息。 '=;e#
C`<{
`i.fm1I]
一般参数: W_@ b. 1
@A6iY
-f 快速模式/尚未完成 pJFn
8&!J
`!cdxKLR
-i 互动模式/ 每个动作将要被确认 #;8)UNc)}
Y%/RGYKh
-v 详细输出/ 列出所选择程序的资讯 4
Y=0>FlY0
] !*K|?VL
-w 智能警告讯息/ 尚未完成 qeM DC#N
_=0Ja
S>M.
-n 没有动作/ 显示程序代号 to:
;:Goa
#[bosb!R
参数:选择程序的规则可以是, 终端机代号,使用者名称,程序代号,命令名称。 )bg |l?
M
IIa8;
-t 终端机代号 ( tty 或 pty ) oO;L l?~
3!9JXq%Hl
-u 使用者名称 uQ3sRJi
mo<*h&;&
-p 程序代号 ( pid ) 2D%2k
`]65&hWZL
-c 命令名称 可使用的讯号: ~j[?3E4L}
G$a@}9V
以下列出已知的讯号名称,讯号代号,功能。 Y*@7/2,
fK:4jl-r
名称 (代号) 功能/ 描述 (87wWhH
z#!<[**&
ALRM 14 离开 CE
M4E
W^09tx/I
HUP 1 离开 07SW$INb
O`CZwXD
INT 2 离开 S$SCW<LuN
/\Nc6Z/ L
KILL 9 离开/ 强迫关闭 Vl+UC1M}B>
P]m{\K
PIPE 13 离开 hRXnig{;3
@N '_qu
POLL 离开 Z4G%Ve[
>e;jGk?-
PROF 离开 ZNH-0mk
1
K}gX>F
TERM 15 离开 1$DcE>
T[OI/WuK
USR1 离开 o`,}b1lh
,]\cf
USR2 离开 P8=|#yCi
_f2rz+
VTALRM 离开 jy0aKSn8
mKtMI!FR
STKFLT 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 )-X8RRw'
.pZYPKMaE
UNUSED 离开/ 只适用于i386, m68k, arm 和 ppc 硬体 .}F
39TS2
]N}/L
lq
TSTP 停止 /产生与内容相关的行为 W\j'8^kI9
I wj[ ^
TTIN 停止 /产生与内容相关的行为 L[44D6Vg
E[t[R<v,P!
TTOU 停止 /产生与内容相关的行为 VEa"^{,w
:C^{Lc
STOP 停止 /强迫关闭 Mh3.GpS
?IeBo8
CONT 从新启动 /如果在停止状态则从新启动,否则忽略 t$qIJt$
Z[[*:9rY|
PWR 忽略 /在某些系统中会离开 '9]?jkl
UQkd$w<
WINCH 忽略 v8)wu=u
Ib{#dhV
CHLD 忽略 7>im2"zm
%_n%-Qn
ABRT 6 核心 An>ai N]
+D
@B eQu
FPE 8 核心 vy2<'V*y}
\6GNKeN
ILL 4 核心 kReZch}
:!Z |_y{b
QUIT 3 核心 FLJ&ZU=s
~c&sr5E
SEGV 11 核心 |5>A^a
\aPH_sf,
TRAP 5 核心 A%EhRAy
z z]~IxQ
SYS 核心 /或许尚未实作 A]Hz?i
&b~X&{3,
EMT 核心 /或许尚未实作 3R$R?^G
Hwd^C2v
BUS 核心 /核心失败 VO1
ai/]E6r
XCPU 核心 /核心失败 i+QVs_jW
'N6oXE
XFSZ 核心 /核心失败 nGTGX
Ax|'uvVAPT
范例: CUdpT$ $x3
停止所有在 PTY 装置上的程序 .>,Y
|
skill -KILL -v pts/* f3,LX]zKA
D;2V|CkU
停止三个使用者 user1 , user2 , user3 3qGz(6w6E
skill -STOP user1 user2 user3 3,Z;J5VL4!
)y:M8((%
其他相关的命令: kill C3.]dsv:
名称:expr :xmj42w>^
使用权限:所有使用者 oGZuYpa9
### 字串长度 >mCH!ey
V!*1F1
shell>> expr length "this is a test" ('%Y3z;
14 8d1qRCIz
### 数字商数 %qJgtu"8
shell>> expr 14 % 9 Q u/f>tJN;
5 _&G_SNa
### 从位置处抓取字串 +5-|6
shell>> expr substr "this is a test" 3 5 6f0o'
is is >8{{H"$;(
### 数字串 only the first character V@RdvQy
shell>> expr index "testforthegame" e _nzTd\L88
2 X:f5t` ;
### 字串真实重现 %d-WQwJ
shell>> expr quote thisisatestformela f3vl=EA4|
thisisatestformela