硬件基础 1、机箱:劣质的会引发共振 2、电源:保障服务器的电源供应 劣质电源影响其余硬件,重要服务器可采起双电源,双线路供电等。集群能够考虑不使用双电
3、主板 主板芯片组:负责管理cpu、内存总线扩展及外设的支持 BIOS芯片(cmos芯片):主板通电后各部件自检、设置、保存。一切正常后才能启动,记录列电脑最基本的信息,是软硬件打交道的最基础桥梁。常见的Award/AMI/Phoenix。 总线扩展槽:按功能可分为内存插槽、PCI/ISA插槽,AGP,PCI,PCIE显示卡插槽等 各种i/o接口:软硬盘、键盘、鼠标、打印机、USB、com1/com2等 4、CPU:负责运算和控制,数据的输入、存储、程序的运行、屏幕的显示、结果打印都在其的控制下完成. 5、风扇:cpu散热 6、硬盘:存储数据
接口类型:
IDE 并口 133Mbps
SATA 串口 6gbps
SCSI 并口 640Mbps
SAS 串口 6gbps
机械3.5寸IDE硬盘,缺点慢 机械SICI :sata sas(生产环境多用),2个兼容 ssd:用固态电子存储芯片阵列而制成的硬盘,接口:SATA口和PCI-E,寿命短,价格高 性能 ssd>sas>sata 常规企业使用sas (15000转/分),不对外的线下数据备份等使用sata 7200-10000转) 高并发,小数据量ssd 淘宝企业案列:服务器会把sata和ssa结合起来用,热点存储,程序动态调度。 磁盘阵列卡 冗余度 1 0 5 10
性能 0 10 5 1
成本 0 5 1 10 7、内存:临时存储器,负责数据中转 做用:cpu是可以直接访问的存储器,cpu从内存中读取操做指令和数据,又把运算和处理结果返回 内存 写入数据到内存,这个数据的内存空间称为buffer缓冲区
从内存读取数据,这个存数据的内存空间称为cache缓冲区
CPU (L1 L2 CACHE) ——> 内存——> ssd ——普通硬盘, 所以,优化网站、服务器的关键:尽可能使用内存php |
|||
IO各层次性能汇总html |
延时java |
|
带宽node |
CPU L1 L2 L3linux |
0.5-15nsios |
|
20-60GB/秒nginx |
内存web |
30-100nsredis |
|
2-12G/s算法 |
SSD |
10us-1ms |
|
50M-2G/s |
普通硬盘 |
5-20ms |
|
50-20M/s |
网卡 |
100us-1ms |
|
10M-10G/s |
根据业务类型优化I/O
一、解决浏览网页的压力,读压力,90%网站读取为主
写入硬盘,读入到内存,提供给客户访问
二、解决微信,微博等应用写压力更大的业务。
考虑写到内存,根据企业可以接受的数据丢失是程度,选择频率写到磁盘。
三、更高的要求,高并发大数据量
即写到内存,又不但愿数据丢失。(UPS电源、安装FLUSH电池 )
先把数据写内存,达到必定量,定时或定量写到磁盘,减小磁盘IO,最终仍是会加载到内存对外服务
提醒:这里提到的优化是指有多台机器组成的集群架构环境memcached/redis 软件实现上述功能
企业里的PC服务器常见品牌及型号
互联网公司服务器品牌:DELL\HP\IBM(百度)\浪潮\联想\航天联志
DELL服务器品牌:1U=4.45cm
2010之前: 1U1850,1950、2U2850,2950
2010-2013:1U R410 R610,2U R710
2014-2016:1u R420/430 ,R620/630 2u R720/R730
IBM品牌
2U 3750/2850/3950
HP品牌
DL380G7 2u
Linux特色
开放源代码,自由修改
与Unix兼容,具有几乎全部Unix优秀特性
可自由传播,无商业化版权制约
适合Intel等X86 CPU系列架构的计算机
POSIX表示可移植操做系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )
Unix 1969 贝尔实验室
分支BSD 1977
-SUN Solaris
-IBM AIX
-HP UNIX
Unix的5大特性
技术成熟,可靠性高
极强的可伸缩性,支持的CPU体系架构很是多
强大的网路功能
强大的数据库支持能力
强大的开发功能
1984 Richard Stallman 成立FSF 和 GNU项目(Emacs、gcc、bash、gawk)
1984 谭邦宁 教学用UNIX(Minix)
-1989 Ninix运行于X86 PC
1990 芬兰赫尔辛基大学 Linus Torvalds 学习Minix
1991 在Minux上编写各类驱动程序等操做系统内核组件
1991年末 公开Linux 0.02内核源码(kenel部分)
1993 Linux 1.0发行 转向GPL版权协议
1994 Linux的第一个商业发行版Slackware问世
2000后,日益成熟
GPL(general public license)
保证任何人有共享及修改自由软件的自由,任何人有取得、修改和从新发布自由软件的源代码的权利,可是都必须同时给出具体更改的源代码
Linux系统的核心组成原理
外围应用程序-->shell-->系统核心(kernel、lib、API)-->硬件
SSH(Secure Shell Protocol)远程链接原理(默认端口:22) 分为openssh-clients和openssh-server(包括openssl 加密,openssh提供服务) 经常使用工具:xshell secureCRT putty 不兼容的两个版本:SSHv1和 SSHv2
CRT 的另外一个功能:批量执行 一、打开多个标签 2、crt的view菜单下的Chat Windows,以后再在下方空白处右键选择send chat to session
SSH链接故障排查 1、ping (使用ICMP协议,默认64字节的包) a、iptables b、物理线路 2、服务是否正常,测试端口是否能连通 a、iptables b、ssh服务 c、端口是否被改 windows与linux互传软件 ftp/wincp/http/rz-sz #yum install lrzsz -y rz 回车 上传 -y 覆盖 sz 文件 回车下载 -y 覆盖 windows与linux文档转换 # yum install unix2dos 解决将公司服务器上脚本导到windows上打开串行的问题,这是由于windows和linux处理回车不一样 查看linux系统版本信息(linux多任务、多进程、多cpu、多用户) # cat /etc/redhat-release CentOS release 6.7 (Final) 版本 # uname -r 2.6.32-573.el6.x86_64 内核版本 # uname -m x86_64 32位仍是64位 # hostname 主机名 [root@test01 ~]# 用户名@主机名-家目录 [\u@\h \W]\$ [root@test01 ~]# echo $PS1 ==>能够经过/etc/profile调整PS1 衡量运维人员的3个基本标准 1、网站访问快,且24小时服务不间断 2、网站数据不丢失、即便机器故障,也能够随时恢复找回丢失的数据,且对业务不影响。 3、为公司省钱,提高工做效率 a、经过对网站架构优化调整节省服务器数量、带宽 b、使用云计算、开发自动化平台提升工做效率,节省人力成本
安装Linux系统后的调优及安全设置
关闭SELinux (配置文件/etc/selinux/config)。 #sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config 以后须要重启服务器 以下操做,临时生效 #getenforce ====>Enforcing #setenforce 0 #getenforce 0 ====>Permissive
关闭防火墙 #iptables -L -n 查看防火墙 #/etc/init.d/iptables stop #chkconfig iptables off 或 #iptables –F #/etc/init.d/iptables save
LINUX运行级别 配置文件/etc/inittab #runlevel 显示当前运行模式 #init 切换运行级别 Linux开机系统启动优化 新安装linux必需要保留的开机自启动任务有5个,具体以下 1、sshd 2、rsyslog centos6之前的名字为syslog,是操做系统提供的一种机制,系统的守护程序一般会使用,rsyslog将各类信息写入到系统日志文件中 3、network 4、crond 5、sysstat [sysstat]软件包集成的主要工具 [iostat] 提供CPU使用率及硬盘吞吐效率的数据 [mpstat] 提供与单个或多个处理器相关的数据 [sar] 负责收集、报告并存储系统活跃的信息 服务开启与关闭 使用#setup取消相关服务=#ntsysv 使用#chkconfig 查找3级别启动的服务 chkconfig --list | grep 3:on chkconfig --level 345 servicename off 批量关闭开机自启动服务 #for name in `chkconfig --list | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat"`; do chkconfig $name off; done
#chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat" | sed -r 's#(.*)#chkconfig \1 off#g' | bash
#chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat" | awk '{print "chkconfig " $1 " off"}' | bash Linux系统安全最小化原则 1、安装最小化 2、开机服务最小化 3、操做命令最小化 4、登录用户最小化 5、普通用户受权最小化 6、文件目录权限设置最小化,禁止随意建立更改 linux优化 1、创建普通帐号,能够删除无用的帐号,平时管理电脑只用普通用户,禁止用root管理员 50%事故来自内部 2、处理SELINUX 3、处理防火墙 4、精简开机自启动服务 sshd network crond rsyslog sysstat 5、linux最小化安全理念 更改ssh服务远程配置/etc/ssh/sshd_config(记得修改以前要备份) a、能够改变端口 (The remote system refused the connection.记得关防火墙,验证有影响) b、能够PermitRootLogin 能够改为no c、能够Use DNS能够改为no d、能够限制ListenAddress 绑定内网卡ip e、能够将GSSAPIAuthentcation改为no 改好后能够比较,用diff或vimdiff比较 重启服务后生效# /etc/init.d/sshd reload 平滑加载 PATH环境变量 临时修改: export PATH="/tmp:$PATH" 永久生效: 修改/etc/profile使用source使得马上生效 Linux 中文显示设置#locale 字符集就是一套文字符号及编码,目前Linux下的经常使用字符集:/etc/sysconfig/i18n #source生效 #sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.GB18030"#' /etc/sysconfig/i18n a、GBK:定长,双字节,不是国际标准 b、UTF8:非定常,1-4字节,普遍支持 字符集:设置LANG=zh_CN.UTF-8 并在ssh客户端设置一致 #echo $LANG 显示当前字符集
设置Linux服务器时间同步 [root@c64 test]# date -s "2016/04/25 01:31" Mon Apr 25 01:31:00 CST 2016 [root@c64 test]# hwclock #query and set the hardware clock (RTC) Fri 22 Apr 2016 02:01:31 AM CST -0.189935 seconds -w 将当前系统时间写入hw时间 在生产中5到10分钟作时间同步 同步互联网时间ntpdate time.nist.gov并写入crond [root@test85 ~]# ntpdate s1a.time.edu.cn 北京邮电大学ntp.stju.edu.cn 设置history历史记录 默认1000 相对来讲越少越安全 #history -c清空历史记录 #history -d 数字,清除那一行 #export HISTSIZE=10 临时控制当前历史记录回滚数 #export HISTFILESIZE=10 临时控制历史记录文件的命令数量变量cat ~/.bash_history 设置登录超时时间,配置文件/etc/profile (source生效) #export TMOUT=10 (可写入到profile) 调整服务器文件描述符(配置文件/etc/security/limits.conf,从新登录后生效) 文件描述符是一个简单的整数,用以标明每个被进程所打开的文件和socket [root@test ~]# ulimit -a 查看当前的一些shell资源限制信息 core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3805 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 3805 #这个值是由系统本身算出 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
文件描述符
#ulimit -n查看当前数量,调整方法以下 #ulimit -n 65535设置当前有效 (可放到rc.local) 修改配置文件从新登录后生效#echo '* - nofile 65535'>> /etc/security/limits.conf 调整最大用户进程数 [root@localhost home]# ulimit -u 3805 * soft nproc 1024==>3805 root soft nproc unlimited 调整内核参数文件/etc/sysctl.conf 修改后#sysctl -p生效 说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能须要略做调整 # vi /etc/sysctl.conf net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time =600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #如下参数是对centos5.4 iptables防火墙的优化,防火墙不开会有提示,能够忽略不理。 net.ipv4.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120 另外,在此优化过程当中可能会有报错: 1、5.8版本上 error: "net.ipv4.ip_conntrack_max"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_max"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait"is an unknown key 这错误多是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二 一是开启防火墙, 二是自动处理开载入的模块ip_conntrack #modprobe ip_conntrack #echo "modprobe ip_conntrack">> /etc/rc.local 2、6.4版本上 error: "net.nf_conntrack_max"isan unknown key error: "net.netfilter.nf_conntrack_max"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_established"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_time_wait"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_close_wait"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait"isan unknown key 这错误多是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二,
一是开启防火墙, 二是自动处理开载入的模块ip_conntrack #modprobe nf_conntrack #echo "modprobe nf_conntrack">> /etc/rc.local 3、6.4版本上 error: "net.bridge.bridge-nf-call-ip6tables"isan unknown key error: "net.bridge.bridge-nf-call-iptables"isan unknown key error: "net.bridge.bridge-nf-call-arptables"isan unknown key 这个错误是因为自动处理可载入的模块bridge没有自动载入,解决办法是自动处理开载入的模块 #modprobe bridge #echo "modprobe bridge">> /etc/rc.local (虚拟文件proc对应的东西,也能够直接修改proc内文件,可是重启失效) http://yangrong.blog.51cto.com/6945369/1321594 linux内核参数注释与优化 http://oldboy.blog.51cto.com/2561410/1336488 CentOS(5.86.4)linux生产环境若干优化实战 -------------------略 隐藏linux版本信息 # > /etc/issue #vi /etc/motd 新文件,登录时的提示信息 (也能够区别测试或生产环境) 锁定重要系统文件 (帐号口令相关文件 inittab等) #chattr +i 文件名进行锁定 (能够将命令配置文件移动到其余地方,防止黑客解除锁定) #lsattr #chattr +a 只能加东西不能删除 [root@c64 ~]# chattr +i /etc/passwd [root@c64 ~]# chattr +i /etc/inittab [root@c64 ~]# chattr +i /etc/group [root@c64 ~]# chattr +i /etc/shadow [root@c64 ~]# chattr +i /etc/gshadow 使用chattr命令后,为了安全咱们须要将其更名 [root@c64 ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名称 grub加密 #/sbin/grub-md5-crypt 设置密码 #password --md5 $1$.H4Sl$aw5mqwrqcm2XHDKKc4PH61 加到/etc/grub.conf中(/etc/grub.conf -> ../boot/grub/grub.conf)hiddenmenu与title中间 配置yum更新 配置文件/etc/yum.repos.d/CentOS-Base.repo 打开网站,找到对应版本,点击帮助得到命令 #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum安装软件,默认获取rpm包的途径从国外官方源,改为国内的源。 国内较快的两个站点:搜狐镜像站点、网易镜像站点 法1:本身配置好安装源配置文件,而后上传到linux。 法2:使用镜像站点配置好的yum安装源配置文件 [root@c64 ~]# cd /etc/yum.repos.d/
[root@c64 yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.bak
[root@c64 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
接下来执行以下命令,检测yum是否正常 [root@c64 yum.repos.d]# yum clean all #清空yum缓存 [root@c64 yum.repos.d]# yum makecache #创建yum缓存
而后使用以下命令将系统更新到最新 [root@c64 yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* #导入签名KEY到RPM [root@c64 yum.repos.d]# yum upgrade -y #更新系统内核到最新 yum -y update 升级全部包,改变软件设置和系统设置,系统版本内核都升级 yum -y upgrade升级全部包,不改变软件设置和系统设置,系统版本升级,内核不改变
epel源 epel源http://fedoraproject.org/wiki/EPEL http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm repoforge源 http://repoforge.org/use/ Linux基础优化安全重点 1、使用普通用户登陆 2、更改ssh端口,或者只监听内网 3、同步时间 4、配置yum 更新源,从国内更新 5、管理selinux及iptables 6、调整文件描述符 7、定时清理垃圾文件 8、精简开机服务 9、linux内核优化 10、更改字符集 11、文件锁定 12、清空issuse信息 13、清除多余的系统虚拟帐号 14、grub加密 15、禁ping #不建议,能够经过防火墙实现 16、升级漏洞软件 yum upgrade 根据须要
linux目录结构知识
linux基本文件结构:www.pathname.com/fhs # ls bin dev home lib64 media opt root selinux sys usr boot etc lib lost+found mnt proc sbin srv tmp var /dev/ 设备目录 /etc 系统配置及服务配置文件、启动命令的目录 /proc 显示内核及进程信息的虚拟文件系统 /tmp 临时文件目录,公共厕所,客厅。 /home 普通用户家目录,大臣的家。 /root 超级管理员的家目录,皇宫。 /var 变化的目录,通常是日志文件,cache的目录。 /usr 用户程序,及数据、帮助文件、二进制命令等的目录。 /bin和/sbin和/usr/sbin/ 用户命令的目录 http://yangrong.blog.51cto.com/6945369/1288072 目录总结
重要linux目录文件
/etc/sysconfig/network-scripts/ifcfg-eth0 | 网卡配置信息 |
/etc/resolv.conf | nameserver配置 |
/etc/hosts | 一、开发,产品,测试等人员,用于经过正式的域名测试产品 二、服务器之间的调用能够用域名(内部dns),方便迁移 |
/etc/sysconfig/network | 主机名配置文件 |
/etc/fstab 设置文件系统挂载信息的文件,使得开机可以自动挂载分区或设备 |
格式:分区|设备|UUID|标签 挂载点 文件系统类型 各项参数选项 是否dump 是否fsck |
/etc/profile /etc/profile.d/ |
全局环境变量,对全部用户有用 |
.bashrc文件(在用户的家目录下) | 环境变量的编辑,只对当前用户有用 |
登录式shell执行顺序/etc/profile-->/etc/profile.d/*-->~/bash_profile-->~/.bashrc-->~/etc/bashrc 非登录式shell执行顺序 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/* |
|
/etc/redhat-release | 操做系统版本 |
/etc/issue | 发行版本注记,能够清空 |
/etc/passwd 系统帐号文件 /etc/shadow 系统帐号密码文件 /etc/group 组帐号文件 /etc/gshdow 组帐号密码文件 |
系统帐号文件 系统帐号密码文件 组帐号文件 组帐号密码文件 |
/etc/sudoers | visudo配置 |
/usr/local | 通常存放自编译软件,编译指定此目录 |
/usr/src | 内核源代码存放目录,源代码存放位置 |
/var/log/ /var/log/messages 系统日志,自动轮询按周,由rsyslog控制 /var/log/secure 安全日志, ssh链接日志 |
系统日志,自动轮询按周,由rsyslog控制 安全日志, ssh链接日志 |
/proc cat /proc/loadavg #<==负载(系统繁忙程度top,uptime) cat /proc/meminfo #<==内存信息 cat /proc/cpuinfo #<==cpu信息 cat /proc/mounts #<==挂载信息 cat /proc/interrupts 正在使用的中断,和曾经有多少个中断 |
|
/etc/inittab | 设定runlevel级别 |
/etc/init.d/ | 包含系统各类服务的启动和中止脚本 |
/etc/rc.d/rcN.d | N为1到6,是对应于不一样runlevel下起不一样的服务,这些目录下都是些符号链接,S或K后面的数值是个优先级,这个优先级使用chkconfig来维护,例如# vi /etc/init.d/network #! /bin/bash # network Bring up/down networking ## chkconfig: 2345 10 90 |
Centos7的字符集配置文件为/etc/locale.conf Centos7以前的字符集配置文件为/etc/sysconfig/i18n |
#yum install kde-l10n-Chinese #yum -y groupinstall chinese-support |
挂载设备 (mount挂载和fstab问题,NFS网络文件系统挂载时,网卡未起就加载fstab了,因此此种建议放在rc.local) 1、格式化设备 (测试建立loop 空设备dd if=/dev/zero of=dev/sdb1 bs=4096 count=100) 2、挂载 如需开机挂载,写入fstab (也能够将挂载命令写入到rc.local)(测试mount -t ext4 loop,natime,noexec /dev/sdb1 /目录) 3、可以使用mount -a挂载全部 fstab加载错误解决方法: 1.输入root密码以单用户方式登陆系统. 2.从新加载根分区: #mount -o remount,rw / 3.编辑加载项: #vi /etc/fstab 4.用此命令校验全部的加载项: #mount -a 这个命令实际上能够避免因为打字错误引发没法加载错误。 5.没有问题的状况下,重启系统 让一个程序开机启动的方法 1、chkconfig (/etc/init.d/下的服务) 2、/etc/rc.local 工做中做为服务器的档案文件,可做为规范。注释、备份
CENTOS6开机流程详解
1、加载BIOS硬件信息,根据设定取得第一个可开机引导设置,如:光驱、硬盘、网络、usb,若是硬盘为第一引导 2、读取硬盘中MBR的boot loader(即grub、Lilo等程序) 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由3部分组成:主引导程序、硬盘分区表DPT和硬盘有效标志magic number(55AA)16*4+446+2=512 注:硬盘默认一个扇区大小512字节,其中 第一部分:主引导程序(boot loader)占446字节,主引导程序,它负责从活动分区中装载并运行系统引导程序 第二部分:分区表(DPT),占64字节,硬盘中分区有多少以及每一个分区大小都记录在其中,每一个分取消项长16字节 第三部分:MBR有效表示位:占2字节,固定为55AA,若是这个标志位0xAA,就认为这个是MBR
GRUB(Grand Unified Bootloader)是一个来自GNU项目的多操做系统启动程序 3、依据boot loader的设定(grub),到引导分区加载Kernel,Kernel会开始侦测硬件并加(ramdisk)载驱动程序 4、在硬件驱动成功后,Kernel会主动执行init程序,从inittab中取得run-level信息 5、init执行/etc/rc.d/rc.sysinit,进行初始化:网络、时区、mount、主机名、激活swap、加载mod等设定 6、init执行run-level下各个服务并启动(script) 7、init执行开机后自动运行脚本/etc/rc.local文件 8、init执行虚拟终端机控制程序mingettty来启动login程序,等待用户登陆
CENTOS6开机流程详解systemd
init启动两个缺点:
启动时间长,init进程是串行启动,依次启动各个进程
启动脚本复杂,init只是执行启动脚本,无论其余事情,脚本须要本身处理各类状况,使得脚本变得很长
Systemd解决了两个缺点,设计目标是为系统的启动和管理提供一套完成的解决方案。可是体系庞大,很是复杂。
centos7启动过程:systemd初始化进程服务采用了并发启动机制,开机速度提高
bios开机自检
进入启动菜单,加载系统内核
内核进行初始化
启动初始化进程
systemd与System V init的区别以及做用
System V init运行级别 | systemd目标名称 | 做用 |
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别3,不包含NFS |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 救援模式 |
#rh7前 #rh7 |
||
systemctl管理服务的启动、重启、中止、重载、查看状态等经常使用命令 |
||
System V init命令(RHEL 6) | systemctl命令(RHEL 7) | 做用 |
service foo start | systemctl start foo.service | 启动服务 |
Service foo restart | systemctl restart foo.service | 重启服务 |
Service foo stop | systemctl stop foo.service | 中止服务 |
Service foo reload | systemctl reload foo.service | 从新加载配置文件(不终止服务) |
Service foo status | systemctl status foo.service | 查看服务状态 loaded 单元配置文件已经处理 active(running) 服务运行正常 active(exited)成功完成一次性配置 active(waiting)运行中,等待事件 inactive enabled 随机启动 static 没法启用,但能够由某一启动单元自动启动 |
systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等经常使用命令 |
||
System V init命令(RHEL 6) | systemctl命令(RHEL 7) | 做用 |
chkconfig foo on | systemctl enable foo.service | 设置开机自动 |
chkconfig foo off | systemctl disable foo.service | 开机不自动启动 |
chkconfig foo | systemctl is-enabled foo.service | 查看特定服务是否为开机自启动 |
chkconfig --list | Systemctl list-unit-files --type=service | 查看各个级别下服务的启动与禁用状况 |
经常使用systemctl命令
systemctl 查看全部单元状态
systemctl --type=service 查看服务单元状态
systemctl status sshd –l 查看某服务单元状态
systemctl is-active sshd
systemctl is-enabled sshd
systemctl list-unit-files –type=service
systemctl --failed –type=service
tar解压打包 #tar zcvf ect.tar.gz /etc #tar tf etc.tar.gz 查看文件 --exclude=文件 文件排除 -X exclude from listfile -C 指定目录 #find /etc/ -type f | xargs tar zcvf name.tar.gz #tar zcvf etcfile.tar.gz `find /etc -type f` #find /etc/ -type f | tar zcvf name.tar.gz 错误 #find /etc/ -type f -exec tar zcvf name.tar.gz {} \;错误 tar使用相对路径和绝对路径的区别 [root@test85 test]# find /home/test/ -name "access*" | xargs tar zcvf accessA.tar.gz [root@test85 test]# tar tf accessA.tar.gz home/test/access_www_2016-04-11.log home/test/access_www_2016-04-14.log [root@test85 test]# find ./ -name "access*" | xargs tar zcvf accessB.tar.gz [root@test85 test]# tar tf accessB.tar.gz ./access_www_2016-04-11.log ./access_www_2016-04-14.log 查看文件有多少行 #wc -l 统计行数 #cat -n /etc/service | tail -1 -l, --lines print the newline counts -L, --max-line-length print the length of the longest line -c 字节数,即文件大小 -m没中文的话相同 -w 单词数
index node详解
#ls -li i==inode 文件在磁盘的惟一标识(即index node)linux读取文件首先要读取到这个索引节点,相等于书的目录
[root@test01 home]# ls -lhi
39 drwxr-xr-x. 3 root root 4.0K Apr 27 00:57 aaamulu
23 -rw-r--r--. 1 root root 134 Apr 26 15:24 aaa
inode 文件类型权限位 点selinux相关 文件的硬链接数 属主 属组 文件大小 修改时间 文件名
磁盘格式化后 第一部分是inode 第二部分是block
inode存放文件的属性(除文件名,还包含指向文件实体的指针功能),inode是有大小的,格式化后没法更改,因此格式化时能够指定大小
inode包含文件的元信息,具体来讲有如下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变更的时间,mtime指文件内容上一次变更的时间,atime指文件上一次访问的时间。
* 连接数,即有多少文件名指向这个inode
* 文件数据block的位置,文件实体的指针
dumpe2f命令
- 查看ext2/ext3/ext4 filesystem information
#dumpe2fs /dev/sda3 | grep "Inode size" 查看inode大小
#df -i 可查看每一个分区inode使用量信息 #df -T查看文件系统类型
inode相关知识
一、磁盘格式化后生成必定数量的inode和block
二、inode是索引节点,存放文件属性,指向文件实体block
三、ext3/4 文件系统的block存放文件的实际内容
四、inode是块存储空间。c6非boot分区默认大小256字节,c5默认128Bytes
五、inode是一串数字,不一样文件对应得inode在文件系统中惟一
六、inode相同,互为硬连接文件
七、block大小通常为 一、二、4k 引导分区通常为1k
八、一个文件被建立后至少要占用一个inode和一个block
九、若是文件很大,占用多个block,若是不多,占用一个,剩余就浪费
十、mkfs.ext4 -b 2048 -I 256 /dev/sd? 格式化时指定,通常不必
非boot分区,ext4 block:4096 inode:256
[root@test80 home]# dumpe2fs /dev/sda1 | grep -i "Inode size" (grep -i 不区分大小些)
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 128 boot分区
[root@test80 home]# dumpe2fs /dev/sda2 | grep -i "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 256
block相关知识
一、磁盘读取数据是按block为单位
二、一个文件可能占用多个block,读取一个就是一次I/O
三、若是要提高磁盘io性能,尽量一次读取数据尽可能的多
四、一个block只能存放一个文件内容
五、因此block不是越大越好,大文件通常设置block大点,小文件多的小点,若是设置成4k,文件都是0.1k的,大量浪费空间
案例:系统提示文件系统满 df -h 发现没满
解答:可能inode满了 可df -i查看
企业工做邮箱临时队列/var/spool/clientqueue这里很容易被大量小文件占满 只有安装列sendmail才会有这目录 centos5.8默认安装列sendmail centos6 postfix也有邮件队列目录/var/spool/postfix/maildrop
服务关掉也不行
手动清理后写定时任务
#find /var/spool/clientqueue或/var/spool/postfix/maildrop -type f | xargs rm -rf
文件名
存放在上级目录的block,删除文件就是修改上级目录的block
连接========================================================================================================================
一、硬连接 #ln 源文件 目标文件
二、软链接 #ln -s 源文件 目标文件
(目标文件不能事先存在)
硬连接 经过索引节点来进行连接 ext2 3 4中。多个文件名指向同一个索引节点
有多个硬连接的状况下,删除其中一个,不影响其余几个。只有全部的删除时,文件被删除(指静态文件,即不被进程调用的文件)
硬连接知识小结
1)具备同inode节点号的多个文件互为硬连接文件(inode相同),硬连接其实就是文件的另外一个入口
2)删除其中之一,文件实体并未删除,只有删除源文件及所对应的硬连接文件,文件实体才会被删除
3)删除源文件及所对应的硬连接文件后,再存放新的数据占用这个文件的空间或者磁盘fsck检查的时候,删除的数据会被系统回收
4)能够经过给文件设置硬连接文件,防止重要文件被误删除
5)对于静态文件(没有进程正在调用的文件)来说,对应的硬连接数(i_link)为0,文件就被删除
6)目录的硬连接不能跨越文件系统
linux文件删除控制的变量
i_link文件硬连接的数量
i_count 引用计数(有一个程序使用就+1)
文件删除的条件:i_link=0 and i_count=0
新增硬盘步骤
fdisk/parted
mkfs -t ext4 /dev/sdb
tune2fs -c -1 /dev/sdb1 设置不检查
mount -t ext4 -o defaults /dev/sdb 挂载点
案例 某httpd服务器(也验证了硬连接文件删除时被进程调用的状况)
acesslog 巨大,磁盘占满空间,删除此文件后df -h 发现未释放
能够重启httpd 重启解决
目录的硬连接
目录不容许ln作硬连接,硬连接不容许跨文件系统
以点开头的文件为隐藏文件
新建立一个目录会发现硬连接数为2,是由于 . 即当前目录 ..和上级目录的inode相同
你会发现有时目录的inode数字挺大,是由于其下一级目录..指向。
软链接
软连接即符号连接,文件系统类型为l。能够理解为一个文本文件,这个文件中包含有软连接指向另外一源文件的位置信息内容(源文件的所在绝对路径)
软连接知识小结
一、相似windows快捷方式
二、软链接相似一个文本文件,存放源文件路径,指向源文件实体
三、删除源文件,软链接依然存在,可是没法访问指向的源文件路径内容了
四、失效的时候通常是白字红底闪烁提示
五、软链接和源文件是不一样类型的文件,也是不一样的文件,inode号也不一样
目录的软链接生产场景
一、编译软件时指定版本号(/usr/local/apache2.2.23),访问时但愿去掉版本号,能够设置软链接/usr/local/apache,全部程序都访问/usr/local/apache。当软件升级高版本后,只须要删除连接文件删除原先软连接,重建新软连接指向新版本目录
二、企业代码发布时(发布php程序不须要重启服务,须要把全部代码传到一个新的临时目录或者新的站点目录,发布时要么一个mv,也能够重建软链接指向到这个新的临时目录或新的站点目录)
三、不方便移动目录,就可使用软链接
linux用户管理=============================================================================================
用户的角色经过uid、gid识别
用户分为三类
一、超级用户 root uid=gid=0
二、虚拟(系统)用户 知足文件或程序运行的须要而建立,如nginx默认使用nobody,不能登录,不能使用 nologin,uid范围1-499
三、普通用户 uid gid 从500开始
/etc/passwd文件
gtms : x : 500 : 500 : : /home/gtms :/bin/bash
帐号名 密码占位符 uid gid 帐号说明 家目录 登陆shell
/etc/shawdow文件(/etc/login.defs控制)
gtms:$6$ShZTB/rrxlSqkvw.OD/:17195:0:99999:7:::
用户名
加密后的密码:$6$ShZTB/rrxlSqkvw.OD/ 加密算法/salt随机值/加密后的值,未设置时为!!
最近一次密码更改时间: 从1970年算起
密码不能更改的天数:0表示随时修改
密码最长使用天数:多少天必须修改,99999表示永不过时
密码过时前警告时间: 过时前多少天提醒用户,默认7天
密码到期后保持活动的天数: 超过指定天数后,帐户锁定
保留
chage
change user password expiry information
-l username 查看用户帐号密码过时信息
-d 设置最近一次更改密码时间,0表示下次登陆时强制修改密码
-m 设置用户两次修改密码之间的使用最小天数
-M 设置用户两次修改密码之间的使用最大天数
-W 设置密码过时警告天数
-I 设置密码过时几天后,密码失效
-E 设置用户过时时间,帐户失效后没法登录
#chage -m7 -M60 -W10 -I30 username 七天内不能改密码,60天后必须改密码,过时前几天通知用户,过时后30天禁止用户登陆
useradd (userdel删除用户,-r选项删除主目录,usermod属性改变)
语法: useradd username
-u uid
-d 主目录
-g 初始组
-G 附加组(逗号分)
-s 指定shell
-M 不创建家目录
-m 指定家目录
-f 几往后停权,指定在密码过时后多少天即关闭该账号
-e 帐号过时时间
-c 帐号描述
-r 建立系统帐户,没有家目录
usermod (groupmod)修改用户信息
-u uid 改变用户ID
-g gid 改变初始组
-G 指定附加组,可多个,可是会覆盖原有附加组
-a 追加附加组,必须和-G一块儿用,-aG
-md 家目录迁移,移动用户的家目录到新的位置
-d 指定家目录新位置
-c 修改用户注释信息
-s 更改用户使用的shell
-l 更改用户登陆名
-L 锁定用户
-U 解锁用户
finger 查询用户信息及登陆信息
chfn 修改用户信息
passwd --stdin 从stdin读入密码
-x 改密码最小天数
-w距离过时前几天提醒用户
-i过时后多少天禁用 其余了解
#echo "123456" | passwd --stdin username
mkpasswd 随机密码生成(yum install expect)
# mkpasswd -l 15 -d 3 -c 5 -C 5 -s 2
2h3qoqSMR<"IY3c
-l 长度
-d 数字个数
-c 小写字符个数
-C 大写字符个数
-s 特殊字符
建立用户相关
/etc/skel目录 存放新用户配置文件的目录(建立新用户即复制此目录下的文件)
/etc/default/useradd(#useradd调用这个配置,包括cp skel下的文件)useradd -D改变其中的参数
/etc/login.defs(了解)mail路径配置,密码有效期,过时时间,最小长度 uid 受否建立家目录 umask等的一些设置,通常没需求去改
组帐号文件信息
/etc/group bin:x:1:mem 组名称/密码占位/GID/附加成员(passwd中基本组)
/etc/gshadow bin::: 组名称/组密码/组管理员/附加成员
# useradd -u 1000 panwei
# id panwei
uid=1000(panwei) gid=1000(panwei) groups=1000(panwei)
# useradd -g panwei panwei1 #再也不建立panwei1组
# id panwei1
uid=1001(panwei1) gid=1000(panwei) groups=1000(panwei)
# useradd -G panwei panwei2 #还会建立
# id panwei2
uid=1002(panwei2) gid=1002(panwei2) groups=1002(panwei2),1000(panwei)
#newgrp groupname #所在组的其中一个组,临时生效
非交互设置密码
# echo 123456 | passwd --stdin gtms
Changing password for user gtms.
passwd: all authentication tokens updated successfully.
centos6 passwd采用sha512加密方法
123456 ->sha512->6$sq47y43q$QfCuJ9
123456 ->sha512->(随机值) 6$sq47y43q$QfCuJ9
验证 123456 +随机值-> sha512 ->6$sq47y43q$QfCuJ9
# stat aaa 查看文件状态
File: `aaa'
Size: 134 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 47 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-04-27 15:55:14.209951619 +0800 访问时间 find -atime
Modify: 2016-04-27 15:55:14.218953040 +0800 修改时间 find -mtime
Change: 2016-04-27 16:18:15.025953046 +0800 包含modify,权限,属主等属性find -ctime
用户查询相关命令
id username
w Show who is logged on and what they are doing.
who show who is logged on
whoami print effective userid
last 登录记录show listing of last logged in users
lastlog reports the most recent login of all users or of a given user
Linux系统文件权限体系=====================================================================================
-->除ugo的rwx权限外,另外的特殊权限位 t T s S X +
linux普通文件的读、写、执行权限说明
可读r 表示能够读取文件内容
可写w 表示能够新增、修改内容(若是没有r,那么vi没法编辑,若是强制编辑形成数据丢失,可是能够echo追加)
可执行x 表示具备执行文件的权限
一、文件自己要能执行
二、普通用户同时还具有r权限(即能读到内容才可执行)
三、root均可执行
特别提示:删除文件,修改文件名等的权限是受父目录的权限控制,和文件自己无关
linux目录的读、写、执行权限说明
可读r: 表示具备浏览目录内文件的权限,可ls,可是不能cd进目录。若是没有x权限,ls能够看到文件名,可是会提示无权访问权限。
若是ls -l列表,全部的属性会带有问号,也会提示无权访问目录下的文件,可是能够看到文件名
可写w: 表示具备增长、删除或修改目录内的文件名(通常指文件名)的权限(须要x权限配合)
可执行x: 表示具备进入访问目录的权限,可是没有r没法列表,没有w没法新建和删除。
网站文件和目录权限,安全临界点
d 755 root root
f 644 root root
UMASK (/etc/bashrc)
UMASK控制用户建立目录和文件的权限
默认root umask 0022 建立目录用777减,默认文件用666减
默认user umask 0002 建立目录用777减,默认文件用666减
=>对于文件,若是umask有奇数,减法作好后须要在奇数位上加1。即 022和032建立的文件权限相同
setuid 和setgid
当执行命令时,能够拥有这个命令对应属主的权限(例如/usr/bin/passwd),普通用户修改密码临时获得执行权限
[test@test01 ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd (若是s位原来没有x,则s会是大写)
suid知识小结,针对命令和二进制程序
一、用户或属主对应的权限位x位上若是是s,即设置列suid,若是s位原来没有x,则s会是大写
二、做用是让普通用户能够以root(或其余)用户角色运行只有root(或其余)用户帐号才能运行的程序或命令(注意和su和sudo管理的权限)
三、问题:但愿某个用户可以得到删除本来无权删除的文件
a、sudu受权 b、给rm命令设置suid c、设置上级目录权限
四、仅对二进制命令有效,不能用在shell等相似脚本文件,二进制命令还须要有x配合
五、只在执行过程当中有效
六、双刃剑,比较危险。
sgid知识总结
一、与suid不一样的是,sgid既能够针对文件也能够针对目录
二、sgid是针对用户组权限位修改的
sgid仅对二进制命令程序有效
二进制命令或程序须要可执行权限
执行程序的任意用户能够得到该命令执行期间所属组的权限
u+s 以拥有文件的用户身份执行 无影响
g+s 以拥有文件的组身份执行 在目录中最新建立的文件将其全部者设置为与目录的组全部者相匹配
o+t 无影响 对目录具备写权限的用户仅可删除其拥有的文件,而没法删除或强制保存到其余用户所拥有的文件
crond定时任务==============================================================================
getfacl 显示文件访问控制列表
setfacl 设置文件访问控制 通常没啥用
-m modify
-x remove
-b remove
-R rescursive
定时任务crond介绍
crond是linux系统中用来按期执行命令或指定程序的一种服务或软件。
检测频率 每分钟检测,分钟如下的解决不了,要么使用第三方工具
或者自行写脚本
#/bin/bash
while true
do
echo "i am gtms“
sleep 1
done
linux系统中定时任务调度的工做
linux系统自身按期执行的任务工做(日志文件/var/log/cron*)
/etc/logrotate.d/syslog
#crontab -l 查看用户的定时任务
linux系统下的定时任务
一、at (服务名atd) 适合仅执行一次的定时任务
二、crontab (服务名crond)
三、anacron 主要用户非7*24小时开机的服务器准备,以天为周期或系统每次开机后执行的任务工做,他会检测停机时间应该执行,可是没有进行的任务工做,并将该任务执行一遍
提示
一、咱们全部的crond服务是运行的程序,而crontab命令是用户用来设置队则的命令
二、crond服务是企业生产工做中经常使用的重要服务。at和anacron不多用
三、几乎每一个服务器都会用到crond服务
crond的使用(/var/spool/cron下生成对应用户文件)
usage: crontab [-u user] file (crontab命令加了suid所以普通用户能够设置本身的crontab)
crontab [-u user] [ -e | -l | -r
-e (edit user's crontab) ===vi /var/spool/cron/root
-l (list user's crontab) ===cat /var/spool/cron/root
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
定时任务格式
分钟(00-59) 小时(00-23) 日(01-31) 月(01-12) 周(0-7)
crontab中特殊符号的含义
* 表示任意时间,每的意思
- 分隔符,表示时间范围,区间段 00 17-19 * * * 天天17 18 19点
, 表示分隔时段 30 17,18,19 * * * 天天17点30,18点30,19点30
/n 每单位时间 */10 * * * * 每10分钟
cron运行条件
一、chkconfig crond on
二、ps -ef | grep crond | grep -v grep
举例:
30 3,12 * * * /bin/sh/scripts/my.sh 天天3点半,12点半
30 */6 * * * /bin/sh/scripts/my.sh 每6小时点半点时刻
30 8-18/2 * * * /bin/sh/scripts/my.sh 天天8到18点,每隔2小时的半点时刻
30 21 * * * /usr/local/apache/bin/apachect1 graceful 天天21点30
45 4 1,10,22 * * /usr/local/apache/bin/apachect1 graceful 每个月1号10号22号 4点45分
10 1 * * 6,0 /usr/local/apache/bin/apachect1 graceful 每周六,周日上午1点10分
0,30 18-23 * * * 天天18到23的每隔30分钟(提示,最后一次执行任务时23点30分)
00 */1 * * * 每隔1小时的整点
00 11 * 4 1-3 每一年4月的周一到周三 天天11点 周和日尽可能不要同用
* 23,00-07/1 * * * 天天23到7点每分钟 不规范,不对,分必定要定义
生产环境crontab专业实例
例1:每分钟打印一次本身的名字拼音到/server/log本身的名字命名文件
* * * * * /bin/echo "gtms">>/root/gtms
例2:每周六周日上午9点和14点,执行一个脚本脚本要求打印当天日期
00 09,14 * * 6,0 /bin/sh 路径/脚本.sh >/dev/null 2>&1 任务执行一次都会发给root,若是邮件没开,邮件队列小文件队列堆积致使inode满sendmail /var/spool/clientmqueue postfix /var/spool/postfix/maildrop
书写定时任务注意点
一、为定时任务规则加必要的注释(习惯规范)
二、定时任务命令或程序最好写到脚本里执行
三、cron中执行shell脚本任务前加/bin/sh,即命令的绝对路径
四、定时任务命令或脚本结尾加>/dev/null 2>&1 (&>dev/null,1>/dev/null 2>/dev/null)
五、在指定用户下执行相关的定时任务(普通用户能解决的建议用普通用户执行)
六、生产任务程序不要随意打印输出信息
七、定时任务执行的脚本要规范路径(/server/scripts)
八、配置定时任务规范操做过程 a、首先命令行测试成功 b、复制到脚本进行测试c、测试环境测试,再部署到正式环境
另外
一、到目标内容的上级目录打包
二、打包的频率是分,包名必须精确分
三、确保命令执行正确,而后复制到脚本
四、定时任务命令或程序最好写到脚本执行
五、测试脚本正确性(定时任务怎么写,命令行就怎么测试)
六、脚本测试好了,命令行的命令也要复制
七、脚本路径要有规范
八、定时打包或处理其余工做,不要屏幕输出,能够打到日志文件里
#vi data_tar.sh
cd /etc &&\
tar zcf /tmp/service_$(date +%F-%H).tar.gz ./services (%若是不写脚本,直接写cron,%须要转义)
进行测试/bin/sh /server/scripts/data_tar.sh
#crontab-e
#注释
00 */2 * * * /bin/sh /server/scripts/data_tar.sh >/dev/null 2>&1
工做中调试定时任务的方法
一、增长执行任务频率调试任务(某些任务不能用于生产环境,没有测试机会)
代码发布:我的开发环境---办公室测试环境---ID机房测试环境---IDC正式(分组,灰度发布)
二、调整系统时间进行任务调试(不能直接用于生产环境),通常5分钟
三、经过脚本日志输出调试定时任务
四、(************>>/tmp/a.log /dev/null 2>&1 )有了定向输出就不用nul了
五、注意环境变量致使的定时任务故障(注意java类,java环境应该在脚本中从新定义)
六、经过crond日志调试定时任务
案例:如何取得某文件的权限对应的数字,如-rw-r--r--为644,要求使用命令取得644或0644这样的数字
#stat /etc/hosts
File: `/etc/hosts'
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 42 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-05-02 05:09:56.914938051 +0800
Modify: 2010-01-12 21:28:22.000000000 +0800
Change: 2016-04-12 07:33:12.820242336 +0800
方法1、#stat /etc/hosts| sed -n '4p'| awk -F '[0/] '{print $2}''
方法2、#stat /etc/hosts | awk -F '[0/]' 'NR==4 {print $2}'
方法3、#stat /etc/hosts | sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'
方法4、#stat -c %a /etc/hosts (man stat)
打包加时间(解析命令)
#tar -zcf name-`date +%F`.tar.gz /etc/
#tar -zcf name-$(date +%F).tar.gz /etc 建议此种
命令编辑快捷方式ctrl+
a 切换到命令行开始 e 切换到命令行末尾 c 终止当前命令或脚本 d 退出当前shell
u 清除(剪切)光标以前的内容 k 清除(剪切)光标以后的内容
r 查找 y 粘贴
linux系统网络知识基础================================================================================
DNS相关命令
nslookup 域名
[root@node89 ~]# nslookup www.baidu.com
Server: 202.101.8.18
Address: 202.101.8.18#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 115.239.211.112
Name: www.a.shifen.com
Address: 115.239.210.27
dig 域名
root@node89 ~]# dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64556
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 172 IN CNAME www.a.shifen.com.
www.a.shifen.com. 79 IN A 115.239.211.112
www.a.shifen.com. 79 IN A 115.239.210.27
;; Query time: 26 msec
;; SERVER: 202.101.8.18#53(202.101.8.18)
;; WHEN: Mon Jan 30 18:48:10 2017
;; MSG SIZE rcvd: 90
host 域名
[root@node89 ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 115.239.210.27
www.a.shifen.com has address 115.239.211.112
网关网络相关命令
netstat - Print network connections, routing tables, interface statistics, masquerade connections,and multicast memberships
-r Display the kernel routing tables.
-l, --listening display listening server sockets
-n, --numeric don't resolve names
-p, --program Show the PID and name of the program to which each socket belongs.-u
ifconfig - configure a network interface
route - show / manipulate the IP routing table
#route add/del default gw ip
#route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
hostname - show or set the system's host name
lsof - list open files
网卡相关
单网卡多IP,别名ip,虚拟ip,重启失效 #ifconfig eth0:1 192.168.0.222/24
辅助IP形式:keepalive高可用一直都是用的辅助IP,将来趋势,重启失效
#ip addr add 192.168.0.222/24 dev eth0:1
SO:写到/etc/sysconfig/network-scripts/ifcfg-eth0
网络及服务故障排查
ping (icmp,linux 是否禁止icmp)
traceroute 域名 路由跟踪
telnet 域名 80 不通 一、没开或不存在2 防火墙3服务监听端口不在链接的ip上 四、isp运营商默认不开端口,申请开通
抓包工具
tcpdump
tcpdump -n icmp -i eth0
nmap
windows:sniffer wireshark,科来网络
案例
一、局域网某pc没法上网(略)
二、网站打开慢
是否只是个案?
本身测试,若是一样的问题
一、ping 不丢包的话,怀疑服务问题了(资源过载?)。若是丢包,机房带宽不稳定?线路不稳定?尝试ping百度
二、tracert 若是是客户端到服务器之间的各个线路,让机房配合查
三、telnet http端口、 curl 域名
四、硬件资源状况
五、购买的带宽是否满了
六、内链外链 用软件调试a、火狐firebug ,yslow b、le httpwatch
集群架构问题?
登录数据库,看是否有慢查询语句show proceslist
存储?IO? NFS负载?
网络基础须要必会的
一、tcp/ip协议的三次握手和四次断开过程
二、http协议的工做原理
三、机器没法上网
四、网站打开慢
五、DNS解析原理
六、OSI7层网络模型
七、如何查看端口对应服务名
八、route如何添加一个网络路由
===============================================================================
L027企业项目案例1-linux用户权限集中管理方案-9节
L028企业项目案例2-linux用户行为日志审计管理方案-5节
生产环境日志审计解决方案
所谓日志审计,就是记录全部系统及相关用户行为的信息,而且能够自动分析、处理、展现(包括文 本或者录像)
方法一、经过环境变量命令及syslog服务进行所有日志审计(信息太大,不推荐)
方法二、sudo配合syslog服务进行日志审计(信息较少,效果不错)
方法三、在bash解释器程序嵌入一个监视器,让全部被审计的用户使用修改过的增长列监视器的特殊 bash程序做为解释程序。
方法四、齐治的堡垒机:商业产品
方法二、sudo配合syslog服务进行日志审计(信息较少,效果不错)
只记录sudo用户的操做(命令前加su就记录)
一、安装sudo命令,syslog服务(centos为rsyslog服务)
[root@test01 ~]# rpm -qa | egrep "sudo|rsyslog"
rsyslog-5.8.10-10.el6_6.x86_64
sudo-1.8.6p3-19.el6.x86_64
二、配置/etc/sudoers (visudo -c检查语法)
增长配置#echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
三、配置rsyslog 并/etc/init.d/rsyslog restart(好像能够不用?)
echo "local2.debug /var/log/sudu.log">>/etc/rsyslog.conf"
提示:
一、linux系统的特性是将系统不用的物理内存缓存起来,所以721不是真实可用内存
二、系统真正系统可用内存是850
三、buffers为写入缓冲区,sync将缓冲区数据写入磁盘
四、cache为读取缓冲区
五、磁盘是机械的,不管是写入仍是读取都太慢列。因此读取和写入都是用列缓存技术
六、门户架构网站都会用缓存技术,来让用户写入读取尽量不涉及硬盘
Disk 磁盘
Head 磁头
Sector 扇区 硬盘最小存储单位,512字节
Track 磁道
Cylinder 柱面 Units 单元快
Block 数据块 操做系统读取硬盘的时候,不会一个个扇区地读取,这样效率过低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最多见的是1KB,即连2个 sector组成一个 block。 4K =8扇区
查看系统块大小
RHEL6操做系统:
[root@test84 vitest]# tune2fs -l /dev/sda1 | grep "Block size"
Block size: 1024
RHEL7操做系统
[root@localhost ~]#xfs_info /dev/sda1 | grep size
Inode 索引节点
CHS结构体系的磁盘
比较古老的CHS (Cylinder/Head/Sector)结构体系. 由于好久之前,在硬盘的容量还很是小的时候,人们采用与软盘相似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具备相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),便是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。
这种结构有问题:
之前老式的磁盘,每一个磁道的扇区都同样,这样外磁道整个弧长要大于内部的扇区弧长,于是其磁记录密度就要比内部磁道的密度要小。最终,致使了外部磁道的空间浪费。
ZBR结构体系的磁盘
如今硬盘都采用这种技术:ZBR(Zoned Bit Recording)区位记录 (Zoned zōnd )
Zoned-bit recording(ZBR 区位记录)是一种物理优化硬盘存储空间的方法,此方法经过将更多的扇区放到磁盘的外部磁道而获取更多存储空间。
备份MBR(恢复反过来 通常不用)
#dd if=/dev/sda of=mbr.bin bs=512 count=1
文件系统是对一个存储设备上的数据和元数据进行组织的一种机制
sas/sata硬盘文件系统选择
一、reiserfs 大量小文件业务首选(100k之内)
二、xfs 有的门户的数据库MySql业务
三、ext4 视频,流媒体,数据库,小文件业务也可
centos5--ext3 centos6--ext4 centos7--xfs
补充
route命令
http://oldboy.blog.51cto.com/2561410/1119453
router add default gw 网关地址 (临时生效) 放到rc.local有问题,重启网络就没了
router add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
rpm包查找相关网站
http://rpmfind.net/
http://rpm.pbone.net/
http://www.rpmseek.com/index.html
扩展swap分区
一、新建分区
二、格式化sdb1分区为swap格式
三、#mkswap /dev/sdb1
Setting up swapspaceversion 1, size = 96252 KiB
no label,UUID=d6e96d3b-9d74-4eda-8bdf-387754dca90e
四、#swapon /dev/sdb1
五、设置开机自动挂载swap分区
#vim /etc/fstab
/dev/sdb1 swap swap defaults 0 0
>>说明:只有重启才能生效,mount -a 没法自动扩展swap分区的。
#swapoff /dev/sdb1
RPM包管理
# rpm -q lrzsz 查询rpm包是否被安装过
# rpm -qa | grep lrzsz 查询全部安装的rpm包,一般使用grep过滤
# rpm -ql lrzsz lrzsz的rpm包安装了那些文件和目录
# rpm -qf /usr/bin/rb 查询rb文件是哪一个rpm包安装
lrzsz-0.12.20-27.1.el6.x86_64
# rpm -pql lrzsz-0.12.20-27.1.el6.x86_64 预先查看软件包将生成哪些文件和目录
# rpm -pqi lrzsz-0.12.20-27.1.el6.x86_64 查看软件包的做用
导入RPM-GPG-KEY,安装rpm时,对rpm签名进行验证,安装时再也不有nokey提示
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
验证原理:非对称加密,导入公钥,验证rpm中的签名是不是对的
配置本地yum源
[c6-media] 区别各个不一样的yum库,必须惟一
name=CentOS-$releasever - Media 对yum库的描述
baseurl=file:///media/CentOS/ repodata目录所在目录
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1 使用公钥验证rpm包的正确性
enabled=1 启用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
安装src.rpm源码rpm包
# cat /etc/redhat-release
CentOS release 6.7 (Final)
# uname -a
Linux node84 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm 编译成可执行二进制文件# ls /root/rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el6.x86_64.rpm lrzsz-debuginfo-0.12.20-27.1.el6.x86_64.rpm 生成目录及rpm包# rpm -ivh /root/rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el6.x86_64.rpm rpm包安装