数据库运维
记录DBA学习成长历程

第3章:Linux系统目录结构

文章目录

1. 挂载的知识

—1.2 磁盘空间需要挂载使用

linux系统设备信息利用文件表示(一切皆文件)
将一个磁盘设备看做是一个房子 (存储设备文件)
将一个空目录看做是一个门(挂载点)
将门安装到房子的过程称为挂载
将门从房子上拆下来过程称为卸载
ll /dev/sda  磁盘文件

—1.3 系统挂载操作实践(利用光驱进行挂载)

虚拟机设置查看

——1.3.1 确认设备文件是否存在

(房子是否盖好了)
磁盘不会直接加载出来
但是本次是用光驱代替磁盘来进行挂载
确认光驱是否存在,如下所示
[root@linux ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 Jan 2 10:43 /dev/cdrom -> sr0

——1.3.2 确认有没有一个空的目录

确认门是否买好了
ls -l /mnt

——1.3.3 进行设备信息挂载

门安装到房子上
mount 设备文件信息 挂载点信息
mount /dev/cdrom(房子) /mnt(门)
[root@linux ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected(写保护), mounting read-only(只读)
[root@linux ~]]# ls -l /dev/cdrom
lrwxrwxrwx. 1 root root 3 Sep 27 19:12 /dev/cdrom -> sr0

——1.3.4 进行挂载检查确认

df -h

——1.3.5 卸载方式

umount /mnt

——1.3.6 mount挂载概念

2.目录结构简述以及规范

—2.1 目录结构概述

bin

命令,二进制文件(命令)的存放目录
binary
/bin==usr/bin

sbin

超级命令,只有root用户能用的命令
super binary
/sbin==usr/sbin

boot

系统引导程序+系统内核

dev

设备 光驱 硬盘
device
挂载才能使用

etc

存放系统或服务的配置文件

home

普通用户的家目录,贫民窟

root

root用户的家目录 皇宫

lib

库文件存放目录
libary

lib64

库文件存放目录

lost+found

磁盘、文件系统损坏 断电 临时存放文件

media

类似失物招领处

misc

mnt

临时的挂载点目录
挂载点:给设备提供一个入口

opt

第三方软件安装在这里

proc

虚拟目录,显示内存中信息(进程 服务信息 内核)

selinux(centos7没有)

selinux及他的配置文件存放的位置

srv

sys

虚拟的目录 内存信息

tmp

临时文件的存放位置 垃圾堆
temp

usr

存放用户的程序软件
user
unix software resource

var

经常变化的文件:系统日志,相关服务日志文件

—2.2 目录结构发展规范

FHS组织
http://www.pathname.com/fhs/pub/fhs-2.3.html

3. 网卡配置文件ifcfg-eth0

IPV4IPV6区别为:IP地址的详细方式不同

/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet --网络类型 以太网
BOOTPROTO=none
获取IP地址方式:
a.本地网络笔记本等自动获取 dhcp
b.服务器 静态配置(none/static
DEFROUTE=yes  --是否使用默认路由
IPV4_FAILURE_FATAL=no  --异常相关的等
NAME=eth0  --网卡名称 ifnames=0
UUID=f34fceea-400c-48e3-ab21-e0293b5d3a60  --硬件标识信息(此处指网卡)
DEVICE=eth0  --网卡设备名称 biosdevname=0
ONBOOT=yes  --确认是否激活这块网卡 *
IPADDR=10.0.0.202  --网卡的IP地址
PREFIX=24  --掩码信息(网络中可能有多少台主机)
GATEWAY=10.0.0.254
网关地址信息
a.类似于国外旅游的海关
b.与虚拟主机的虚拟网络编辑器里的net设置中的网关IP相同
DNS1=10.0.0.254  --建立一个名称  IP地址的对应关系

4. 网络出现故障排查思路

—4.1 重启服务

系统的所有服务(网络)配置文件修改变更之后, 需要重启服务使之生效

centos7:
systemctl restart network
/etc/init.d/network start
centos6:
/etc/init.d/network restart
启动远程服务:/etc/init.d/sshd restart

—4.2 查看网络配置

centos7
ip address show eth0ip a
nmtui
centos6
ifconfig eth0
ip address show eth0ip a

1. 排查远程连接问题-链路是否通畅

到机房进行操作

2. 确认网关地址是否通畅
3. 确认网卡配置是否正确
4. 确认网络管理服务关闭

不关闭可能导致网卡配置正确但ip a 时不显示IP
systemctl status NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager

5. 确认虚拟网络编辑配置

取消“使用本地DHCP服务将IP地址分配给虚拟机”

6. 确认虚拟软件服务开启

windows操作:
cmd->services.msc

7. 确认虚拟网卡配置信息

虚拟机设置->网络适配器->网络连接->自定义->
选择NAT模式相关的网卡在本地开启

5. 域名解析文件resolv.conf

—5.1 记录DNS服务器信息

DNS服务器是外网域名和IP的桥梁,不设置DNS服务器,只能连接到IP,链接不到IP对应的域名

—5.2 公共的DNS服务器有哪些

01. 阿里云
223.5.5.5
223.6.6.6
02. 电信
114.114.114.114
03. 谷歌
8.8.8.8

—5.3 操作流程

a.配置文件中可以编写DNS服务器地址信息
vi /etc/resolv.conf
nameserver 223.5.5.5
b.编写信息完毕后,会立即生效
c.网卡中的dns配置会覆盖掉resolv文件中的配置信息(网络服务重启)

6. 主机名设置文件hostname

—6.1 查看文件

centos6:/etc/sysconfig/network
centos7:/etc/hostname

—6.2 临时修改

[root@linux ~]# hostname
xiaoyong
[root@linux ~]# hostname gxy
重新断开连接或者执行bash即可生效修改成功
exit退出恢复原来的主机名

—6.3 永久修改

系统中一些配置希望永久更改, 需要编写修改配置文件
[root@linux ~]# vi /etc/hostname
gxy
重启即可

—6.4 centos7中临时修改和永久修改整合

hostnamectl set-hostname gxy
断开连接即可

7. IP地址和域名对应的hosts文件

01. 由开发人员汇总需求
02. 编写网站代码
03. 将编写好的代码发给运维人员
04. 在线下测试环境进行测试(尽可能模拟真实环境)
www.jd.com指向测试服务器 10.0.0.203

windows

C:\Windows\System32\drivers\etc\hosts

linux

[root@linux ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.203 www.jd.com

8. 自动挂载功能的文件fstab

第一个历程: 购买安装新的硬件设备

然后重启服务器
虚拟机-设置-添加硬盘

第二个历程: 检查确认系统是否识别了新的硬件

fdisk -l
发现已经添加了一块新的磁盘/dev/sdb

第三个历程: 进行分区

fdisk /dev/sdb->n->p->回车x3->p->w

第四个历程: 格式化操作

mkfs.xfs /dev/sdb1

第五个历程: 进行磁盘设备挂载操作

临时挂载-重启之后发现消失
[root@oldboy-xiadao ~]# mount /dev/sdb1 /mnt
[root@oldboy-xiadao ~]# df -h
/dev/sdb1 10G 33M 10G 1% /mnt
永久挂载
/etc/fstab(filesystem table) --每次系统启动都会自动读取这个文件实现自动挂载
[root@xiaoyong ~]# blkid


查看UUID
[root@xiaoyong ~]# vi /etc/fstab

添加UUID

卸载挂载

1.删除fstab中挂载的uuid
2.umount /mnt

如何实现光驱自动挂载

9. 开机加载脚本文件rc.local

开机会加载文件中的命令信息  --/etc/rc.local 
[root@linux ~]# echo "mount /dev/sdb1 /mnt" >>/etc/rc.local
[root@linux ~]# cat /etc/rc.local 
mount /dev/sdb1 /mnt
centos7的开机加载文件需要添加权限才能生效
[root@linux ~]# ls -l /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 Apr 11 2018 /etc/rc.d/rc.local
[root@linux ~]# chmod a+x /etc/rc.d/rc.local
[root@linux ~]# ls -l /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 473 Apr 11 2018 /etc/rc.d/rc.local
重启即刻生效

10. 运行级别设置文件inittab

windows

正常模式启动系统 --比较多的服务会开机运行
安全模式启动系统 --少量服务在运行

—10.1 centos6(runlevel)

cat /etc/inittab 
0 关机模式
1 单用户模式 (修改系统用户密码信息)
2 多用户模式 (不支持NFS ) 不支持网络
3 多用户模式 (支持网络 默认运行级别)
4 未知 预留模式
5 图形化模式(又称为x11 一般不用,因为需要耗费性能,还需要显卡
6 重启模式 init 6 == reboot

—10.2 centos7(target 目标)

—10.3 查看系统的运行级别

centos7
[root@xiaoyong ~]# systemctl get-default
centos6
[root@xiaoyong ~]#runlevel

—10.4 如何设置运行级别

centos6

临时设置:init 级别数值
永久设置:
vi /etc/inittab 
更改最后一行id:3:initdefault

centos7

临时设置:init 级别数值
永久设置:systemctl set-default rescue.target(级别信息)

如何利用单用户模式修改系统root用户密码?

 

11. 变量信息自动加载文件profile

—11.1 查看文件

[root@linux ~]# cat /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

—11.2 设置变量&调取变量

[root@linux ~]# X=1
[root@linux ~]# echo $X
1

—11.3 环境变量

如:
[root@linux ~]# echo $LANG
en_US.UTF-8
01. 系统已经设置好的变量信息
02. 都是大写字母组成
03. 修改系统环境变量 需要借助一个命令和一个文件
echo "oldboy=123456" >>/etc/profile
04. 所有用户都可以调用

—11.4 变量永久生效

echo "oldboy=123456" >>/etc/profile
第一种方式:重新连接
2种方式:立即加载文件配置
[root@oldboy-xiadao ~]# source /etc/profile
[root@oldboy-xiadao ~]# echo $oldboy
123456

—11.5 和环境变量配置有关的文件

国法
/etc/profile
/etc/bashrc 设置函数  别名
[root@xiaoyong ~]# alias ll
alias ll='ls -l --color=auto'

家规
~/.bashrc
~/.bash_profile
[root@xiaoyong ~]# ll -a 
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
家规大于国法

12. 登录提示信息文件motd/issue

登录之后提示文件

[root@linux ~]# cat /etc/motd 
不要随意使用root用户 不要随意使用rm

登录之前提示文件(英文)

[root@linux ~]# cat /etc/issue
耶稣保佑
[root@linux ~]# /etc/issue.net

13.安装程序软件

—13.1 查看安装目录

安装位置usr目录的usr/local
安装好软件重新连接生效

补全命令软件:yum install -y bash-completion
实现windowslinux传输下载功能的软件:yum install -y lrzsz

—13.2 yum安装软件

yum install
-y
yum install -y tree nc vim net-tools
解决软件依赖,但是不能灵活定制化

—13.3 rpm安装软件

rpm -ivh 软件包的名称
-i install
-v verbose*(显示安装过程)
-h human 以人类可读方式安装
[root@linux ~]# rpm -ivh gvnc-0.7.0-3.el7.x86_64.rpm
error: Failed dependencies:
libgdk_pixbuf-2.0.so.0()(64bit) is needed by gvnc-0.7.0-3.el7.x86_64
无法解决依赖关系
不能解决软件依赖,可以单独安装软件(半成品)

—13.4 编译安装

可以更加灵活的安装软件(软件安装路径) 
安装配置:进入程序中->执行./configure 参数信息
编译过程(翻译的过程):make
编译安装:make instll
不能解决软件依赖,可以灵活定制化

—13.5 二进制包安装

直接解压后,即可使用

软件安装成功查询方法

[root@linux ~]# rpm -qa bash-completion
bash-completion-2.1-8.el7.noarch
rpm -qa|grep vim
rpm -qa vim-*

查询命令属于哪个软件包:yum provides dig
找寻软件安装配置文件目录:
[root@linux ~]# rpm -ql bash-completion
/etc/bash_completion.d
/etc/bash_completion.d/redefine_filedir

14. 系统日志文件

—14.1 /var/log/messages

记录系统运行过程 或者 服务运行过程 一些异常信息
systemctl status rsyslog.service
有这个服务决定

—14.2 /var/log/secure

记录登录系统用户信息 登录成功/失败的信息

—14.3 查看日志文件

——14.3.1 tail命令显示文件的最后(10行)信息

[root@linux ~]# tail /etc/services
[root@linux ~]# tail -20 /etc/services

——14.3.2 head命令显示文件的前几行(10行)信息

[root@linux ~]# head /etc/services 
[root@linux ~]# head -20 /etc/services 

——14.3.3 实时追踪一个文件数据信息的变化

tail -f /var/log/secure
当监控文件被删除之后,会停止监控,需要重新执行命令进行监控信息
tail -F /var/log/secure
当监控文件被删除之后,会有报错提示信息,并且当文件恢复后,继续监控

——14.3.4 查看指定信息

grep 老三 擅长过滤

[root@linux ~]# grep "Failed" /oldboy/secure-20161219

grep 结合管道符号 |
显示部分信息,管道前面命令执行的结构交给管道后面的命令进行处理
[root@linux ~]# grep "Failed" /oldboy/secure-20161219|head -5

grep参数: -i
ignorecase 忽略大小写查找数据
[root@linux ~]# grep -i "failed" /oldboy/secure-20161219|head -5

grep参数: -c
count 统计行数信息
[root@linux ~]# grep -c "Failed" /oldboy/secure-20161219
[root@linux ~]# grep "Failed" /oldboy/secure-20161219|wc -l

sed

老二 擅长对行进行操作 对文件内容进行编辑修改

awk

老大 擅长对列进行操作 对日志文件进行分析处理

——14.3.5 日志保存备份切割处理

1.可以利用脚本进行备份
2.logrotate日志切割处理程序 (了解)+定时任务

[root@linux ~]# ll /etc/logrotate.conf 
-rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf

15. 目录系统硬件信息/proc

—15.1 作用

目录中的数据都保存在内存里面
记录着一些系统硬件信息情况

—15.2 查看系统CPU信息

[root@linux ~]# cat /proc/cpuinfo
processor : 0 CPU的核数为1
physical id : 0 CPU的颗数=服务器路数1
model name : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz

[root@linux ~]# grep "physical id" /proc/cpuinfo
physical id : 0
physical id : 0
physical id : 1
physical id : 1
[root@linux ~]# grep "processor" /proc/cpuinfo 
processor : 0
processor : 1
processor : 2
processor : 3
24

命令查看cpu信息
[root@linux ~]# lscpu
CPU(s): 4
Core(s) per socket: 2   每个cpu2
Socket(s): 2   2个插座,相当于2cpu

—15.3 查看系统内存信息

[root@linux ~]# cat /proc/meminfo 
MemTotal: 2030172 kB --- 总的内存大小
MemFree: 1751812 kB --- 空闲的内存大小 包含了分配给buffercache空间
MemAvailable: 1724832 kB --- 可用的大小 没有没人使用的空间
Buffers: 2076 kB --- 缓冲区大小 
Cached: 85564 kB --- 缓存区大小 
命令查看内存信息
[root@linux ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 130M 1.7G 9.5M 143M 1.6G
Swap: 1.0G 0B 1.0G

—15.4 系统的负载信息

[root@linux ~]# cat /proc/loadavg
0.00 0.01 0.05 2/118 2487
第一列: 平均1分钟负载大小
第二列: 平均5分钟负载大小
第三列: 平均15分钟负载大小
--------------------------------------
负载值 < 服务器CPU核数才比较合理,不然宕机
利用命令也可以看到系统负载信息

命令查看负载信息
[root@linux ~]# w
18:00:12 up 40 min, 3 users, load average: 0.00, 0.01, 0.05

—15.5 系统挂载信息文件

[root@linux ~]# cat /proc/mounts

利用命令查看负载信息
[root@linux ~]# df -h

16. 系统优化

—16.1 确认好系统的版本信息

[root@dba1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 

[root@dba1 ~]# uname -r
3.10.0-957.el7.x86_64
[root@dba1 ~]# man uname
uname - print system information
        输出系统信息

—16.2 添加新的用户方法

useradd oldgirl
[root@oldboy-xiadao ~]# useradd oldgirl
[root@oldboy-xiadao ~]# passwd oldgirl   --- 交互的设置密码
echo 123456|passwd --stdin oldboy01 --- 免交互的设置密码
Changing password for user oldgirl.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
验证过程
[root@oldboy-xiadao ~]# su - oldgirl
[oldgirl@oldboy-xiadao ~]$ 
[oldgirl@oldboy-xiadao ~]$ whoami
oldgirl

—16.3 运维工作方式

01. 操作前备份
02. 进行操作前要确认(比如:修改网卡信息之前确认网络通不通)
03. 进行修改操作
    mv data.txt /tmp
04. 检查确认
05. 编写总结文档

17. su – 用户名和 su 用户名

当不加任何参数执行su命令时,表示要切换到root用户,但这样执行,会遇到一些问题。因为虽然是切换到root用户了,但并没有改变为root用户登录环境,用户默认的登录环境,可以在/etc/passwd 中查得到,包括家目录,shell类型等。比较规范的操作方法是”su -“。见下面的实例。

实例1:由普通用户oldboy切换到root用户

[oldboy@oldboy ~]$ whoami  #→确认当前用户为oldboy
oldboy
[oldboy@oldboy ~]$ su  #→不加用户就表示切到root用户。当然也可以使用su root。
Password:  #→这里当然就是root用户的密码了。
[root@oldboy oldboy]# env
HOSTNAME=oldboy
USER=oldboy
MAIL=/var/spool/mail/oldboy
PWD=/home/oldboy
HOME=/root
LOGNAME=oldboy

...省略部分无关内容...
#→细心的读者应该已经看到了,如果使用su而不加上“-”这个参数,那么,切换前的用户的相关信息还会存在,
这会引起很多麻烦,甚至会出现意想不到的结果。因此,切换用户时,最好是 “su - 用户名”。
这是生产场景中标准的切换用户的操作方法。

[root@oldboy oldboy]# exit  #→退出当前用户,这个命令也可以用ctrl+d快捷键命令替代。
[oldboy@oldboy ~]$ su -  #→带上“-”参数做切换,也可用su - root命令。这是生产场景中的标准操作方法。
Password:
[root@oldboy ~]# env|egrep "USER|MAIL|PWD|LOGNAME"  #→切换后的环境变量信息结果。
使用egrep过滤包含想查看的字符串的行。
USER=root
MAIL=/var/spool/mail/root
PWD=/root
LOGNAME=root
#→这次和上次就不同了,所有的环境变量信息都切换到了root下。因此,请大家在切换用户时一定
要加上“su - 用户名”,这里提醒下,不光是切到root呦,切换到其他用户也是一样,呵呵。

su命令总结:

1)普通用户切换到root用户,可使用su -或su – root。必须输入root密码才能完成切换。
2)root用户切换到普通用户,可使用“su – 普通用户名”的写法。不需要输入任何密码就能完成切换。
切换到普通用户后,在执行一些命令如ifconfig时,可能会遭遇到环境变量PATH路径问题而找不到某些系统
命令(一般是/sbin,/usr/sbin等下面的命令),这时就需要将普通用户的PATH,配置成root的PATH内容,
前面的文章已讲解过这个配置方法,不清楚的读者,可以翻阅下。
3)如果仅希望在某用户下执行命令,而不直接切换到该用户下操作,可以使用 su – 用户名 -c “命令”的方式。

18. 设置系统别名alias

—18.1 作用介绍

cat /etc/sysconfig/network-scripts/ifcfg-eth0 -- catnet
将一个系统中的长命令进行精简 生成一个别名

alias mv='mv -i'
alias rm='rm -i'
alias cp='cp -i'
-i==interactive 采用交互方式,确认是否覆盖文件
prompt before overwrite

—18.2 寻找命令所对应的文件

[root@linux oldboy]# which rm
/usr/bin/rm

—18.3 三种取消(忽略)别名方法

1) \rm oldboy.txt
2)/usr/bin/rm ./oldboy.txt.bak
`\which rm` /oldboy/tr.txt.bak ==> /usr/bin/rm /oldboy/tr.txt.bak
说明: 反引号表示将引号里面命令执行结果,交给引号外面命令进行使用
3) unalias rm

—18.4 临时修改别名

rm /oldboy -rf
提示: no use rm command
[root@linux ~]# alias |grep rm
alias rm='rm -i'
[root@linux ~]# alias rm='echo no use rm command'
[root@linux ~]# rm /oldboy/tr01.txt -f
no use rm command /oldboy/tr01.txt -f
[root@linux ~]# ll /oldboy/tr01.txt 
-rw-r--r-- 1 root root 7 Jan 11 15:38 /oldboy/tr01.txt

—18.5 永久修改别名

第一个历程: 编写别名配置文件(/etc/profile /etc/bashrc)
[root@linux ~]#vim /etc/profile 
[root@linux ~]#alias rm='echo no use rm command'

第二个历程: 让配置文件加载生效
1) 重新连接
2) source /etc/profile
第三个历程: 检查别名设置信息
[root@linux ~]# alias|grep rm
alias rm='rm -i'
设置未成功

第四个历程: 检查家规文件的配置(~/.bashrc ~/.bash_profile)
[root@linux ~]#cat ~/.bashrc 
alias rm='rm -i'
#alias rm='rm -i' --- 将家规配置进行注释

第五个历程: 让家规配置生效
1) 重新连接
2) source ~/.bashrc
第六个历程: 最后确认检查
[root@linux ~]#alias rm
alias rm='echo no use rm command'
测试:
[root@linux ~]#rm /etc/hosts
no use rm command /etc/hosts
设置成功

 

赞(1)
MySQL学习笔记 » 第3章:Linux系统目录结构