软件运行和编译
动态和静态链接
ldd /bin/ls 查看ls所依赖的共享库
删除库文件可能会对很多程序造成无法运行的影响
java 程序运行的流程
在/misc/cd/Packages 下面 统计有几种架构以及每种架构的包的个数
ls /misc/cd/Packages/*.rpm | rev | cut -d. -f2 | rev | sort | uniq -c
rev 的效果是这样的
原来是 cat
加上rev变成
tac
rpm 无法解决在安装包的时候产生的依赖问题,以及循环依赖
rpm包管理
rpm -q 包名
查询包是否已安装
利用rpm安装包的相关信息存储在/var/lib/rpm这个数据库里
rpm -e 卸载包
rpm -ql 包 查看包里包含哪些文件
rpm -qf file 查询文件来自哪个包
rpm -qi 包 查看包的相关信息
包查询
rpm -q --scripts
查看包里都有什么脚本
包校验
配置yum时:repodata是仓库所在路径
centos7 配置yum仓库
vim /etc/yum.conf
第一行 $basearch 表示cpu架构
$releasever 代表操作系统的发行版本的主版本号
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak/
yum repolist 查看有哪些仓库
在仓库的配置文件里加上enabled=0 即禁用此仓库
yum install 安装包,自动把依赖的包下载
/var/log/yum.log yum安装的日志
yum remove xxx 卸载包(通过这种方式卸载 是单个包卸载,并没有把安装时所依赖的包卸载)
yum history 查看yum安装历史
yum history undo 2 撤销编号2的命令 (即卸载安装的5个包,这种方式卸载的最干净)
yum info 包名 查看包的描述信息
yum clean all 清除yum缓存
挂载神奇的文件夹 安装autofs
systemctl start autofs systemctl enable autofs
搭建企业内部yum仓库
1 cd /etc/yum.repos.d/
2 mkdir bak
3 mv *.repo bak/
4 安装autofs
5 systemctl start autofs
6 systemctl enable autofs
7 vim base.repo
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
8 yum repolist
9 yum install httpd
10 systemctl start httpd
11 systemctl enbale httpd
12 systemctl stop firewalld
13 systemctl disable firewalld
14 自定义页面 cd /var/www/html
vim index.html
<h1> welcome to mage </h1>
15 在/var/www/html目录里面执行mkdir -p centos/{6,7}/os/x86_64/
16 mount /dev/cdrom /var/www/html/centos/7/os/x86_64/
http://192.168.38.7/centos/7/os/x86_64/
添加光盘之后,需要执行
echo ' - - -' > /sys/class/scsi_host/host2/scan
echo '- - - ' > /sys/class/scsi_host/host0/scan
yum search xx 搜索软件包
dnf
编译安装
yum仓库的元数据体现为repodata这个目录
createrepo 根据某个目录里面的rpm包分析他们之间的依赖关系,
然后生成repodata
repodata的目录在哪里,仓库的路径就是什么
程序包编译
为什么需要自定义编译安装?
可以选择安装路径,并且可以根据
企业需求定制特性
configure的目的就是为了生成Makefile(里面包含了安装路径和指定的特性)
在编译安装的时候,经常会遇到缺少其他软件包的时候,解决方法是:yum search/provides 缺少的软件包
在搜索的列表里面一般选择安装
xxxx.devel这个软件包
源码编译安装httpd-2.4.26
1 安装必要的依赖 yum install gcc apr-devel apr-util-devel pcre-devel openssl-devel -y
2 解包
3 tar xvf httpd-2.4.25.tar.bz2 -C /usr/local/src
解压缩到/usr/local/src
4 进入解压缩的目录 (切记)
cd /usr/local/src/httpd-2.4.25
5 ./configure --prefix=/apps/httpd24 --sysconfdir=/etc/httpd24/
--enable-ssl --disable-auth-basic
6 make && make install
从4-6 的操作一直是在/usr/local/httpd-2.4.26里面
7 vim /etc/profile.d/env.sh
PATH=/apps/httpd24/bin:$PATH
. /etc/profile.d/env.sh
8 apachectl start
9 页面默认在 /apps/httpd24/htdocs里面
最小化安装建议安装的软件包
dpkg 管理软件包
apt 管理工具
磁盘存储和文件系统
区位记录磁盘扇区结构
数据被放在外圈(外磁道)读取速度快
磁盘存储术语
柱面:
多块盘片的同一磁道所构成的空心的圆柱即为柱面(一张盘片有上下两面)磁道从外到内依次为0,1,2,3,4...递增编号。柱面和磁道数是相等的。
一个扇区是512字节 在计算柱面的大小的时候,磁头的个数等于盘面的个数(一片磁盘有正反两面)
分区
最大只能管理2T的磁盘空间
mbr 分区结构
bios和uefi区别
parted 命令
fdisk 命令
使用fdisk 创建的分区表是在硬盘上的,内存里并没有读取到硬盘上的分区表,需要同步
centos7 partprobe
centos6 partx -a /dev/sdx (增加分区生效)
partx -d /dev/sdx (删除分区生效)
centos6手工创建的文件系统默认没有acl 需手动添加
tune2fs -o acl /dev/xxx (针对ext系列文件系统)
tune2fs -l /dev/xxx 查看就出现acl
centos7 没有此缺陷
fsck只是修复文件系统,并没有恢复数据
挂载点的文件夹通常是空的
一个文件夹只能挂载一个设备
一个设备允许挂多个文件夹
cat /proc/filesystems 查看系统支持得文件系统
创建文件系统
文件系统标签
blkid 查看各个分区的属性信息
lsmod 查看系统内存中加载的模块
模块在内存中是动态加载的,需要时才加载,节省内存
df -T 查看各分区的问价系统类型
umount /data 把挂载到/data目录的设备卸载
mkfs.ext4 -L /data/mysql /dev/sda6
为/dev/sda6 创建文件系统 并且设置个标签 /data/mysql
一个分区有分区名,卷标名,还有UUID,但是不建议使用分区名,因为分区名容易发生改变,不稳定,最好使用UUID,唯一不变
每个文件占用的空间最少4k(一般来说一块是4k,但是可以修改块的大小),即使这个文件1k
每个文件都有元数据,每个文件的元数据对应的就是inode
由于inode也占用空间,那么每个inode的大小影响ionde的总数量
系统默认会有ionde的总数量,
这个值 限制了创建文件的总数量
mkfs.ext4 -i xx /dev/sdb1
指定每个inode xx 字节大小
每个文件最小也占用一个块 ,所以分配过多的inode没有用,合理分配就是inode数量和块的数量一致
blkid -L /data/mysql 查找卷标是/data/mysql 的分区
blkid -U xxxx 查找UUID对应的分区
tune2fs -l /dev/sda6
用来查看ext系列文件系统的各分区的相关信息
xfs_info /dev/xx
查看 xfs文件系统的相关信息
创建分区之后,必须挂载才能使用
卸载有个前提,当目录正在被访问,无法卸载
lsof 可以查看谁在使用此目录
fuser -v xx 也可以查看谁在用此目录
fuser -km /data/html 把使用此目录的用户踢出去
之后就可以取消挂载了
可以对文件创建文件系统
利用blkid 加上文件的路径来查看文件的UUID,文件系统类型
这样就把此文件当成分区来使用
把文件挂载到某个目录下,往目录写内容相当于往文件里写
当把一个文件挂载到某个目录的时候,使用df查看的时候,显示的不是文件,而是/dev/loopx 把文件映射成/dev/loopx
losetup -a 可以查看 文件和设备的对应关系
mknod /dev/loop8 b 7 8
创建一个硬件设备 /dev/loop8 块设备 主号7 序号8
mount /aaa /bbb -B
把目录aaa 挂载到bbb目录
挂载成功以后,目录里内容完全一致
利用mount 查看挂载关系
mount
cat /proc/mounts 查看所有挂载关系
mount -o rw.remount /mnt/sda6
以读写重新挂载
findmnt 目录 查看目录是否已挂载
普通用户没有权限挂载
通过命令挂载的都是临时挂载
挂载配置文件
mount -o rw.remount / 重新挂载根(读写权限)
swap
挂载swap
常用工具
dd
dd 备份mbr
读fileA 写入fileB 大小是128字节
从fileA的第64个字节开始读 从fileB的第32个开始写入 ,conv=notrunc是指如果插入到fileB的地方后面有内容,不删除。不加conv=notrunc会把后面的内容全部冲掉
raid
raid的功能:提高IO能力,并且实现容错
raid 0多块硬盘组合成raid0,要求每块参与组合的硬盘取相同的空间(比如4块硬盘 第一块1G 第二块2G 第三块3G 第四块4G 组成成raid0 是1G)
系统启动之后只能看到一块硬盘
raid1 (两块硬盘互为备份)
raid1 磁盘利用率50% 至少两块硬盘
读性能提升
raid1 两块硬盘完全同步(同时创建,同时删除)raid1 是防止硬件损坏,不能防止人为删除
raid4 多块数据盘异或运算值存于专用校验盘 有容错 只能防一块硬盘损坏 缺陷 校验盘经常损坏
至少3块硬盘
raid4 的磁盘利用率 n-1/n
raid5
读写性能提升
至少3块硬盘实现
raid 6
最少需要4块硬盘 最多允许2块硬盘损坏 磁盘利用率n-2/n
raid10
raid 01
raid01 和raid10 磁盘利用率都是50%