首页 > Linux操作系统 > Linux操作系统 > unix系统管理有效指令
以下内容整理自<
1.批量杀进程
ps -ef|grep "ora_"|grep -v grep|awk '{ print $2 }'|xargs kill -9
2.
在/usr 及所有子目录下查找名字是 vi 的文件
find /usr -name vi
在当前目录及所有子目录下查找文件名包含 net 的文件
find ./ -name "net*"
3.获取 Oracle 主目录(ksh)
cat /etc/oratab|grep ^$ORACLE_SID:|cut -f2 -d':'
4.为 Oracle 创建有用的 unix 别名
下面在.profile中定义了一些常用的别名:
# Aliases
#
alias alert='tail -100\
$ORACLE_HOME/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.lo
g|more' alias arch='cd $ORACLE_HOME/admin/$ORACLE_SID/arch'
alias bdump='cd $ORACLE_HOME/admin/$ORACLE_SID/bdump'
alias cdump='cd $ORACLE_HOME/admin/$ORACLE_SID/cdump'
alias pfile='cd $ORACLE_HOME/admin/$ORACLE_SID/pfile'
alias rm='rm -i'
alias sid='env|grep ORACLE_SID'
alias admin='cd $ORACLE_HOME/admin'
5.如果你将后台作业的输出重定向到了一个文件,那么你可以通过 tail -f 命令来监
控后台进程的运行情况。例如:
tail -f logfile.list
tail -f 命令不断的显示输出文件中的新的行,从而让你很轻松的可以看到进程的执
行情况。为了终止tail –f 命令,可以随时按下 Ctrl-C。
6. 进程管理
ps -ef|grep "ora_"|grep -v grep
UID:代表用户
PID:代表进程
PPID:父进程。如果父进程是 1,则代表该进程是由init 进程调用的。
STIME:启动时间
CMD:被执行的 Unix 命令
查看消耗 CPU 时间最长的进程:
$ ps -ef|grep oracle|sort +6|tail
oracle 914 1 0.0 Sep 22 ?? 0:00.19 ora_s000_gaxz
oracle 908 1 0.0 Sep 22 ?? 0:00.20 ora_reco_gaxz
oracle 898 1 0.0 Sep 22 ?? 0:02.94 ora_pmon_gaxz
oracle 900 1 0.0 Sep 22 ?? 0:07.89 ora_dbw0_gaxz
sort +6 的作用是按照第 6 列排序。最左边的是第0 列,第 6列是CPU消耗的时间,
但是如果程序运行了 1 天以上,那么 STIME 就会包含两列,因此上面的例子实际上
第 7 列是消耗 CPU 时间:
ps -ef|grep afis|sort +7|tail
是第 6 列还是第 7 列的确是一个麻烦的问题,没有什么太简单的方法,一般各执行
一遍。tail 的作用是显示输出的后多少行,默认是10
另外一个查找高 CPU 消耗进程的方法是使用 Berkeley 的 ps auxgs 命令。这个命令
输出的第 3 列(sort 中的+2)名字叫%CPU, 显示的是当前每个进程的CPU 持有百分比。
你可以按照此列排序来获得当前高 CPU 占用的用户。
$ ps auxgw|egrep "RSS| "|head
USER PID %CPU %MEM SZ RSS TTY TIME
root 516 78.9 1.0 16 4 - A Nov 21
oracle 41616 4.4 1.0 8312 6052 - A 07:00:59
oracle 20740 2.7 1.0 8140 5888 - A 08:52:32
oracle 17402 2.4 1.0 8296 6044 - A 07:27:04
egrep 的作用是对 ps 的输出排序过滤,head 的作用是显示输出的头 10 行 。
显示 Oracle 的活动连接用户数量
# ps -ef|grep $ORACLE_SID|grep -v grep|grep -v ora_|wc -l
7.内存和 CPU 管理
显示内存信息:
Linux下显示内存大小:
18《Oracle DBA 的 UNIX 袖珍参考手册》中文版 by turner
/usr/sbin/dmesg | grep "Physical:"
显示 TRU64 下的内存信息:
$ /bin/vmstat -P | grep "Total Physical Memory"
Total Physical Memory = 1024.00 M
Total Physical Memory Use: 130730 / 1021.33M
显示 HP-UX下的内存信息:
grep MemTotal /proc/meminfo
Solaris 下显示内存大小:
/usr/sbin/prtconf | grep "Memory size"
Aix 下显示内存大小:
/usr/sbin/lsattr -E -l sys0 -a realmem
AIX下显示 CPU数量
# lsdev -C|grep Process|wc -l
Solaris 下显示 CPU数量
# psrinfo -v|grep "Status of processor"|wc –l
如果是显示结果是中文,可能上面的命令显示有误。可以用psrinfo -v 来代替。
8.服务器监控
top
Load averages:平均负载。如果大于 1 说明服务器负荷过重。
CPU states:CPU 信息概要。7.5% user 的意思是 CPU 有 7.5%是用户占用,其他可按字面类推。
Memory:Free 表明可用的内存数量。本例子中可用内存是 15M。
IDLE:CPU 空闲百分比
sar
sar 在 SVR4 环境中,例如 HP-UX、Solaris 中很普及,在 aix 中也可以用。Sar 命
令可以查看整体CPU 消耗情况,磁盘、内存、JFS buffer 使用情况等。常见的sar使用
例子:
sar -u 2 5
上面的命令每 2 秒显示一次 cpu 情况,显示5 次。
显示交换(swapping)活动。例如 5 秒钟显示一次,显示5 次:
# sar -w 5 5
HP-UX corp-hp1 B.11.00 U 9000/800 08/09/00
19:37:57 swpin/s bswin/s swpot/s bswot/s pswch/s
19:38:02 0.00 0.0 0.00 0.0 222
19:38:07 0.00 0.0 0.00 0.0 314
Average 0.00 0.0 0.00 0.0 294
上面的输出列的含义:
swpin/s 每秒钟交换进(sawp-in)的进程数量
swpot/s 每秒钟交换出(sawp-out)的进程数量
bswin/s 每秒钟交换进的块数(每块512字节)
bswot/s 每秒钟交换出的块数(每块512字节)
pswch/s 每秒钟上下文交换数量
vmstat
vmstat 是通用的 UNIX 监控工具,vmstat 在 IRIX 操作系统中是 osview。vmstat 的
第一个参数是间隔的秒数,也可以带第二个参数,表明显示多少次。vmstat 不同操
作系统输出结果不一样,含义也可能有区别,具体要看 man 帮助。
# vmstat 3
kthr memory cpu
---- ... --------------- ... --------------
r b ... fre re pi sr ... cs us sy id wa
0 0 ... 207 0 1 0 ... 142 18 4 75 4
0 0 ... 187 0 4 0 ... 70 2 1 91 6
0 0 ... 184 0 0 0 ... 99 5 2 89 4
在 HP-UX 或 AIX 下 vmstat 输出中一些重要的信息:
r
运行队列。当这个值超过CPU数量的时候,服务器就有CPU瓶颈(可以通
过lsdev -C|grep Process|wc -l 来获取CPU数量)
pi
page-in数量。这个参数非0暗示着系统缺少内存,内存被交换到磁盘。然而
当程序刚使用的时候也可能导致page-in非0。为了找到真正原因,则检查sr
列。如果sr也是非0,那么的确意味着缺少内存。
sr
扫描速率。如果扫描速率持续增加,那么页交换后台程序忙于分配内存页。
下面是CPU的一些信息:
us
用户占用CPU的百分比
sy
系统占用CPU的百分比
id
空闲CPU百分比
wa
等待CPU的百分比
用户和系统百分比之和(us+sy)接近 100 时,说明 CPU 繁忙,但并不意味着 CPU 过载。sr 超过
CPU数量的时候意味着 CPU过载。当 CPU等待(wa)超过 20的时候,那么 20%或者更多的处理
时间在等待资源,通常是 I/O。通常在备份或者导出等 I/O操作的时候这个百分比比较大;但如
果正常的时候这个值一直挺高则也可能有 I/O瓶颈。
显示 HP-UX 下的交换区使用情况
# swapinfo -tam
Mb Mb Mb...
TYPE AVAIL USED FREE...
dev 1024 25 999...
reserve – 999 -999...
memory 3966 3547 419...
total 4990 4571 419...
... PCT Mb
... USED RESERVE PRI NAME
... 2% 1 /dev/vg00/lvol2
...
... 89%
... 92% 0 -
显示服务器平均负载情况(w 命令) 。
Unix 的w 命令用来显示高资源会话简单的信息。大多数的有经验的 Oracle DBA都会
首先用这个命令来快速查看一下服务器负载情况,因为 w 命令在几乎所有的Unix下
都可以用。
# w
10:02AM up 60 days, 18:46, 3 users,
load average: 0.32, 0.39, 0.43
User tty login@ idle JCPU PCPU what
Oracle pts/0 08:17AM 0 80:18 80:16 w
oracle pts/1 09:15AM 5 2 0 ftp
miltonrv pts/2 01May 009days 0 0 -ksh
上面的输出中的 load average 分别是过去 1 分钟、5 分钟、15 分钟的负载情况。如
果大于 1 说明 CPU 紧张。
使用 iostat
iostat 显示物理磁盘 I/O情况。下面的3 表明 3 秒钟显示一次。
iostat 3
System configuration: lcpu=2 disk=5
tty: tin tout avg-cpu: % user % sys % idle % iowait
0.0 1302.0 1.8 0.6 89.3 8.
注:turner 王忠海,Email:turner@itpub.net
现任 itpub 的 《Oracle 入门与认证》 版主, 喜欢 Oracle技术及 unix技术。 小女儿可爱博客:http://blog.sina.com.cn/u/1256787164
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21639366/viewspace-604443/ ,如需转载,请注明出处,否则将追究法律责任。