终于有空整理多年来自己在Unix/Linux方面技术,今天发一个Linux基础操作文档,是上一篇Linux安装指导手册的下半部分,同样是给公司培训的文档,顺便也发到博客上来,分享给大家,以回报以前的各位老师及前辈的指导与提携,我也会和你们一样,一直分享自己的所有,实现你的理想,我们大家共同的理想。
免责声明:此文档仅供参考,请依据实际环境操作,作者及此文档不对任何后果负责。
一、说明
1、操作系统:CentOS-5.6-x86_64
2、是上一篇 Linux安装指导手册 的下半部分
二、Linux基础操作
1、查看系统版本
[root@ctcdb01 ~]# lsb_release -a
LSB Version:
:core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:
CentOS release 5.6 (Final)
Release:
5.6
Codename:
Final
查看CPU的型号
[root@ctcdb01 ~]# less /proc/cpuinfo | grep "model name"
model name
: Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz
model name
: Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz
查看CPU的更详细信息
[root@ctcdb01 ~]# more /proc/cpuinfo
processor
: 0
vendor_id
: GenuineIntel
model name : Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz
stepping
: 5
cpu MHz
: 2926.059
cache size : 4096 KB
physical id : 0
flags
: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc nonstop_tsc arat pni ssse3 cx16 sse4_1 sse4_2 popcnt lahf_lm
processor 会从0开始记数,继续下去多个cpu
判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU
flags 如果有 ht 说明支持超线程技术
(1)、查看系统语言
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
# cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG="en_US"
#xwindow会显示英文界面。
LANG="zh_CN.GB18030"
#xwindow会显示中文界面。
[root@ctcdb01 ~]# ifconfig
eth0
Link encap:Ethernet HWaddr 00:0C:29:BD:BE:80
inet addr:172.18.2.60 Bcast:172.18.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3903 errors:0 dropped:0 overruns:0 frame:0
TX packets:1260 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:374577 (365.7 KiB) TX bytes:1126921 (1.0 MiB)
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1326 errors:0 dropped:0 overruns:0 frame:0
TX packets:1326 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2389027 (2.2 MiB) TX bytes:2389027 (2.2 MiB)
# /etc/sysconfig/network-scripts/ifcfg-eth0
#修改IP地址
# service network restart
#重启网络服务
[root@ctcdb01 ~]# hostname
ctcdb01
修改以下2个文件。
# cat /etc/sysconfig/network
#修改HOSTNAME一行为HOSTNAME=想要的计算机名
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=ctcdb01
GATEWAY=172.18.2.1
# cat /etc/hosts
127.0.0.1
localhost.localdomain localhost
#这是127.0.0.1特殊IP,” localhost.localdomain localhost”前的计算机名称取消掉
172.18.2.60
ctcdb01 #加入这行
6、修改DNS
修改/etc/resolv.conf文件相应的IP即可
[root@ctcdb01 ~]# cat /etc/resolv.conf
nameserver 172.18.2.124
nameserver 202.96.209.5
7、修改网关
修改/etc/sysconfig/network文件相应的IP即可
[root@ctcdb01 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=ctcdb01
GATEWAY=172.18.2.1
8、查看及监控硬盘分区使用率
[root@ctcdb01 ~]# fdisk -l
Disk
/dev/sda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1
* 1 13 104391 83 Linux
/dev/sda2
14 5221 41833260 8e Linux LVM
看到此系统的硬盘信息如下:
1. 一个容量为40G 的SCSI硬盘,42.9GB为大概描述,一般在此看到的硬盘容量会缩小,即硬盘的制造厂商为了方便,硬是把容量换算单位1M=1024K改为1M=1000M
2. 这块硬盘分为2个区
/dev/sda1为Linux分区,挂载点为/boot,可作用df –h命令查看
/dev/sda2为Linux LVM方式管理
[root@ctcdb01 ~]# df -h
文件系统
容量 已用 可用 已用% 挂载点
/dev/mapper/VG00-LV00
20G 3.1G 16G 17% /
/dev/mapper/VG00-LV02
18G 173M 17G 1% /home
/dev/sda1
99M 13M 82M 14% /boot
tmpfs
501M 0 501M 0% /dev/shm
/dev/sda2分区创建了一个叫VG00的卷组,又在VG00上划分了3个LV: LV00~03
LV01是交换分区swap,系统默认开机启动挂载,可查看/etc/fstab文件
[root@ctcdb01 ~]# cat /etc/fstab
/dev/VG00/LV00 / ext3 defaults 1 1
/dev/VG00/LV02 /home ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs
/dev/shm tmpfs defaults 0 0
devpts
/dev/pts devpts gid=5,mode=620 0 0
sysfs
/sys sysfs defaults 0 0
proc
/proc proc defaults 0 0
/dev/VG00/LV01 swap swap defaults 0 0
9、查看内存及swap
$ grep MemTotal /proc/meminfo
MemTotal:
1047188 kB
$ grep SwapTotal /proc/meminfo
SwapTotal:
1572856 kB
在Linux 下查看内存我们一般用free 命令,free –m以MB显示,可读性更好
[
[root@ctcdb01 ~]# free -m
total used free shared buffers cached
Mem:
1001 435 566 0 27 294
-/+ buffers/cache:
112 889
Swap:
1535 0 1535
10、使用Top命令监控系统负载
[root@ctcdb01 ~]# top
#前5行的统计信息如下:
top - 01:06:48 up 1:22, 1 user,
load average: 0.06, 0.60, 0.48
Tasks: 29 total,
1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s):
0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% st
Mem:
1025944k total, 444872k used, 581072k free, 27832k buffers
Swap: 1572856k total,
0k used, 1572856k free, 301976k cached
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下: 01:06:48 当前时间 ;up 1:22 系统运行时间,格式为时:分;1 user 当前登录用户数;load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二是进程信息,Tasks: 29 total 进程总数;1 running 正在运行的进程数;28 sleeping 睡眠的进程数;0 stopped 停止的进程数;0 zombie 僵尸进程数。
第三行是CPU的信息,0.3% us 用户空间占用CPU百分比;1.0% sy 内核空间占用CPU百分比;0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比;98.7% id 空闲CPU百分比;0.0% wa 等待输入输出的CPU时间百分比;0.0% hi ;0.0% st ;
最后两行为内存信息。
Mem
: 1025944k total 物理内存总量;444872k used 使用的物理内存总量;581072k free 空闲内存总量;27832k buffers 用作内核缓存的内存量;
Swap
: 1572856k total 交换区总量;0k used 使用的交换区总量;1572856k free 空闲交换区总量;301976k cached 缓冲的交换区总量;
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
11、使用iostat查看硬盘I/O读写负载
[root@ctcdb01 ~]# which iostat
#如果没有iostat,要 yum install sysstat
/usr/bin/iostat
[root@ctcdb01 ~]# iostat -x 1 2
#每一秒刷新一次,共执行2次
Linux 2.6.18-238.el5 (ctcdb01) 2011
年
07
月
26
日
avg-cpu: %user
%nice %system %iowait %steal %idle
0.10 0.00 0.22 0.57 0.00 99.11
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 4.32 1.67 2.96 1.04 246.80 21.69 67.01 0.16 39.82 7.14 2.86
sda1 0.32 0.00 0.02 0.00 0.70 0.00 27.15 0.00 7.39 5.91 0.02
sda2 3.99 1.67 2.93 1.04 246.00 21.69 67.34 0.16 40.09 7.17 2.85
dm-0 0.00 0.00 6.70 2.71 244.22 21.66 28.25 0.79 84.22 3.00 2.83
dm-1 0.00 0.00 0.15 0.00 1.20 0.03 7.99 0.00 10.70 1.24 0.02
dm-2 0.00 0.00 0.05 0.00 0.38 0.00 8.00 0.00 5.82 0.52 0.00
hdc 0.00 0.00 0.00 0.00 0.05 0.00 16.89 0.00 7.11 6.22 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
hdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。idle小于70% IO压力就较大了,一般读取速度有较多的wait。
[root@ctcdb01 ~]# vmstat 2
#
每
2
秒输出一条结果
procs -----------memory------------------ -------swap---- ---io----------- ----system---- -------cpu-------
r b
swpd free buff cache si so bi bo in cs us sy id wa st
0 0
0 517096 29988 355984 0 0 28 2 208 16 0 0 99 0 0
0 0
0 517096 29988 355984 0 0 0 0 820 49 0 0 100 0 0
0 0
0 517096 29988 355984 0 0 0 0 841 50 0 0 100 0 0
0 0
0 517096 29996 355976 0 0 0 14 830 57 0 0 100 0 0
Procs(进程): r: 运行队列中进程数量 b: 等待IO的进程数量
Memory(内存): swpd: 使用虚拟内存大小 free: 可用内存大小
buff: 用作缓冲的内存大小 cache: 用作缓存的内存大小
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数 bo: 每秒写入的块数
系统: in: 每秒中断数,包括时钟中断。 cs: 每秒上下文切换数。
CPU(以百分比表示):
us: 用户进程执行时间(user time) sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间) wa: 等待IO时间
[root@ctcdb01 ~]# vmstat -a 2
#显示活跃和非活跃内存
procs -----------memory----------------- -----swap----- ---------io------ ----system-- --------cpu--------
r b
swpd free inact active si so bi bo in cs us sy id wa st
3 0
0 487020 303296 174940 0 0 26 3 208 22 0 0 99 1 0
1 0
0 485976 303304 174864 0 0 244 0 856 2220 9 8 73 9 0
1 0
0 486004 303292 175352 0 0 188 212 834 1750 8 7 74 11 0
0 1
0 485396 303312 175644 0 0 208 0 863 2075 9 9 74 9 0
使用-a选项显示活跃和非活跃内存时,所显示的内容除增加inact和active外,其他显示内容与vmstat 2,输出相同
字段说明:
Memory(内存):
inact: 非活跃内存大小(当使用-a选项时显示)
active: 活跃的内存大小(当使用-a选项时显示)
13、重启及关机
在重启及关机之前,先查看一下是否还有别的用户在使用
[root@ctcdb01 ~]# who
oracle
pts/1 2011-07-26 14:15 (172.18.2.2)
oracle
pts/2 2011-07-26 15:18 (172.18.2.82)
root
pts/6 2011-07-26 12:35 (172.18.2.159)
请先通告用户,保存关闭程序,退出登录
重启
[root@ctcdb01 ~]# sync;sync;init 6
#
同步缓存内容到硬盘后,再重启或者关机
[root@ctcdb01 ~]# sync;sync;sync;reboot
#重新启动,与 shutdown -r now 几乎相同
[root@ctcdb01 ~]# shutdown -r
关机
[root@ctcdb01 ~]# sync;sync;init 0
#防止有未写入硬盘的数据丢失
[root@ctcdb01 ~]# poweroff
#关机
[root@ctcdb01 ~]# shutdown
[root@ctcdb01 ~]# halt
#halt就是调用shutdown -h
虽然目前的 shutdown/reboot/halt 等等指令均已经在关机前进行了 sync 这个工具的呼叫, 不过,多做几次总是比较放心点~呵呵~
三、初始配置
1、系统环境变量设置
因为CenterOS默认情况下没把PATH=$PATH:/sbin:/usr/sbin两个路径加入,导致之后使用系统的时候找不到一些系统命令。以root管理员权限登陆系统设置shell环境变量,编辑文件/etc/profile,在export PATH USER LOGNAME MAILHOSTNAME HISTSIZE INPUTRC前面一行添加:PATH=$PATH:/sbin:/usr/sbin,如下:
[root@ctcdb01 ~]# vi /etc/profile
PATH=$PATH:/sbin:/usr/sbin
[root@ctcdb01 ~]# . /etc/profile
#使用“点”或者“sourse” 命令使得环境变量生效
2.关闭图形界面,以节省资源
登录图形界面,检查正常后,关闭图形界面,以节省资源。
# runlevel
#查看当前的运行级别
N 5
# vi /etc/inittab
id:5:initdefault:
#把这行的5改成3,就可以关闭图形界面了
# reboot
#重启就可以了…
因为它启动缺省是图形界面,我们装的Oracle,将来是Server端,不需要图形界面;那么图形界面它有程序在
内存里面运行,占据了大量的内存,消耗了宝贵的CPU,所以一般都把它关掉…
(1)、修改端口,禁root入登录
远程SSH登录系统,编辑/etc/ssh/sshd_config文件,修改SSH端口为2225。
找到#Port 22一段,这里是标识默认使用22端口,修改为如下:
[root@ctcdb01 ~]# vi +/PermitRoot /etc/ssh/sshd_config
Port 22
Port 2225
#再添加SSH端口为2225。
PermitRootLogin no
#PermitRootLogin yes这行中的yes修改为no
重启SSH服务
[root@ctcdb01 ~]# service sshd restart
这样SSH端口将同时工作和22和2225上
检验修改端口是否成功
[root@ctcdb01 ~]# lsof -i:2225
COMMAND
PID USER FD TYPE DEVICE SIZE NODE NAME
sshd
22520 root 3u IPv4 59074 TCP *:2225 (LISTEN)
[root@ctcdb01 ~]#
[root@localhost ~]# netstat -an|grep 2225
tcp
0 0 :::2225 :::* LISTEN
tcp
0 52 ::ffff:172.18.1.160:2225 ::ffff:172.18.2.159:50257 ESTABLISHED
(2)、把新修改的端口添加到防火墙
由于开启了防火墙,修改SSH端口后,需要把新的SHH端口添加到iptables配置文件
[root@ctcdb01 ~]# cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
[root@ctcdb01 ~]# vi /etc/sysconfig/iptables
#加上以下行
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2225 -j ACCEPT
保存退出,可以复制SSH 22端口的行,只要修改端口为2225就可以了。
[root@ctcdb01 ~]# service iptables restart
清除防火墙规则:[确定]
把 chains 设置为 ACCEPT 策略:filter [确定]
正在卸载 Iiptables 模块:[确定]
应用 iptables 防火墙规则:[确定]
载入额外 iptables 模块:ip_conntrack_netbios_ns [确定]
# iptables –L –n
#查看防火墙规则
[root@ctcdb01 ~]# chkconfig --list sshd
#一般开启35级别就可以了
sshd
0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
现在请使用ssh工具连接2225端口,来测试是否成功。假如连接成功了,则再次编辑sshd_config的配置,将里边的Port22注释或删除,即可。
之所以先配置成两个端口,测试成功后再关闭一个端口,是为了方式在修改的过程中,万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试 。
以免发生连接不上必须派人去机房,导致问题更加复杂麻烦。
在安装好CentOS以后,需要设置Ftp服务文件,才能启动Ftp,进入/etc/xinetd.d ,编辑ftp服务的配置文件gssftp:
[root@ctcdb01 ~]# cp /etc/xinetd.d/gssftp /etc/xinetd.d/gssftp.bak
[root@ctcdb01 ~]# vi /etc/xinetd.d/gssftp
#将修改两项内容
1) server_args = -l –a 去掉-a 改为server_args = -l
2) disable=yes改为disable=no
3) 保存退出。
ftp 是挂在 xinetd 底下的,所以只要重新激活xinetd就能够将xinetd里头的设定重新读进来
[root@ctcdb01 ~]# service xinetd restart
停止 xinetd:[确定]
启动 xinetd:[确定]
[root@ctcdb01 ~]# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
[root@ctcdb01 ~]# iptables -I INPUT -p tcp --dport 21 -j ACCEPT
[root@ctcdb01 ~]# service iptables save
将当前规则保存到 /etc/sysconfig/iptables:[确定]
[root@ctcdb01 ~]# service iptables restart
[root@ctcdb01 home]#
/sbin/service iptables save该操作将执行iptables初始化脚本,该脚本会运行/sbin/iptables-save程序并更新当前的iptables配置文件/etc/sysconfig/iptables。而原来的配置文件将保存为iptables.save。
下次系统系统启动时,iptables初始化脚本将使用/sbin/iptables-restore命令重新读取/etc/sysconfig/iptables文件的内容。
检证ftp
:
C:\Users\kam>ftp 172.18.2.60
连接到 172.18.2.60。
220 ctcdb01 FTP server (Version 5.60) ready.
用户(172.18.2.60:(none)): root
331 Password required for root.
密码:
230 User root logged in.
ftp>
[root@ctcdb01 ~]# vi /etc/sysconfig/iptables
#加上以下行
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
保存退出,
[root@ctcdb01 ~]# service iptables restart
检证ftp
:
C:\Users\kam>ftp 172.18.2.60
[root@ctcdb01 ~]# whoami
#查看当前用户,是否有添加用户权限
root
(1)、添加用户
[root@ctcdb01 ~]# useradd test
[root@ctcdb01 ~]# passwd test
Changing password for user test.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
(2)查看当前用户信息
[root@ctcdb01 ~]# cat /etc/passwd|grep test
test:x:501:501::/home/test:/bin/bash
[root@ctcdb01 home]# ls
test tong
[root@ctcdb01 home]#
6、将程序或脚本设置为开机启动(以mysql为例)
方法1:在/etc/rc.d/rc.local文件末尾添加如下一行
/usr/local/mysql5/bin/mysql start
方法2:chkconfig --level 35 mysqld on
在mysql5/support-files目录将其中的mysql.server复制修改为/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --list mysqld
chkconfig --add mysqld
service mysqld start
chkconfig --level 35 mysqld on
linux os 将操作环境分为以下7个等级:
0:关机(请不要切换到此等级)
1:单人使用者模式的文字界面
2:多人使用者模式的文字界面,不具有网络档案系统(NFS)功能
3:多人使用者模式的文字界面,具有网络档案系统(NFS)功能(标准的运行级)
4:系统保留值
5:某些发行版的linux使用此等级进入x windows system
6:重新启动(千万不要把initdefault 设置为6 )
# ps –ef
#查看mysql有进程在运行就启动了
# service mysqld status
#查看到服务的状态
7、软件安装规范
1. 常用软件使用软件默认安装目录。
2. 一些需要设置单独的安装目录,环境变量的软件,如Oracle数据库,Mysql数据库,请安装在用户目录(/home/user)下,
比如:Oracle用户,安装Oracle数据库软件到/home/oracle目录下
tong用户,安装tong所安装的软件到/home/tong目录下
~完~