一、系统常用的配置文件位置、和语法格式
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
活跃的内存大小
具体含义见:概念补充(当使用-a选项时显示)
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。
free
未被分配的物理内存大小。
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.差异备份