CPU个数查看:
# more /proc/cpuinfo
# top
内存大小检查:
#grep MemTotal /proc/meminfo
查看与修改主机名:
# hostname
修改完毕后,系统提示重启小型机,然后请检查/etc/hosts文件是否正确,并修改Oracle监听程序配置文件中的机器名。
查看CPU使用率:
# top
查看IO、CPU的使用情况:
# sar 2 10
查看操作系统版本:
# SPident
# cat /etc/SuSE-release
查看内核版本:
# uname -r
检查是否安装了package:
# rpm -q package_name
系统运行级别有如下几个:
0:关闭系统
1:单用户模式,如果没有为shutdown命令指定-h或-r参数而直接执行,则默认将切换到此运行级别
2:多用户模式(不支持NFS)
3:多用户模式(支持NFS),一般常用此种运行级别
5:多用户模式(GUI模式)
6:重新启动系统
查看系统运行级别的命令:
# runlevel
自定义一个任务加到启动列表中的步骤如下:
1. 在/etc/rc.d目录中建立脚本,记录要处理的内容。这里例如为abc
2. 查看当前系统的运行级别,例如为5级
3. 进入rc5.d目录,建立一个连接:ln –s/dev/rc.d/abc S99abc,这里99表示执行的先后顺序
4. 执行 chkconfig |grep abc,应看到abc 5
5. 将abc加入到check列表中:chkconfig -a abc,然后执行chkconfig –list abc应能看到在5后面为ON
查看系统启动历史:
# last
返回结果例如:
# last root pts/2 10.70.107.68 Mon Dec 1 09:13 still logged in oracle pts/1 10.164.214.72 Mon Dec 1 09:05 still logged in root pts/0 10.164.78.145 Mon Dec 1 08:57 still logged in reboot system boot 2.6.16.46-0.12-s Tue Dec 2 07:50 (-22:-35) root pts/0 10.164.106.200 Sun Nov 30 22:48 - crash (1+09:02) reboot system boot 2.6.16.46-0.12-s Tue Dec 2 05:44 (-20:-28) root pts/0 10.164.106.200 Sun Nov 30 21:26 - crash (1+08:18) reboot system boot 2.6.16.46-0.12-s Tue Dec 2 04:57 (-19:-41) |
其中,system boot表示系统重启。
查看系统启动时长:
# uptime
返回结果例如:
9:21am up 9:39, 3 users, load average: 0.01, 0.00, 0.00 |
其中,9:21am up 表示本终端是早上9点21分连接到服务器的。9:39表示服务器已经启动了9个小时39分钟,如果超过一天,则会有1days的字样出现在9:39前面。
命令shutdown:
shutdown命令用于安全关闭Linux系统。有些用户会使用直接断掉电源的方式来关闭Linux,这是十分危险的。因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至会损坏硬件设备。
执行shutdown命令时,系统会通知所有登录的用户系统将要关闭,并且login指令会被冻结,即新的用户不能再登录系统。使用shutdown命令可 以直接关闭系统,也可以延迟指定的时间再关闭系统,还可以重新启动。延迟指定的时间再关闭系统,可以让用户有时间储存当前正在处理的文件和关闭已经打开的程序。
shutdown命令的部分参数如下:
[-t] 指定在多长时间之后关闭系统
[-r] 重启系统
[-k] 并不真正关机,只是给每个登录用户发送警告信号
[-h] 关闭系统(halt)
shutdown命令的工作实质是给init程序发送信号(signal),要求其切换系统的运行级别(Runlevel)。
命令halt:
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。 halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启
[-i] 关机或重新启动之前,关掉所有的网络接口
[-p] 关机时调用poweroff,此选项为缺省选项
命令reboot:
reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。
命令init:
init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动。
系统进程查看命令:
# ps- ef
# ps –ef | grep ora
返回的结果例如:
UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:56 ? 00:00:01 init [5] root 2 1 0 19:56 ? 00:00:00 [migration/0] root 3 1 0 19:56 ? 00:00:00 [ksoftirqd/0] root 4 1 0 19:56 ? 00:00:00 [migration/1] oracle 24462 1 0 20:11 ? 00:00:00 ora_pmon_ora11g1 oracle 24464 1 0 20:11 ? 00:00:00 ora_vktm_ora11g1 oracle 24468 1 0 20:11 ? 00:00:00 ora_diag_ora11g1 |
进程号为1的系统进程:
进程号1固定为init进程专用,如上面的显示。其中init[5]中的5表示系统运行级别。如果此进程被kill,则操作系统会重启。
系统日志位置:/var/log/messages
修改sysctl.conf参数的方法有两种,一是修改此文件,然后执行/sbin/sysctl –p使修改生效。另一种方法是使用sysctl修改,例如:
# sysctl -w net.ipv4.tcp_keepalive_intvl=15
参数名称 |
Sus11上默认值 |
相关文件 |
参数作用描述 |
semmsl |
|
/proc/sys/kernel/sem |
|
semmns |
|
|
|
semopm |
|
|
|
semmni |
|
|
|
shmmax |
|
/proc/sys/kernel/shmmax |
|
shmmni |
|
/proc/sys/kernel/shmmni |
|
shmall |
|
/proc/sys/kernel/shmall |
|
file-max |
|
/proc/sys/fs/file-max |
|
ip_local_port_rang |
|
/proc/sys/net/ipv4/ ip_local_port_rang |
|
rmem_default |
|
/proc/sys/net/core/ rmem_default |
|
rmem_max |
|
/proc/sys/net/core/ rmem_max |
|
wmem_default |
|
/proc/sys/net/core/ wmem_default |
|
wmem_max |
|
/proc/sys/net/core/ wmem_max |
|
查看方法,例如要查看以sem开头的几个参数设置:
# /sbin/sysctl -a | grep sem
修改方法是在文件/etc/sysctl.conf 中增加或者修改相应的参数。然后执行以下命令使修改马上生效:
# /sbin/sysctl –p
要使修改永久生效,即操作系统重启后仍有效,执行以下命令:
# /sbin/chkconfig boot.sysctl on
为了提升用户运行程序的性能,要对shell参数作出限制。例如要求单用户同时打开进程的个数最大值、同时打开文件句柄的最大值等。例如安装oracle的要求分别是16384和65536,那么应该做以下处理:
1. 在/etc/security/limits.conf中加入如下几行内容:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 |
2. 添加“session required pam_limits.so”到 /etc/pam.d/login中。
3. 对于bash类型,增加下面的内容到/etc/profile.local中:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi |
如果是csh则增加如下内容到/etc/csh.login.local中:
if ( $USER == "oracle" ) then limit maxproc 16384 limit descriptors 65536 endif |
只能以root用户来修改各个用户可打开文件的最大个数。可以ulimit –a来查看当前的设置值。用ulimit–n 10240来设置。
在源服务器端启动nfs和portmap服务:
# /etc/init.d/nfsserver start
# service portmap start
在源服务器编辑配置文件/etc/exports:
在其中加入要共享的目录及目标机器的IP等信息。
/etc/exports范例:
/tmp *(rw,no_root_squash)
/usr/src *.siyongc.domain(ro,insecure) 192.168.100.*(ro,insecure)
/var/ftp/pub/incoming192.168.100.24(rw,all_squash,anonuid=50,anongid=50)
第一行,我将 /tmp 这个目录完全分享出去了,不管客户端来自哪里。在括号里面的‘rw’就
是 Read&Write 的意思,而‘no_root_squash’呢,则是允许让使用者具备 root 的权限,在某
些特别情况下,例如使用 bootp 登录的无磁碟工作站,是相当好用的。因为预设情况下 NFS 会
将 root 的身份 squash 为权限最低的 anonymous (nobody) 身份,而其他身份则以 client 端机
器上当时拥有的 User ID 和 Group ID (指号码的值)来建立档案。注意哦,在进权限判断的时候,
不是以 UserName 来作为身份依据哦,UID 和 GID 的号码最後必须对应到 server 端的
/etc/passwd ,而非 client 那边的。
第二行,我将 /usr/src 这个目录分享给以 siyongc.domain 这个 domain 做结尾或是以
192.168.100 开头的任何机器,而无需使用 secure port (insecure),但只具备唯读权限(ro)。这里,
您要留意 " * " 的使用,在一些旧版本的 NFS 您不能用在 IP 上。但是,我这里的测试却是可
行的。
第三行,我将 /var/ftp/pub/incoming 这个目录只分享给 192.168.0.22 这台机器,且具备了读和
写的权限(rw),但在 server 上写入的档案,必须换成 anonymous 身份进行。但是其後的设定
又将任何 anonymous 换成设定的 UID 和 GID (这里都是 ftp),这样的安排是要确定任何存取
都按指定身份进行。这个 incoming 目录预设是不存在的,日後在讨论到 FTP 服务设定时候会
提到,但您能够自行用 mkdir 建立,而且为 group 和 others 加上 +w 权限连同 sgid 和 sticky
bit (3777)。
在源服务器端启动nfs和portmap服务:
# /etc/init.d/nfsserver start
# service portmap start
在源服务器编辑配置文件/etc/exports:
在其中加入要共享的目录及目标机器的IP等信息。
/etc/exports范例:
/tmp *(rw,no_root_squash)
/usr/src *.siyongc.domain(ro,insecure) 192.168.100.*(ro,insecure)
/var/ftp/pub/incoming192.168.100.24(rw,all_squash,anonuid=50,anongid=50)
第一行,我将 /tmp 这个目录完全分享出去了,不管客户端来自哪里。在括号里面的‘rw’就
是 Read&Write 的意思,而‘no_root_squash’呢,则是允许让使用者具备 root 的权限,在某
些特别情况下,例如使用 bootp 登录的无磁碟工作站,是相当好用的。因为预设情况下 NFS 会
将 root 的身份 squash 为权限最低的 anonymous (nobody) 身份,而其他身份则以 client 端机
器上当时拥有的 User ID 和 Group ID (指号码的值)来建立档案。注意哦,在进权限判断的时候,
不是以 UserName 来作为身份依据哦,UID 和 GID 的号码最後必须对应到 server 端的
/etc/passwd ,而非 client 那边的。
第二行,我将 /usr/src 这个目录分享给以 siyongc.domain 这个 domain 做结尾或是以
192.168.100 开头的任何机器,而无需使用 secure port (insecure),但只具备唯读权限(ro)。这里,
您要留意 " * " 的使用,在一些旧版本的 NFS 您不能用在 IP 上。但是,我这里的测试却是可
行的。
第三行,我将 /var/ftp/pub/incoming 这个目录只分享给 192.168.0.22 这台机器,且具备了读和
写的权限(rw),但在 server 上写入的档案,必须换成 anonymous 身份进行。但是其後的设定
又将任何 anonymous 换成设定的 UID 和 GID (这里都是 ftp),这样的安排是要确定任何存取
都按指定身份进行。这个 incoming 目录预设是不存在的,日後在讨论到 FTP 服务设定时候会
提到,但您能够自行用 mkdir 建立,而且为 group 和 others 加上 +w 权限连同 sgid 和 sticky
bit (3777)。
重启源服务器端的nfs服务:
#/etc/init.d/nfsserver start
在客户端启动portmap服务:
#service portmapstart
在客户端mount远程文件夹:
#mount -t nfs 远程IP地址:/data /data
本地两个目录间拷贝,目标文件可以使用原文件名,也可改为新名:
# cp /home/file1 /home2/file2
拷贝到远程节点,同样文件名可修改,如果拷贝的目录下包含文件,则加-r
# scp [-r] /path/file1 目标机器IP:/path/file3
修改文件名:
# mv 旧文件名 新文件名
剪切到不同目录并改名
# mv /path1/file1 /path2/file2
查看目录中有哪些内容:
# ll
按时间排序目录中的内容:
# ll –t
查看一个指定的文件,如/oracle/abc.ora
# ll /oracle/abc.ora
修改文件的权限:
# chown –R –h oracle:oinstall /abc
其中-R表示将目录下的所有子对象也修改,-h表示强制修改
修改文件宿主:
# chmod +x /abc.sh
为abc.sh脚本增加可执行权限
查找文件,如abc.ora:
# cd 要查找的目录,如果是整个环境中查找则输入/
# find . –name “abc.ora”
在/abc目录下查找名称中包含abc的文件:
# find /abc –name “*abc*”
如果要在根目录下查找,则用:
# find . –name
在目录/abc下建立一个指向到/wch/a.txt文件的名称为S100ts的连接方法如下:
# ln –s /wch/a.txt /abc/S100ts
可以使用vi工具编辑文件。编辑完后,执行Esc->:wq表示保存退出,执行:q表示不保存退出,执行:x表示强制保存只读文本并退出。
如果从本地文本中拷贝一段内容黏贴到linux的文本中,那么每行前面会增加越来越多的空格。可以在黏贴前先执行esc->:->setnoai,这样可以与本地文本的格式保持一致。
统计一个目录下符合条件(文件名中含log字符串)的文件个数:
# ls -al *log* | wc -l
当前目录下所有文件的大小:
# du -k
文件/tmp/wch的大小:
# du -k /tmp/wch
查找大小超过多少K的文件及目录:
# du -k | awk'{if($1>2097152) print $0}'
这个命令的意义是找出当前目录下所有大于2097152K的文件
查看oracle用户的进程打开文件句柄的个数:
# lsof -n |grep oracle |awk '{print$2}'|sort|uniq -c |sort -nr |more
执行以下命令查看内存使用情况:
# free –m
这里-m表示以M为单位统计。返回结果例如:
# free -m total used free shared buffers cached Mem: 8114 7556 558 0 70 680 -/+ buffers/cache: 6804 1309 Swap: 8197 2650 5546 |
其中Mem表示物理内存的统计信息,-/+ buffers/cache表示物理内存的缓存统计,Swap表示硬盘上交换分区的使用情况。
这里使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。
total1:表示物理内存总量。
used1:表示总计分配给缓存(包含buffers与cache)使用的数量,但其中可能部分缓存并未实际使用。
free1:未被分配的内存。
shared1:共享内存主要用于在UNIX环境下不同进程之间共享数据,是进程间通信的一种方法
buffers1:系统分配但未被使用的buffers数量。
cached1:系统分配但未被使用的cache数量。buffer与cache的区别见后面。
used2:实际使用的buffers与cache总量,也是实际使用的内存总量。
free2:未被使用的buffers与cache和未被分配的内存之和,这就是系统当前实际可用内存。
可以整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1
很多人误以为free1是实际的剩余内存,还在奇怪为什么Linux系统占用了如此大的内存,其实这是正常的。
buffer与cache 的区别
A buffer is something that has yet to be "written" todisk. A cache is something that has been "read" from the disk andstored for later use.
特别注意:
1. 使用TOP命令看到的mem使用情况与这里的第一行含义一致
top - 10:47:03 up 12 days, 20:08, 5 users, load average: 1.47, 1.21, 0.91 Tasks: 193 total, 1 running, 191 sleeping, 0 stopped, 1 zombie Cpu(s): 0.1% us, 0.1% sy, 0.0% ni, 99.8% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 8309236k total, 7743612k used, 565624k free, 72432k buffers Swap: 8393920k total, 2714368k used, 5679552k free, 702036k cached |
查看当前SWAP的命令:
# grep SwapTotal /proc/meminfo
扩大交换空间的步骤:
新建一个swap文件:
# dd if=/dev/zero of=/tmp/myswap bs=32k count=81920
格式化该文件:
# cd /tmp
# mkswap myswap
启动/关闭该文件:
# swapon /tmp/myswap
# swapoff /tmp/myswap
设置开机时自动启动swap文件:
在/etc/fstab文件总加入如下行数据:
/tmp/myswap swap swap defaults 0 0 |
进程运行期间会占用内存,可以通过以下命令看到这个值VSZ:
# ps -e -o flags,state,user,pid,ppid,pcpu,vsz,args|grep asm
这里VSZ表示virtual memory size of the process in KiB (1024-byte units)。它的单位是K。它所消耗的是虚拟内存,而非物理内存,因而与memory_target无关。它占用 /dev/shm的空间。
注意:在SUSE上,VSZ的单位应该是字节才对
要求/dev/shm的可用空间至少为实例memory_target的大小,否则实例启动时会报ORA-00845的错误。/dev/shm是linux 系统独有的临时(tmpfs)文件系统,是以内存为主要存储方式的文件系统,可以从/etc/fstab中mount。
检查共享内存:
# df -k/dev/shm/
扩大SHM的方法:
编辑文件/etc/fstab,加入以下行数据:
shm /dev/shm tmpfs size=8G 0 0 |
执行以下命令使修改马上生效:
# mount -oremount /dev/shm
如果以前shm并未mount,那么执行 # mount /dev/shm命令即可
查看进程使用的shm:
# pmap pid