SUSE Linux常用命令

1.1.1.  硬件管理

1.1.1.1. 基本配置

CPU个数查看:

# more /proc/cpuinfo

# top

内存大小检查:

#grep MemTotal /proc/meminfo

查看与修改主机名

# hostname

修改完毕后,系统提示重启小型机,然后请检查/etc/hosts文件是否正确,并修改Oracle监听程序配置文件中的机器名。

1.1.1.2. 资源使用情况

查看CPU使用率:

# top

查看IO、CPU的使用情况:

# sar 2 10

1.1.2.  操作系统与补丁

1.1.2.1. 系统版本

查看操作系统版本:

# SPident

# cat /etc/SuSE-release

查看内核版本:

# uname -r

1.1.2.2. 补丁与package

检查是否安装了package:

# rpm -q package_name

1.1.2.3. 系统运行级别

系统运行级别有如下几个:

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

1.1.1.1. 启动操作系统

查看系统启动历史:

# 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前面。

1.1.1.1. 关闭操作系统

命令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,即重新启动。

1.1.1.1. 系统进程

系统进程查看命令:

# 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,则操作系统会重启。

1.1.1.1. 系统日志

系统日志位置:/var/log/messages

1.1.1.   内核参数与系统环境变量

1.1.1.1. 内核参数

修改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

1.1.1.1. 对用户的限制

为了提升用户运行程序的性能,要对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来设置。

1.1.1.  文件与目录管理

1.1.1.1. 挂载远程目录

在源服务器端启动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)。 

1.1.1.  文件与目录管理

1.1.1.1. 挂载远程目录

在源服务器端启动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

1.1.1.1. 拷贝与剪切

本地两个目录间拷贝,目标文件可以使用原文件名,也可改为新名:

# cp /home/file1 /home2/file2

拷贝到远程节点,同样文件名可修改,如果拷贝的目录下包含文件,则加-r

# scp [-r] /path/file1 目标机器IP:/path/file3

修改文件名:

# mv 旧文件名 新文件名

剪切到不同目录并改名

# mv /path1/file1 /path2/file2

1.1.1.2. 查看文件或目录

查看目录中有哪些内容:

# ll

按时间排序目录中的内容:

# ll –t

查看一个指定的文件,如/oracle/abc.ora

# ll /oracle/abc.ora

1.1.1.3. 文件宿主及权限

修改文件的权限:

# chown –R –h oracle:oinstall /abc

其中-R表示将目录下的所有子对象也修改,-h表示强制修改

修改文件宿主:

# chmod +x /abc.sh

为abc.sh脚本增加可执行权限

1.1.1.1. 查找文件

查找文件,如abc.ora:

# cd 要查找的目录,如果是整个环境中查找则输入/

# find . –name “abc.ora”

在/abc目录下查找名称中包含abc的文件:

# find /abc –name “*abc*”

如果要在根目录下查找,则用:

# find . –name

 

1.1.1.2. 创建链接

在目录/abc下建立一个指向到/wch/a.txt文件的名称为S100ts的连接方法如下:

# ln –s /wch/a.txt /abc/S100ts

 

1.1.1.3. 文本编辑工具

可以使用vi工具编辑文件。编辑完后,执行Esc->:wq表示保存退出,执行:q表示不保存退出,执行:x表示强制保存只读文本并退出。

如果从本地文本中拷贝一段内容黏贴到linux的文本中,那么每行前面会增加越来越多的空格。可以在黏贴前先执行esc->:->setnoai,这样可以与本地文本的格式保持一致。

1.1.1.4. 文本个数及大小

统计一个目录下符合条件(文件名中含log字符串)的文件个数:

# ls -al *log* | wc -l

 

当前目录下所有文件的大小:

# du -k

文件/tmp/wch的大小:

# du -k /tmp/wch

 

查找大小超过多少K的文件及目录:

# du -k | awk'{if($1>2097152) print $0}'

这个命令的意义是找出当前目录下所有大于2097152K的文件

 

1.1.1.5. 文本句柄

查看oracle用户的进程打开文件句柄的个数:

# lsof -n |grep oracle |awk '{print$2}'|sort|uniq -c |sort -nr |more

1.1.1.  内存及SWAP管理

1.1.1.1. 内存使用情况查看

执行以下命令查看内存使用情况:

# 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

1.1.1.1. SWAP交换区

查看当前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

1.1.1.1. 进程占用的虚拟内存

进程运行期间会占用内存,可以通过以下命令看到这个值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的单位应该是字节才对

 

1.1.1.2. 共享内存shm管理

要求/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

 

 

 

 

 


你可能感兴趣的:(linux)