天天看点

linux基础运维

一、系统常用的配置文件位置、和语法格式

1.常用的网络配置文件

/etc/sysconfig/network     网络设置(主机名也在这个文件配置 hostname=localhost.localdomain)

network=yes/no 表示网络是否被配置;

hostname=hostname hostname 表示服务器的主机名;

gateway=gw-ip gw-ip 表示网络网关的ip 地址;

forward_ipv4=yes/no 是否开启ip 转发功能;

/etc/hosts ip 地址和主机名之间的映射还,包括主机名的别名ip

/etc/services 服务名和端口号之间的映射

/etc/host.conf 文件指定如何解析主机名

/etc/nsswitch.conf 用于管理系统中多个配置文件查找的顺序

/etc/resolv.conf 主机的域名搜索顺序和dns服务器的地址

/etc/xinetd.conf inetd 中每一行指定的服务扩展为一个/etc/xinetd.d/下的配置文件

/etc/sysconfig/network-scripts/ifcfg-ehtn  网卡配置信息

参考:http://www.linuxdiyf.com/viewarticle.php?id=302012

2.环境变量和启动程序配置

/etc/profile (用户还有自己的环境变量~/.bash_profile)

3./etc/rc.local 开机启动自动运行

4./etc/yum.repos.d/centos-base.repo yum源的配置信息

5./etc/sysconfig/iptables 防火墙的配置文件

6./etc/ssh/sshd_config  ssh远程连接配置文件

7./etc/passwd  /etc/group /etc/shadow  用户名密码有关配置文件

8./etc/cron* 定时任务有关的配置文件

9./var/log/*    系统日志文件

二、常用的系统指令

1.uname -r 内核版本查看

2.hostname 主机名查看

3.date 系统时间 hwclock硬件时钟

4.df -h 硬盘和分区

5.du -sh 查看目录占用空间

6.cat /root/install.log 查看安装的软件包

7.rpm -qa 查看rpm包安装的软件

8.yum list installed yum查询的安装软件包

9.ifconfig ip查看(ip指令是个新命令)

10.fdisk -l:检查磁盘分区

11.mount umount 挂载与取消挂载

12.rpm yum centos软件包安装

13.tar  打包压缩:http://blog.csdn.net/sanshiqiduer/article/details/1913792

14.scp 远程拷贝

15.ps aux | ps -ef  查看进程

16.reboot shutdown -h now init 0 关机重启 慎用!!!

17.lspci -tv     # 列出所有pci设备

18.route -n      # 查看路由表

19.w who whoami  查看活动用户  id 指定用户信息

20. last         # 查看用户登录日志

21.crontab -l    # 查看当前用户的计划任务服务

22.chkconfig --list       # 列出所有系统服务

23.locale -a查看系统支持的语言 lang="zh_cn.utf-8"修改字符集

24. | 管道  > >> 和 < 重定向

25.find  which 查找文件

26.ssh 远程登录

27. useradd deluser groupadd  passwd gpasswd usermod

28. ulimit -a 系统参数

29.性能分析工具:vmstat sar iostat free uptime netstat top iotop iftop 

vmstat命令:  用来获得有关进程、虚拟内存、页面交换空间及 cpu活动的信息

1.用法

vmstat [-a] [-n] [-s unit] [delay [ count]]

vmstat [-s] [-n] [-s unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-v]

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量 。

-m:显示slabinfo

-n:只在开始时显示一次各字段名称。

-s:显示内存相关统计信息及多种系统活动数量。

delay:刷新时间间隔。如果不指定,只显示一条结果。

count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息

-s:使用指定单位显示。参数有 k 、k 、m 、m ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为k(1024 bytes)

-v:显示vmstat版本信息。

2.字段含义说明:

procs(进程)

r

等待执行的任务数

展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

b

等待io的进程数量

memory(内存)

swpd

正在使用虚拟的内存大小,单位k

free

空闲内存大小

buff

已用的buff大小,对块设备的读写进行缓冲

cache

已用的cache大小,文件系统的cache

inact

非活跃内存大小,即被标明可回收的内存,区别于free和active

具体含义见:概念补充(当使用-a选项时显示)

active

活跃的内存大小

swap

si

每秒从交换区写入内存的大小(单位:kb/s)

so

每秒从内存写到交换区的大小

io

bi

每秒读取的块数(读磁盘)

现在的linux版本块的大小为1024bytes

bo

每秒写入的块数(写磁盘)

system

in

每秒中断数,包括时钟中断

这两个值越大,会看到由内核消耗的cpu时间会越多

cs

每秒上下文切换数

cpu(以百分比表示)

us

用户进程执行消耗cpu时间(user time) us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了

sy

系统进程消耗cpu时间(system time)

sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。

id

空闲时间(包括io等待时间)

wa

等待io时间

wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

sar(system activity reporter系统活动情况报告)http://my.oschina.net/caiyuan/blog/119012

sar命令常用格式

sar [options]  [-o file] t [n]

t为采样间隔,n为采样次数,默认值是1;

-o file表示将命令结果以二进制格式存放在文件中,file 是文件名

options:

-a:所有报告的总和

-u:输出cpu使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示i/o和传送速率的统计信息

-c:输出进程统计信息,每秒创建的进程数

-r:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

-n: 网络统计

man sar / sar -h

iostat:iostat主要用于监控系统设备的io负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。

usage: iostat [ options ] [ <interval> [ <count> ] ]

-c 仅显示cpu统计信息.与-d选项互斥.

-d 仅显示磁盘统计信息.与-c选项互斥.

-k 以k为单位显示每秒的磁盘请求数,默认单位块.

-p device | all

 与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如:

# iostat -p hda

 或显示所有设备

# iostat -p all

-t    在输出数据时,打印搜集数据的时间.

-v    打印版本号和帮助信息.

-x    输出扩展信息.

iostat输 出项目说明

blk_read

 读入块的当总数. blk_wrtn 写入块的总数.

kb_read/s

 每秒从驱动器读入的数据量,单位为k.

kb_wrtn/s

 每秒向驱动器写入的数据量,单位为k.

kb_read

 读入的数据总量,单位为k.

kb_wrtn

 写入的数据总量,单位为k.

rrqm/s

 将读入请求合并后,每秒发送到设备的读入请求数.

wrqm/s

 将写入请求合并后,每秒发送到设备的写入请求数.

r/s

 每秒发送到设备的读入请求数.

w/s

 每秒发送到设备的写入请求数.

rsec/s

 每秒从设备读入的扇区数.

wsec/s

 每秒向设备写入的扇区数.

        rkb/s

 每秒从设备读入的数据量,单位为k.

wkb/s

 每秒向设备写入的数据量,单位为k.

        avgrq-sz

 发送到设备的请求的平均大小,单位是扇区.

avgqu-sz

 发送到设备的请求的平均队列长度.

await

 i/o请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.

svctm

 发送到设备的i/o请求的平均执行时间.单位是毫秒.

%util

 在i/o请求发送到设备期间,占用cpu时间的百分比.用于显示设备的带宽利用率.

 当这个值接近100%时,表示设备带宽已经占满.

free:查看系统内存使用情况(cat /proc/meminfo)

从操作系统的角度来看内存分配:   

total

总物理内存大小。

used

已分配的大小,注意,对操作系统来说任何被使用的内存都是used。

未被分配的物理内存大小。

shared

共享内存大小,主要用于进程间通信,例如oracle会使用上gb的共享内存。

buffers

主要用于块设备数据缓冲,例如记录文件系统的metadata(目录、权限等等信息)。

cached

主要用于文件内容缓冲

从应用程序的角度来看内存分配:

- buffers/cached

= used(第一行) - buffers - cached

实际上是程序当前"真实使用"的"物理内存"的大小。

+ buffers/cached

= buffers + cached

两个加起来可以理解为"暂时借给"系统作为"缓冲区"使用的内存大小。

[root@localhost cron]# uptime  显示系统的负载:

11:42:22 up 13 days,  2:30,  1 user,  load average: 0.02, 0.05, 0.03

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (interface statistics),masquerade 连接,多播成员 (multicast memberships) 等等  

http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html

常见参数

-a (all)显示所有选项,默认不显示listen相关

-t (tcp)仅显示tcp相关选项

-u (udp)仅显示udp相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-l 仅列出有在 listen (监听) 的服務状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如uid等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该netstat命令。

提示:listen和listening的状态只有用-a或者-l才能看到

netstat的输出结果可以分为两个部分:

一个是active internet connections,称为有源tcp连接,其中"recv-q"和"send-q"指%0a的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在

队列中堆积。这种情况只能在非常少的情况见到。

另一个是active unix domain sockets,称为有源unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

proto显示连接使用的协议,refcnt表示连接到本套接口上的进程号,types显示套接口的类型,state显示套接口当前的状态,path表示连接到套接口的其它进程使用的路径名。

top命令能够实时显示系统中各个进程的资源占用状况

[root@localhost cron]# top

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% si

mem: 191272k total, 173656k used, 17616k free, 22052k buffers

swap: 192772k total, 0k used, 192772k free, 123988k cached

pid user pr ni virt res shr s %cpu %mem time+ command

1379 root 16 0 7976 2456 1980 s 0.7 1.3 0:11.03 sshd

14704 root 16 0 2128 980 796 r 0.7 0.5 0:02.72 top

1 root 16 0 1992 632 544 s 0.0 0.3 0:00.90 init

2 root 34 19 0 0 0 s 0.0 0.0 0:00.00 ksoftirqd/0

3 root rt 0 0 0 0 s 0.0 0.0 0:00.00 watchdog/0

统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48 当前时间

up 1:22 系统运行时间,格式为时:分

1 user 当前登录用户数

load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和cpu的信息。当有多个cpu时,这些内容可能会超过两行。内容如下:

tasks: 29 total 进程总数

1 running 正在运行的进程数

28 sleeping 睡眠的进程数

0 stopped 停止的进程数

0 zombie 僵尸进程数

cpu(s): 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% si

最后两行为内存信息。内容如下:

mem: 191272k total 物理内存总量

173656k used 使用的物理内存总量

17616k free 空闲内存总量

22052k buffers 用作内核缓存的内存量

swap: 192772k total 交换区总量

0k used 使用的交换区总量

192772k free 空闲交换区总量

123988k cached 缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

该数值即为这些内容已存在于内存中的交换区的大小。

相应的内存再次被换出时可不必再对交换区写入。

进程信息区

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号 列名 含义

a pid 进程id

b ppid 父进程id

c ruser real user name

d uid 进程所有者的用户id

e user 进程所有者的用户名

f group 进程所有者的组名

g tty 启动进程的终端名。不是从终端启动的进程则显示为 ?

h pr 优先级

i ni nice值。负值表示高优先级,正值表示低优先级

j p 最后使用的cpu,仅在多cpu环境下有意义

k %cpu 上次更新到现在的cpu时间占用百分比

l time 进程使用的cpu时间总计,单位秒

m time+ 进程使用的cpu时间总计,单位1/100秒

n %mem 进程使用的物理内存百分比

o virt 进程使用的虚拟内存总量,单位kb。virt=swap+res

p swap 进程使用的虚拟内存中,被换出的大小,单位kb。

q res 进程使用的、未被换出的物理内存大小,单位kb。res=code+data

r code 可执行代码占用的物理内存大小,单位kb

s data 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

t shr 共享内存大小,单位kb

u nflt 页面错误次数

v ndrt 最后一次写入到现在,被修改过的页面数。

w s 进程状态。

d=不可中断的睡眠状态

r=运行

s=睡眠

t=跟踪/停止

z=僵尸进程

x command 命令名/命令行

y wchan 若该进程在睡眠,则显示睡眠中的系统函数名

z flags 任务标志,参考 sched.h

iotop是一个用来监视磁盘i/o使用状况的 top 类工具,可监测到哪一个程序使用的磁盘io的信息 

安装:yum -y install iotop  http://www.jb51.net/linuxjishu/247796.html

--version #显示版本号

-h, --help #显示帮助信息

-o, --only #显示进程或者线程实际上正在做的i/o,而不是全部的,可以随时切换按o

-b, --batch #运行在非交互式的模式

-n num, --iter=num #在非交互式模式下,设置显示的次数,

-d sec, --delay=sec #设置显示的间隔秒数,支持非整数值

-p pid, --pid=pid #只显示指定pid的信息

-u user, --user=user #显示指定的用户的进程的信息

-p, --processes #只显示进程,一般为显示所有的线程

-a, --accumulated #显示从iotop启动后每个线程完成了的io总数

-k, --kilobytes #以千字节显示

-t, --time #在每一行前添加一个当前的时间

ifstat工具是个网络接口监测工具,比较简单看网络流量

iftop是一款实时流量监控工具,监控tcp/ip连接等,缺点就是无报表功能。必须以root身份才能运行。

(http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858923.html)

30.linux网络工具

ping :测试网络

scp:远程拷贝

telnet:远程登录,测试端口

ftp:sftp 文件传输

traceroute: 显示到网络主机的路径

nslookup:命令的功能是查询一台机器的ip地址和其对应的域名

route:命令是用来查看和设置linux系统的路由信息

wget: 

tcpdump:

curl:

http://www.cnblogs.com/hnrainll/archive/2011/10/12/2208436.html

三、软件包的安装

1.源码包安装:tar.gz   ./conigure -help 查看安装信息

2.二进制安装包:tar.gz   解压直接使用

3.rpm安装包:需要依赖关系 yum管理自动安装依赖包

四、文件系统

在linux系统中有一个重要的概念:一切都是文件。

下linux下一些主要目录的功能

/bin:存放二进制可执行文件(例如一些shell命令)。

/dev:存放设备文件。

/etc:存放系统的管理和配置文件(这个目录很牛逼)

/etc/rc.d:启动配置文件和脚本

/root:root用户的主目录。

/home:存放用户主目录,除了root用户的主目录外,当创建一个用户是会在这个目录下创建相应用户的主目录。

/lib:存放一些标准程序设计库(动态连接共享库),类似于.dll。

/sbib:系统管理命令,存放系统管理员使用的管理命令。

/tmp:默认的临时文件存放地点。

/mnt:用户可以在这个目录下创建临时挂载点,例如关在u盘文件系统。

/lost+found:存放系统非正常关机而产生的“无家可归”的文件。

/proc:虚拟的目录,是系统内存的映射,可直接访问这个目录来获取系统信息。

/var:一般用来存放时常变化的文件,例如日志文件,在学习驱动的时候通常查看驱动程序是否成功安装或卸载是,用dmesg查看的就是/var/log/messages文件。还有就是我

们通过apt-get在网上通过源安装的程序的安装包一般会在/var/cache/apt/archives下。

/usr:它是linux系统下最庞大的目录,存放一般的应用程序和文件。

/usr/bin:众多的应用程序

/usr/sbin:超级用户的一些管理程序。

/usr/include linux下开发和编译应用程序所需要的头文件(在学习c和高级编程中用的很多头文件都在这里面)

/usr/lib:常用的动态链接库和软件包的配置文件。

/usr/man 帮助文档

/usr/src:源代码,例如/usr/src/linux存放linux源代码

/usr/local/bin:本地增加的命令。

/usr/local/lib:本地增加的库。

[root@localhost cron]# ls -l

-rw------- 1 root root 44 oct 28 16:02 root

chomd  更改文件权限 

chown  更改文件所属组和用户

chattr/lsattr  lsattr命令查看文件的隐藏属性,而用chattr来修改为正常值

chattr [+-=][asacdistu]

最为重要的是属 +i 这个属性

五、定时任务

1.编辑定时任务:crontab -e 

-l 查看当前用户定时任务 

-r : 删除目前的时程表

/var/spool/cron 用户定时任务文件存放目录

基本格式 : 

*  *  *  *  *  command 

分  时 日   月  周  命令

2./etc/crontab文件

这个地方也可以设置定时任务 

/etc/cron/*  有日 周 月定时任务脚本

六、备份

1.完全备份

2.增量备份

3.差异备份

继续阅读