- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
发现当前磁盘空间使用情况:
1 l- z+ g9 R5 ~+ H) o# p' J1 f8 O
; x1 _# b' z' U n% T" H
/ n3 T) R, A, c# @$ h5 \6 L: a9 H9 ?3 V: m" K ^# W+ L9 l
[root@ticketb ~]# df -h4 N1 R2 n# E1 }
Filesystem Size Used Avail Use% Mounted on8 q0 R, r7 A6 j
/dev/sda1 981M 203M 729M 22% /, k/ P# @" a, B2 Y
none 16G 0 16G 0% /dev/shm
5 n+ }& B3 }& o* g# p/dev/sda9 2.9G 37M 2.7G 2% /tmp
1 v9 R0 U3 v; S* Y/dev/sda7 4.9G 1.9G 2.7G 42% /usr3 P# m+ ~$ ~+ k9 _* u
/dev/sda8 2.9G 145M 2.6G 6% /var1 k- u3 d7 `' B3 t8 I
/dev/mapper/vghome-lvhome1 B/ f9 K! U4 m$ W
20G 19G 11M 100% /home
7 Y, K" d9 c; B/ K, [6 \- r/dev/mapper/vgoradata-lvoradata
0 V! Q, O7 D# L- e% C 144G 48G 90G 35% /u01/oradata
' f9 S+ P7 Y' f/ f4 [/dev/mapper/vgbackup-lvbackup
6 z0 b" ^% d6 @ 193G 7.8G 175G 5% /u01/backup" f1 f+ D% r1 Z$ {/ V4 i5 r6 d
) W& p S1 w: K/ r, Q0 ?! w7 F% H- u8 A) L4 H6 D
通过下面的命令找到无用的文件,然后删除: E0 X$ u3 [. Y7 a& B7 U: `
3 M: F9 t4 @* V& x( s
3 ?6 b' c: W8 _5 {5 h% a
[root@ticketb ~]# find /home/oracle/admin/dbticb/udump/ -name "dbticb_*.trc" -mtime +50 | xargs rm -rf
) H5 S; ]% `+ v; \% Y% f1 V6 e' t
* Y! P! q9 m c$ y6 J3 A8 f
/ R: d; B# J6 C( \7 q
* I/ u$ h+ ?; i8 l然后在查看磁盘空间使用情况,发现没有/home空间没有变化
! {+ k* [( T1 {/ t) f: R Q+ @7 z- j( l% y$ |
! a( x7 Y& Z8 ?. _+ g" s l6 b \! l, Y
* N3 E+ l8 j& r6 X- r! |- F[root@ticketb ~]# df -h7 t( z8 E5 ]4 P# H0 j
Filesystem Size Used Avail Use% Mounted on
. X2 D' L# A" `; ~0 |/dev/sda1 981M 203M 729M 22% /
/ [- T, f6 b+ Y4 ynone 16G 0 16G 0% /dev/shm- M# q1 t( E& i, i6 y) M9 y9 ?
/dev/sda9 2.9G 37M 2.7G 2% /tmp
8 C- l8 d9 X& T# a/dev/sda7 4.9G 1.9G 2.7G 42% /usr# o' Y' m$ X) e1 `
/dev/sda8 2.9G 145M 2.6G 6% /var
( L7 f# H" x$ c) U3 d G) r$ g/dev/mapper/vghome-lvhome/ _( i$ H% J9 l0 S+ m- A
20G 19G 11M 100% /home3 K" C4 G! z/ n
/dev/mapper/vgoradata-lvoradata$ z. j7 t) L+ r; s5 r! q; [
144G 48G 90G 35% /u01/oradata; t" m$ [& \1 a+ A4 j
/dev/mapper/vgbackup-lvbackup
& \2 |5 F z) [2 p _ 193G 7.8G 175G 5% /u01/backup% W3 ^% @( u0 P
' }. P& l: t' ~7 ]+ |; d' ?7 E
* t( l3 g' ]4 Q- _! D
: n2 x0 C5 f6 h9 o8 W4 ^2 F! }这个郁闷啊,明明删除文件了,怎么空间没有被释放啊,rm命令应该是直接删除啊,在查看下/home下还有什么占用空间( N2 r l* M" B# f4 i; K
! { Y2 v% z$ ?/ L0 D6 \2 k
& z* A/ m! c! ], x/ m0 A8 Z5 c- f& a- z! }0 r9 a4 `
[root@ticketb ~]# du -h --max-depth=1 /home
/ J: _( g1 w4 z* K# Q# H. A16K /home/lost+found
& f( U9 @: j! M5 z( P/ }2 a9 ~2.6G /home/oracle
, W, Y0 x! w' ?6 M/ }2.6G /home
6 ~7 q/ e* q% g6 N0 n/ E; R3 `- d& x0 D6 l0 Y) b) z* N [
u1 F: g8 H" w5 b! e2 k( x
1 \5 a/ Z6 w( J( F: L
可这里显示空间已经释放了啊,于是google下,9 q: E2 s, V7 \! j2 U6 F
7 i, [+ y# y* r+ c8 j2 R9 n9 w( l$ c9 X! q# `$ P
0 Y9 P9 x+ j n6 h, V# L: F
未释放磁盘空间原因:" S% ^ {% e( B4 a
# n7 i5 Y# I: w+ V
* G: c, |1 f* R' |3 E* h- b8 I9 j0 A6 T/ c- ~
在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被2 N3 C2 M1 r& c/ \& S0 o
打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是oracle的告警log文件 S/ B- S) G) z" ]$ F! t% e. w
删除的时候文件应该正在被使用6 G2 b( E; }9 n. J S
: h/ n8 C9 u# c( n
- y$ g% |/ N" |; l( w6 j
. [( i1 G: `2 f E9 ]解决方法
* X2 O9 y6 q# `+ h; g, T$ X+ K& {, |) ~8 y7 x
+ r6 {/ s' j1 f- \% @- @9 s. T1 D6 i
首先获得一个已经被删除但是仍然被应用程序占用的文件列表,如下所示:' S4 i$ X/ J) \$ D. D1 g
8 m% T; c8 \. I: x z
2 }& r, K( d4 Z& b' D* ?4 M
[root@ticketb ~]# lsof |grep deleted
) `( C( [: F8 r2 n! z) T6 ~7 Aoracle 12639 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc (deleted)
' l$ }$ w- P0 uoracle 12639 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
$ b! Q, u% v! `5 G* ?$ boracle 12639 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb (deleted)% x# \8 H6 a3 z% N
oracle 12639 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted): Z: N- g A) [+ _ d; l$ {
oracle 12641 oracle 5w REG 253,0 648 215907 /home/oracle/admin/dbticb/udump/dbticb_ora_12637.trc (deleted)1 I+ j: Z' o" d. s7 u, ]
oracle 12641 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)) f8 \) c4 b$ a" R9 Q
。! K1 {1 G# i8 d8 Q/ f6 f' u. s
。
+ b+ p$ b+ \6 @. \) v. |。
; ~) G% p8 m0 y4 {7 Woracle 23492 oracle 6w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
* V4 z" j( R" d; S1 @5 `, J0 voracle 23492 oracle 7u REG 253,0 0 36282 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstdbticb (deleted)
9 k z Q0 j# d5 e/ {' t- Z9 C8 R. Goracle 23492 oracle 8w REG 253,0 16749822091 215748 /home/oracle/admin/dbticb/bdump/alert_dbticb.log (deleted)
, Q% d5 c! _% Z1 y9 ~oracle 23494 oracle 10u REG 253,0 0 36307 /home/oracle/oracle/product/10.2.0/db_1/dbs/lkinstrmandb (deleted)
4 O& z) X3 y) C5 k# b
% D9 B8 T3 Z% T# Z+ `6 h$ ], A1 s( \, w- ~: \2 D
- U4 N! Q' D5 g$ Z' J5 m t. {
7 q% w2 d3 N' P& j: r* O从输出结果可以看到/home/oracle/admin/dbticb/bdump/alert_dbticb.log还被使用,未被释放空间. Q0 S8 f5 L% g! B( r. A# _
. O! B" H; ~2 x% s( K
+ W- W$ m& p$ O0 {, d6 s+ w$ V* S5 v9 Y* ?/ k' |$ v. e
如何让进程释放呢?7 d. w5 ~9 I% k& g1 y& P
% D+ f1 {) a/ k* b' z: D
q% F% a' T+ z; c. k
6 ]8 w6 q$ Z- p$ h一种方法是kill掉相应的进程,或者停掉使用这个文件的应用,让os自动回收磁盘空间
/ n+ ?$ x& J1 J. }3 V$ J! _$ N
# n. ]" d8 e* m4 p( D7 f我这个环境有很多进程在使用的这个文件,停掉进程有点麻烦,再有就是风险很大
( G! d0 D1 w W
5 U, s% U+ X& f7 A: t) A+ b; K5 m+ @. t0 @, R0 ^% R D
' ~; l* c/ U' H" B, R
当linux打开一个文件的时候,Linux内核会为每一个进程在/proc/ 『/proc/nnnn/fd/目录(nnnn为pid)』建立一个以其pid
. v& Q0 h' W4 r* V& K0 M- _1 e为名的目录用来保存进程的相关信息,而其子目录fd保存的是该进程打开的所有文件的fd(fd:file descriptor)。
( v1 f& |2 w9 f" [* v7 h7 w5 b9 N8 C2 b# t
kill进程是通过截断proc文件系统中的文件可以强制要求系统回收分配给正在使用的的文件。
" J N' v# h5 j9 D这是一项高级技术,仅到管理员确定不会对运行中的进程造成影响时使用。应用程序对这种方
' j1 x1 ^; J. a" \0 J/ S+ d. B式支持的并不好,当一个正在使用的文件被截断可能会引发不可预知的问题: X3 b! s# ~( M9 }" m
" F7 \5 Z3 x$ d9 O' s+ k
+ B( D+ L L* E% U$ ?$ l8 C- G/ b1 n6 `" g9 @ |! g/ }+ g. J" R: K# X, I5 F
所以我还是采用停应用来解决
; C; O- }) ~( X" U K* ]
2 \6 J% X: N. m/ _! C h; J% ~1 U, I) |. P
8 ]% ], p. I* G/ I3 j3 w
restart oracle数据库,发现/home/oracle/admin/dbticb/bdump/alert_dbticb.log对应的空间被释放* u6 D) f( g7 a# l% ^
2 c: |1 o$ u) J9 p/ F: x
+ S: l) s* J% C# e2 a4 {/ r/ O" r6 T% C( g& t! A1 r$ r
在查看磁盘空间的使用情况,发现空间已经回收了
) `, ^) r, |% H: U
% E- s& v4 g+ X- u& H, P
2 P3 d: ], S8 I V% @( F' @[root@ticketb ~]# df -h4 _: ?6 d" O& m4 w0 u
Filesystem Size Used Avail Use% Mounted on
2 N0 X( r$ f) i E$ V# A/dev/sda1 981M 203M 729M 22% /0 c5 {( E* ]9 M9 ^( q. u
none 16G 0 16G 0% /dev/shm
3 x3 a6 s9 p( n- t x" `, e/dev/sda9 2.9G 37M 2.7G 2% /tmp) g% e$ h* x/ z) ~5 a w
/dev/sda7 4.9G 1.9G 2.7G 42% /usr( k: h' S; m; G: `5 y
/dev/sda8 2.9G 145M 2.6G 6% /var0 l7 A2 ]" @+ V3 U1 a
/dev/mapper/vghome-lvhome+ M9 w! s: x6 N5 W
20G 2.6G 16G 15% /home; l" d# Z+ r4 X: a( Z
/dev/mapper/vgoradata-lvoradata
! j a0 L) L: L3 v3 Z& n 144G 48G 90G 35% /u01/oradata; T1 ^8 R0 ~% b; w7 O$ \5 d x
/dev/mapper/vgbackup-lvbackup) s8 m9 P* U x% N& ~5 G
193G 7.8G 175G 5% /u01/backup* Y+ F; v/ b, R6 P$ x }7 H
: |# L* W2 Q4 L# \) o6 J, |6 J- m3 T$ w1 s+ A u) A4 M+ t3 v& D8 A$ Y
ok,问题解决,然后做下收尾工作即可
/ k7 B3 s/ r# x+ `) Z1 P, R: k- o' ?3 b$ e) T& i7 n
7 e8 f% b6 z- o
$ \" G: p) i/ {3 `# A
-------------------------------------------------------------------------------------------------
, p" U: D, V. K) ?2 E* j* y: ?" E, }% U; r+ x9 r
# C; H" a; h$ H/ x( o6 ?& y5 v: h p! W. e: m: R- ?8 E
学习下lsof命令2 S. l8 j5 T& m& c) Z# d8 `
( o* G7 B+ ^0 _+ h% Z& y/ y
% r- ~; O7 O( |5 l
# B( T' a8 v5 n) [3 Z/ }( G0 Flsof全名list opened files,也就是列举系统中已经被打开的文件。我们都知道,linux环境中,任何事物都是文件,
: T/ X: t* r/ {3 w设备是文件,目录是文件,甚至sockets也是文件。所以,用好lsof命令,对日常的linux管理非常有帮助。4 A( g. e, y/ o
& _( d2 R3 O% _2 ?0 U7 Q1 L6 g6 |+ j; _. I- O; B4 i) A
3 x9 J) U$ x+ Plsof是linux最常用的命令之一,通常的输出格式为:
* Y) e2 A. e2 f$ ^7 V3 g# w+ Q9 S' E; V/ } G& r
7 j, p9 h7 T8 a" [- s: ~; m
. i, {$ I2 z8 o2 p- h9 ~引用
! @! q1 [6 D9 J; t2 ~# M2 N! vCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
4 r% {- q% E9 o8 E; H. @8 A6 B3 j+ f
8 x. V7 _. _" ~
8 P( h0 V: f' ~3 H4 s2 W1 f5 |, t# s( L2 q
常见包括如下几个字段:更多的可见manual。
N& I: _6 m% `1 Z4 s" s6 O( t$ N+ A/ ?
1、COMMAND! h3 y u8 W3 T% q! C+ t/ N
默认以9个字符长度显示的命令名称。可使用+c参数指定显示的宽度,若+c后跟的参数为零,则显示命令的全名
" F' M# u. f/ Q+ _: @+ Y. _) B2、PID:进程的ID号9 r* w+ ^* y! d, { Y& A
3、PPID
8 K" P3 u; r; e7 r- N& p: @) Y7 M父进程的IP号,默认不显示,当使用-R参数可打开。
% C( v& |; P5 @9 ?3 }# _4、PGID$ y& t) Z( ^; U2 F8 ^0 V! s
进程组的ID编号,默认也不会显示,当使用-g参数时可打开。, }& f. T- O r$ n- T4 X
5、USER) C$ s9 _7 D" D& p: M6 W; X
命令的执行UID或系统中登陆的用户名称。默认显示为用户名,当使用-l参数时,可显示UID。
, P! A( \8 }2 ~- o% y9 V& C6、FD" z7 V/ T# I4 B2 o/ [2 v
是文件的File Descriptor number,或者如下的内容:4 X; ] Y+ F8 i3 r# O ^# O# F3 D
(这里很难翻译对应的意思,保留英文)
2 b5 {8 [8 A1 m$ s3 d6 ^- X6 @- _6 G) N
6 K7 E# H) ^, y, E$ s
; k$ ?7 n- k/ I" p6 e+ Q
引用; n% I+ W" W( l) Q+ u; i7 N4 n8 m
cwd current working directory;
! w/ `* a! @. j8 G8 G6 f2 J- M4 vLnn library references (AIX);- w0 F F- i- G4 x' t
jld jail directory (FreeBSD);
: J, s+ s) }- m: {' b' x& o6 Eltx shared library text (code and data);
# |, E$ i5 W% @0 QMxx hex memory-mapped type number xx.4 M! v% i3 `3 w7 K% u U S
m86 DOS Merge mapped file;/ x! D1 r: s$ {
mem memory-mapped file;; O1 Q. F+ j3 p3 l% [7 @
mmap memory-mapped device;: N2 H$ _0 y( H/ a9 v) \' p5 ?
pd parent directory;) ^1 |# K/ c, B. u# r# z
rtd root directory;* Z1 `; G3 x+ ^/ |* E* O
tr kernel trace file (OpenBSD);
1 g* n9 ?: v G4 Ntxt program text (code and data);
0 `+ _6 h2 R5 ]6 j" H' hv86 VP/ix mapped file;7 K& j4 M( p6 K0 `( C) K
$ R- Q- d# k3 r+ u4 n3 j5 \
% s, E7 `- E: Z3 B, e( e' |8 i0 {. S7 n. k
/ W- c% ^0 l8 s+ p( b) t
W. T% c- `9 ]0 a+ j% y9 u+ O
文件的File Descriptor number显示模式有:8 j) u" `7 C% o, e7 o7 ]9 v
( Z! |/ t, |* c! T$ N5 X: U, ^3 `) C5 \4 J8 `7 Q
, J' X) {2 S7 t4 @# v% i
引用' U3 R7 {5 h$ P! _) \$ h2 X% \
r for read access;. i L' [1 K: h' a
w for write access;
0 |% _- A2 j y% f) @+ gu for read and write access;' {" M+ L5 C6 T( A: y
N for a Solaris NFS lock of unknown type;/ U, T3 z9 F A4 ]) e2 u
r for read lock on part of the file;
+ H0 p2 |$ t$ Q$ p: } PR for a read lock on the entire file;
; X8 u/ o$ s, q4 Z6 ?! iw for a write lock on part of the file;
2 U& r9 C, p& YW for a write lock on the entire file;$ p1 N6 {' }, Y' \; Z/ @$ A
u for a read and write lock of any length;; y1 j: L; Z2 _* n- x6 Q0 s
U for a lock of unknown type;
7 l( u& N c X! |# Ix for an SCO OpenServer Xenix lock on part of the file;
" J: U& c* w4 E. n! E1 ]X for an SCO OpenServer Xenix lock on the entire file;' {, I( I, Z3 J! C. @
space if there is no lock.
1 u, `: G7 F3 D6 P
3 {/ l6 F' Q) `( B5 k& m+ D, D. \1 C3 d* k9 T: X* q& I; ?, `! ^; a/ e
) n$ o# d' ^( h, }) V' a
# K( |( B3 A$ i5 p: X: v6 q0 x, l6 I( a& z% L7 I1 _" ?6 u
7、TYPE
: r$ _3 G7 X! q
. d# j4 Y- [2 h3 {引用
( l) ~1 J, ~: SIPv4 IPv4的包;! g' C1 P L5 p) x
IPv6 使用IPv6格式的包,即使地址是IPv4的,也会显示为IPv6,而映射到IPv6的地址;2 Q7 F& \0 K6 ^8 c" B& O# @
DIR 目录
1 [$ s: T# V& y6 l& a }' uLINK 链接文件, m2 Q7 x( a6 ?! S
6 A! Z8 \" ?6 l4 ^, B8 P- l. v( \详情请看manual中更多的注释。9 ]' N1 U/ V w# ^
8 d( ?1 p& s# D3 v! l3 i. k+ _2 H; ]) ? E; f; M+ i" M
9 b9 ^+ I9 k/ V2 z+ }0 ~8、DEVICE1 @9 ~) p- {2 j! t
使用character special、block special表示的设备号0 o; n2 \" m) q+ I0 p) e3 V5 |, H8 N
9、SIZE
( M! T9 i5 ^( r, k3 W7 |文件的大小,如果不能用大小表示的,会留空。使用-s参数控制。
) b: j; F, @8 m) d) ?! M10、NODE2 V( ~' T! u2 F6 ~) v
本地文件的node码,或者协议,如TCP等3 F# }# c5 \* B% z( V6 r2 M* G
11、NAME P, J1 j- w2 `
挂载点和文件的全路径(链接会被解析为实际路径),或者连接双方的地址和端口、状态等: ?- D* w8 H* d6 A; M
( F5 g: G6 U- A* }) `8 \
8 Q9 K- {" R' w1 u* K! E$ n$ |4 D
3 [3 s R3 }( a3 K0 A8 p0 a& A9 d常用示例:
3 ?% C4 D' W/ E; K; o% n! a9 E5 |$ d8 l* c9 h g& [4 a
4 @) l$ N3 G: V$ K+ Z
0 {0 a9 _! k% O1.显示开启文件/home/oracle/10.2.0/db_1/bin/tnslsnr的进程" e# g& ]0 y; W$ d( F
! N8 S9 g: M4 m# N4 M+ ^7 ?) F8 I% w
% p; D0 {$ G; |: j0 ~& V, \, a
9 N+ [9 ^3 f. ?$ W& C" Z' H[root@svr-db-test ~]# lsof /home/oracle/10.2.0/db_1/bin/tnslsnr
4 @+ Z& T. o2 s; M0 `COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
& G- _4 h" m% C9 ?( ?tnslsnr 3520 oracle txt REG 253,5 431062 11408866 /home/oracle/10.2.0/db_1/bin/tnslsnr
I6 Z, w+ n' m2 R- l) W( X- J+ R# u2 f+ @0 n
2 e* y+ z. A) Q* c3 ?' k
# ~7 M; I8 V3 r' z4 P2.知道22端口现在运行什么程序
& J9 H% X) I, H* M1 }) w/ J. H+ N; ~. m5 B# L3 H0 @7 r
! q8 f9 ]* u: N' o9 }! M9 m6 q2 i! O" L: {# e1 Z6 A
[root@svr-db-test ~]# lsof -i :22
5 O5 ]! F/ c. U& l& X! P' aCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAME$ c3 u; w& T* N- q
sshd 3101 root 3u IPv6 8670 TCP *:ssh (LISTEN)- e9 I( Z; w7 M% x, H: @2 @
sshd 4545 root 3u IPv6 4237972 TCP 203.aibo.com:ssh->win-avbmq9e8ka7.gdgg.local:nsjtp-ctrl (ESTABLISHED)
5 n7 A9 P2 H# X. U3 O; y3 z2 X" y* y j3 [& p% l3 P
$ m6 T4 C- h# W
* m1 @5 n+ N5 i: Y7 F5 }
3.显示init进程现在打开的文件) K. V- h# n) e4 e& ^7 a
q! e: h5 z5 l$ m4 e* }, _9 D9 J
: H; V6 [$ z. w ^$ H& U! ^9 _5 ?! v. X
[root@svr-db-test ~]# lsof -c init
) d3 y" ?8 f6 t) y9 qCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
8 C4 s$ S) Z, `) x1 L7 m* |& pinit 1 root cwd DIR 253,0 4096 2 /
- E+ k% z A$ {0 ^1 Y4 ~& Einit 1 root rtd DIR 253,0 4096 2 /9 n! g5 a- k! g5 ]+ z) N6 y7 p6 K
init 1 root txt REG 253,0 43496 524446 /sbin/init- l L6 M# _! O+ T' v* v: s
init 1 root mem REG 253,0 130448 917826 /lib64/ld-2.5.so6 ]+ ^- D- B+ ]7 p- J& X( x. d6 v
init 1 root mem REG 253,0 1678480 917827 /lib64/libc-2.5.so
+ X/ _. B2 f% j& Xinit 1 root mem REG 253,0 23520 917686 /lib64/libdl-2.5.so
w; X: r! x9 f7 i( \: w xinit 1 root mem REG 253,0 247528 917844 /lib64/libsepol.so.1% n$ L5 [$ A+ a
init 1 root mem REG 253,0 95480 917845 /lib64/libselinux.so.1
( w6 X7 m+ _! k0 F: T7 O6 w. zinit 1 root 10u FIFO 0,16 2311 /dev/initctl. @4 M' m% l7 O0 \" L5 J( e
1 p1 g( \3 P! T& K1 F: J, n
/ Z9 J. I% }/ c3 k" p7 Q, L, {
' E, K5 J5 O+ a3 K* l+ Z4. 看进程号为1的进程打开了哪些文件
l: d; @- Q S* q& w# R/ ^0 \
" j/ `2 E2 M( d5 Q/ R
5 G6 T+ x# o8 s' V8 K
# @5 {- s& p8 H5 c' v[root@svr-db-test ~]# lsof -p 1
$ x: k, M" a3 Z# F4 a0 Y iCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
$ t! \- n$ ]! f# o( Qinit 1 root cwd DIR 253,0 4096 2 /
- @1 V! Z8 u/ D- T! x. Oinit 1 root rtd DIR 253,0 4096 2 /& f7 J9 ~6 t0 W; V; |3 c# M
init 1 root txt REG 253,0 43496 524446 /sbin/init
' S( |* A( r; Iinit 1 root mem REG 253,0 130448 917826 /lib64/ld-2.5.so
# m9 }1 I; J B* Y. g$ C7 p" Q+ H0 finit 1 root mem REG 253,0 1678480 917827 /lib64/libc-2.5.so; }- j0 x' D" ^& i4 K2 B
init 1 root mem REG 253,0 23520 917686 /lib64/libdl-2.5.so
" F, ~+ _+ B& T6 N: P" x6 ^init 1 root mem REG 253,0 247528 917844 /lib64/libsepol.so.1" h; t6 U$ C) S, K1 O- y( A
init 1 root mem REG 253,0 95480 917845 /lib64/libselinux.so.1
& u5 a# W5 X6 w: N9 @# Ainit 1 root 10u FIFO 0,16 2311 /dev/initctl' F8 F9 T3 p, ]8 a2 [$ o% _4 c
$ Y6 {: e0 Q; \. P/ T8 ?! o
) N9 @0 B7 v6 l+ B$ n4 N; i+ a! Q9 I! O
5. 显示归属3520的进程情况
9 F4 `4 |' E: X w% D6 Q! N( i+ c
5 c p; c1 ?: p6 R/ y) X+ t
( b3 i# {) R7 t$ h" y[root@svr-db-test ~]# lsof -g 3520
" T3 ~/ J2 y$ P1 |' y mCOMMAND PID PGID USER FD TYPE DEVICE SIZE NODE NAME8 f7 H% \* G y, w$ A! ]3 D$ t
tnslsnr 3520 3520 oracle cwd DIR 253,5 4096 11059201 /home/oracle; m1 w1 L, c! o7 X& x9 d3 @6 C
tnslsnr 3520 3520 oracle rtd DIR 253,0 4096 2 /- A$ r/ @( m* U9 p+ d4 a8 b$ J
tnslsnr 3520 3520 oracle txt REG 253,5 431062 11408866 /home/oracle/10.2.0/db_1/bin/tnslsnr
& p# g9 O) o; a4 P: [" }tnslsnr 3520 3520 oracle mem REG 253,0 130448 917826 /lib64/ld-2.5.so
/ X9 K+ ?' n3 t7 z' R: K& Ntnslsnr 3520 3520 oracle mem REG 253,0 1678480 917827 /lib64/libc-2.5.so5 k( V$ \3 H7 T+ j
tnslsnr 3520 3520 oracle mem REG 253,0 23520 917686 /lib64/libdl-2.5.so* \: n9 W* e) \
tnslsnr 3520 3520 oracle mem REG 253,0 615136 917834 /lib64/libm-2.5.so
# p( P* ]' A, l U. ^6 U: e" q) ~% x0 vtnslsnr 3520 3520 oracle mem REG 253,0 141208 917829 /lib64/libpthread-2.5.so' d# I, m4 S p0 C/ a. o
tnslsnr 3520 3520 oracle mem REG 253,0 109824 917839 /lib64/libnsl-2.5.so
# H& X5 i0 k: O/ b! E" ctnslsnr 3520 3520 oracle mem REG 253,5 20706622 11405436 /home/oracle/10.2.0/db_1/lib/libclntsh.so.10.1+ F5 Q# B/ s$ S7 g7 J% ?9 P2 B
tnslsnr 3520 3520 oracle mem REG 253,5 3803097 11410641 /home/oracle/10.2.0/db_1/lib/libnnz10.so
; w! d/ T$ m& Z& O) B- i5 Qtnslsnr 3520 3520 oracle mem REG 253,5 83493 11407251 /home/oracle/10.2.0/db_1/lib/libons.so
9 { [# A6 @) n# F; wtnslsnr 3520 3520 oracle mem REG 253,0 53880 917532 /lib64/libnss_files-2.5.so
8 V$ w& k7 q! atnslsnr 3520 3520 oracle mem REG 253,5 8545 11407615 /home/oracle/10.2.0/db_1/lib/libskgxn2.so- ?, f7 |+ j0 _5 v7 [
tnslsnr 3520 3520 oracle mem REG 253,5 513705 11410332 /home/oracle/10.2.0/db_1/lib/libocrutl10.so
. w6 U. o; D6 K8 K1 {- @tnslsnr 3520 3520 oracle mem REG 253,5 636161 11410330 /home/oracle/10.2.0/db_1/lib/libocr10.so0 m4 {0 V% @9 r, q
tnslsnr 3520 3520 oracle mem REG 253,5 657825 11410331 /home/oracle/10.2.0/db_1/lib/libocrb10.so+ g' L: o& J- l- \- J8 v4 v6 X J
tnslsnr 3520 3520 oracle mem REG 253,5 1745769 11410365 /home/oracle/10.2.0/db_1/lib/libhasgen10.so% Y _# ]# H3 h0 R7 C$ c9 T3 _
tnslsnr 3520 3520 oracle mem REG 253,5 61985 11410366 /home/oracle/10.2.0/db_1/lib/libclsra10.so* y# U3 m" H" D0 A% B
tnslsnr 3520 3520 oracle 0u CHR 1,3 2553 /dev/null
7 c/ I% w0 n$ }: |: \tnslsnr 3520 3520 oracle 1u CHR 1,3 2553 /dev/null: c: C, h$ I2 K# z- t
tnslsnr 3520 3520 oracle 2u CHR 1,3 2553 /dev/null
9 K* W, o! P! d6 {+ dtnslsnr 3520 3520 oracle 3w REG 253,5 318853012 11633459 /home/oracle/10.2.0/db_1/network/log/listener.log
n1 V4 U* A* w. M5 a/ k# Ntnslsnr 3520 3520 oracle 4r FIFO 0,6 15661 pipe
# X, R9 b! q9 i- ~1 v3 R4 Htnslsnr 3520 3520 oracle 5r REG 253,5 11776 11410579 /home/oracle/10.2.0/db_1/network/mesg/nlus.msb* v5 h' w2 J1 q) K+ E# Z8 t/ n
tnslsnr 3520 3520 oracle 6r REG 253,5 46592 11407160 /home/oracle/10.2.0/db_1/network/mesg/tnsus.msb# p" M: j& h# t( ?0 j! S
tnslsnr 3520 3520 oracle 7w FIFO 0,6 15662 pipe. G2 I e0 c7 y
tnslsnr 3520 3520 oracle 8u IPv4 15665 TCP 203.aibo.com:ncube-lm (LISTEN)
' c2 R; |+ o' ]0 d1 Vtnslsnr 3520 3520 oracle 9u unix 0xffff81021b7d6980 15666 /var/tmp/.oracle/s#3520.14 ]2 d$ U" f2 b" m$ }- F. s
tnslsnr 3520 3520 oracle 10u unix 0xffff81021b7d66c0 15668 /var/tmp/.oracle/s#3520.2
0 x2 n8 U0 l7 J% m# S% l: l+ g) Z& u2 t1 k
7 j4 k. H. n5 p1 c0 w6 P0 w# P6.依照文件夹/home/oracle来搜寻,但不会打开子目录,用来显示目录下被进程开启的文件: }# ?' f- j8 G+ s
. O- i7 m6 u3 S5 H
$ o7 x# V& R: ^2 r4 y" R
$ G7 X7 U$ G6 e6 w: ]3 P+ C7 l& Q
[root@svr-db-test ~]# lsof +d /home/oracle
5 V' u. K: r% O/ G4 `COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
; N6 R' A2 x! T& Z: wtnslsnr 3520 oracle cwd DIR 253,5 4096 11059201 /home/oracle; A$ p8 k. ~# t$ e7 {; T. y. v
9 d* ~& k9 ]1 B# {
& a# S, A. l- X# X
! L# J+ W: F z1 y7. 打开/home/oracle文件夹以及其子目录搜寻,用来显示目录下被进程开启的文件
$ S5 Z3 u, S& f- r. Q: M( U
2 F" z/ ^% z2 B4 Q z" q ~
, g+ P3 R# ^" x" S; X! ]" }. z7 H. `3 Y
[root@svr-db-test ~]# lsof +D /home/oracle
$ G# R3 k* l4 N, x9 c4 p9 a# b2 q8 y6 @+ v* Q
# _* e0 V% \, ?" p, v显示内容太多了,不显示了
+ C% s/ h$ A( k# {; ~3 r
' F2 R s; e5 n t% ?
) p$ L8 |* B2 [3 S- G- e6 z8. lsof -i 用以显示符合条件的进程情况3 e5 `9 W. Z$ c: B& L
; Y1 _4 z" O. U& ^. z
8 d6 ]: M5 m, w9 T6 D C K
- r% ?4 J7 z- Q* V* K; G0 O语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]2 |4 a9 f$ Z6 C
0 X! F( Q3 e+ Y
p; \$ w, i$ S2 K- j+ k* A
" q/ s4 R/ r0 P. b, \/ N7 _
46 --> IPv4 or IPv6
2 F- b! z% g2 |
5 K: L: |* J8 F5 {+ wprotocol --> TCP or UDP
: S* c+ D3 X+ P4 w+ n4 Q2 `* v- E5 k( B# V. u+ i& K- a. H. j
hostname --> Internet host name' q# V" K8 }) ?; L
# d1 O% `5 h. z8 F- `+ jhostaddr --> IPv4位置; Q# j1 m2 E; v4 E% }. e U
- K) c" `9 m3 O* k- _) Q/ `service --> /etc/service中的 service name (可以不只一个)
, Y0 w% l2 i) |' w) G3 Z8 D) S: f) R
port --> 端口号 (可以不只一个)
( p0 r" I2 ^1 y* b9 Z e& ?, }0 H
: s% P1 G1 }& J! k$ f
- d! ?( Q0 s7 F/ C: C5 l
( r, o# X8 G8 E例:9 C7 f q' B( I# u
3 x% P+ k. s. Q* G, {4 D: l5 c
0 M9 O1 Q O9 }8 n" v[root@svr-db-test ~]# lsof -i tcp@192.168.2.245:1521 -n# P0 V+ B' E7 `* K- ]$ J
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
7 g. f2 G4 v) Aoracle 15633 oracle 16u IPv4 4069605 TCP 192.168.2.203:31580->192.168.2.245:ncube-lm (ESTABLISHED)
% e5 D4 b3 O/ A/ ^
1 V, [, ]3 |1 x+ ?2 \- a. r) _0 d" u2 ^9 b+ F4 i
+ ]! l) P+ s, V. Y" H' O" d或
4 X- f. a2 J* i# u+ Y+ F& H+ b- I" ^# E" o2 @# [9 V8 G. u
1 s/ Z$ M/ b; W
" c9 b8 K2 S+ {! T& ~[root@svr-db-test ~]# lsof -i tcp@192.168.2.245:15213 s w V% r( m$ P
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME; X$ |: j [5 ]) o5 z
oracle 15633 oracle 16u IPv4 4069605 TCP 203.aibo.com:31580->192.168.2.245:ncube-lm (ESTABLISHED)
z9 J5 U4 k: F: s$ F1 q8 ~
) l8 V9 o4 c7 F' N5 F [# r3 f8 f" h
- ~9 a- G$ x9 R3 q t5 elsof -n 不将IP转换为hostname,缺省是不加上-n参数
7 C$ v# B, W/ |+ [- |
1 h1 R( N& |3 h3 \$ K- a5 E% y
; _, L+ X" @+ k6 a% I1 s* s6 \
O) e7 C9 A B, c0 l; e) W) P9. 显示某用户的已经打开的文件(或该用户执行程序已经打开的文件)- b& G% `6 N0 J4 f/ Y* B* N
1 z* R- \4 E) u# b7 }' s9 a R1 `3 h2 f% n2 m! p0 V
; j1 T& q1 u$ n- I4 S: D
[root@svr-db-test ~]# lsof -u oracle
% r/ V1 I6 w+ G8 Z4 B& a或1 x) s, h2 Z* F0 _" M5 K
[root@svr-db-test ~]# lsof -u 0
: m5 V4 ~& D( {' |* q# w& M( ^. g, C
+ P n" b' c7 @2 c* U& l7 x5 k; o) e1 P0 {. _, Y
10. 仅打印进程,方便shell脚本调用
# t+ R# ?; Y& G$ q/ F! d5 ?* U$ N9 ?7 a$ v5 i1 B( A
[root@svr-db-test ~]# lsof -tc sshd
L: J7 T9 Z& A5 A9 _5 @3101+ o* Y: R4 H( `- ~: Z z
45455 o% s/ K) Y& j. g, Z( X% k6 t* S
( G2 T% a! \0 f
% m5 H" i, ]# J& P$ Z, ?# F! W- x: ~5 h+ j) i
6 d3 F z0 T2 m/ I
+ _1 r8 e! w1 } g# W# P& z6 O8 ?
关注:
$ x I) r+ ^) c5 z7 i* a: Y1 q4 i1 H2 p) @2 e- H4 e
/ m& T4 Y2 a, U8 f! P# ?
W/ \2 |6 q" V! n( v3 L0 r进程调试命令:truss、strace和ltrace1 i% p+ W: b1 J; K4 q8 C) A) p+ }
% g. k% r, V) z
" }( I) { C) [4 x, J' N) i) d% d7 o( w- |
进程无法启动,软件运行速度突然变慢,程序的"SegmentFault"等等都是让每个Unix系统用户头痛的问题,而这些问题都可以通过使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。7 L @+ z( @/ {4 N+ z+ [ i- q8 T' s+ q
* |* W) l5 w8 l* C6 k6 U6 @- Z. Z% T; [* O问题描述:
* e0 a' s" X+ \) @, Kdf -h 查看到的空间,和du目录的空间不一致,实际du目录大小要小,磁盘空间没释放
/ ~7 }9 g# H; }7 F/ A7 Bdu /home 大小93G df 查看实际/home挂载已使用168G+ S/ l* _( T! {2 A
& b% s6 B# d" m1 J& \
问题原因:8 I5 F! _: q/ ]
磁盘空间未释放,在此前执行删除操作中,进程未结束
: z7 ?' I& q4 p- K( R/ D
7 f' h4 P8 w, y1 c+ ?解决方案:( x$ U0 d; |8 Z( X' e4 W* h1 ?
lsof |grep delete 找到未结束的进程,杀掉进程
7 H. X0 i7 }3 [找到delete进程中3504和4433一致占用,杀掉
# Y, g/ R( e7 ?8 ~/ w) [5 U$ ]$ K) i( f0 L, k5 X1 o) y) i4 A! T+ Y
kill之后正常
) I5 Z- o6 I t
" s+ _2 d; I8 C- k4 L o( q
3 |: S! x, ?' [. Q" F7 J备注:在实际应用中,可能还存在在文件目录下使用du -sh * 查看文件总体大小和du -sh 文件目录大小不一致,也不是磁盘空间不释放,可能是存在隐藏文件,du -sh * 是不会du隐藏文件(.)的,此时建议使用du -h –max-depth=1 ,显示本一级目录的大小,包含所有隐藏文件
6 v' P6 r9 ]- f9 d8 ~, D/ z" ~& V0 |2 ?& ~( |
Y' ~1 P. f- k7 i6 r { |
|