# Linux第十天
“`bash
rpm -qf ….
“`
“`bash
yum provides ….
“`
批量编译
C,C++:make项目管理器
configure脚本–》makefile.in–》makefile
makefile.in是模板文件
makefile中记录了将来的程序路径
java:maven
我们需要告诉configure脚本哪些功能启用,哪些功能不启用
## C语言源代码编译安装三步骤:
##### 1.、configure
+ 1,通过选项传递参数,指定启用特性,安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
+ 2.检查依赖到的外部环境, 如依赖的软件包
##### 2.make 根据makefile文件,构建应用程序
##### 3.make install复制文件到相应路径
#### 开发工具:
autoconf:生成configure脚本
automake:生成makefile.in
注意:安装前查看install,readme
建议建立一个src文件夹放源
./configure下:–prefix=PREFIX(放在哪个文件夹里面)
“`bash
make -j 4 开启四个cpu同时编译
“`
“`bash
/etc/profile.d/env.sh添加:
PATH=/app/bin:$PATH
“`
很多大软件使用源码编译
centos6安装2.2httpd
centos7安装2.4httpd
centos6.2在185天的时候会自动重启
### centos6编译过程复习:
“`bash
preparation:
c6:
service iptables off
chkconfig iptables off
setenforce 0
c7:
systemctl stop firewalld;systemctl disable firewalld
关闭selinux
setenforce 0
vim /etc/selinux/config
SELINUX=diabled
yum groupinstall “development tools”
yum install -y openssl-devel
download src
tar xfv
cd httpd-….
cat README,INSTALL….
./configure –help
./configure –prefix…. –sysconfdir…–enable…
make -j 4 && make install (&& echo -e “\a”)
vim /etc/profile.d/env.sh
(add PATH)
touch /etc/profile.d/env.sh
echo ‘PATH=/app/bin:$PATH’ >> /etc/profile.d/env.sh
apachectl start
“`
作业:一键安装2.4.25httpd脚本(c7
一键安装脚本c6编译安装httpd2.2.34(容易)
升级:根据版本选择安装的内容
代码如下:
“`shell
#!/bin/bash
#
#********************************************************************
#Author: JacobAustin Chen(7)
#QQ: 356303202
#Date: 2018-04-21
#FileName: autoinstallhttpd.sh
#URL: http://jacobchenblog.wordpress.com
#Description: I love sh more than yesterday!
#Copyright (C): 2018 All rights reserved
#********************************************************************
#作业:一键安装2.4httpd脚本(c7
#一键安装脚本c6编译安装httpd2.34(容易)
#升级:根据版本选择安装的内容
echo “For shutting down selinux when start up, you should modify the config file!”
iptables -F
setenforce 0
lsb_release -a >> /dev/null
[ $? -ne 0 ] && echo “pls install lsb firstly!” && exit 1
wget -V
[ $? -ne 0 ] && echo “pls install wget firstly!” && exit 1
ver0=`lsb_release -a | head -4 | tail -1 | tr -s ” ” | sed -r “s/Release:[[:space:]]*//” `
ver=${ver0:0:1}
#To judge if the system version is 6 or 7
if [ $ver -eq 6 ] ; then
#shutdown firewalls
chkconfig iptables off
yum groupinstall “development tools”
yum install -y openssl-devel
wget http://archive.apache.org/dist/httpd/httpd-2.2.34.tar.bz2
tar xvjf httpd-2.2.34.tar.bz2
cd ./httpd-2.2.34/
./configure –prefix=/app –sysconfdir=/etc/httpd2 –enable-ssl
make -j 2 && make install && echo -e “\a” && sleep 1 && echo -e “\a”
touch /etc/profile.d/env.sh
echo ‘PATH=/app/bin:$PATH’ >> /etc/profile.d/env.sh
source /etc/profile.d/env.sh
apachectl start
elif [ $ver -eq 7 ] ; then
#shutdown firewalls
systemctl disable firewalld
yum groupinstall “development tools”
yum install -y openssl-devel
#download tar.bz2
wget http://archive.apache.org/dist/httpd/httpd-2.4.25.tar.bz2
tar xvf httpd-2.4.25.tar.bz2
cd httpd-2.4.25/
./configure –prefix=/app –sysconfdir=/etc/httpd2 –enable-ssl
make -j 2 && make install && echo -e “\a” && sleep 1 && echo -e “\a”
touch /etc/profile.d/env.sh
echo ‘PATH=/app/bin:$PATH’ >> /etc/profile.d/env.sh
source /etc/profile.d/env.sh
apachectl start
else
echo “Error!”
fi
“`
搭一个服务器,在脚本中带上源码地址命令
“`bash
curl http://testsrv/install.sh | bash
“`
导入man帮助文件:
在man conf中写入路径地址
## 重点:rpm,yum,源码编译
## 磁盘存储和文件
默认设备文件都在/dev下
c打头的:字符文件
块设备:block,存取单位“块”,磁盘
字符设备:Char,存取单位“字符”,键盘
设备(b或c文件类型)号码:
主设备号:major number,标识设备类型
次设备号:minor number,标识
如果cp sda,则是复制硬盘中的文件,如果要复制设备,需要加上-a
“`bash
mknod /data/sdA b 8 1
创建设备文件,并写下设备号
“`
在linux中,插入硬盘,硬盘有很多接口类别:IDE,SCSI,SATA,SAS.USB
速度各不相同
6Gbps=~750MB/s
rhel5中把ide硬盘命名为hd*
centos6开始所有硬盘都叫sd*
硬盘磁盘:外圈是0磁道,内圈越来越大
每个扇区的数据容量是512字节
ZBR:内圈放的扇区数和外圈放的扇区数不一样,但不便于计算,用软件计算的时候还是和非ZBR类似
磁头数=盘面数=盘片数*2
—
**磁头head**
磁道track,正面反面都有,一个盘片有两个同磁道数的磁道,次要关注
**扇区 sector**
**柱面 cylinder**
**磁盘三围:CHS(8G以内可以依靠这个标准)**
一个磁道里面有多少个扇区?
一个磁道里面消耗6bit来存放扇区个数(64个)
8bit –>head (256)
10bit–》track–》cylinder
24位寻址技术(6+10+8)
“`
512*63*1024*255=8GB
“`
### LBA=logical block addressing(超过8G必须使用这个标准),最大128PB
目前最大的硬盘容量还是TB单位
##### 使用磁盘
1.分区
2.创建文件系统:格式化
3.挂载:分配目录名
如果不执行以上步骤,只能放二进制
##### 具体如何实现三大步?
##### 磁盘分区
为什么分区
1.优化IO性能
2.实现磁盘空间配额限制
3.提高修复速度
4.隔离系统和程序
5.安装多个OS
6.采用不同文件系统
分区:8M的整数倍
GPT分区可以超越主分区+逻辑分区<=4的限制
BIOS+MBR
UEFI+GPT
#### 管理分区
“`bash
lsblk 列出块设备
gdisk 创建gpt分区
fdisk 创建mbr分区
parted 高级(实时生效
partprobe
“`
RHCE的坑:记得跳过硬盘分区的扇区缝
注意用fdisk分区的名字不稳定,尽可能在配置文件中不要写分区名,
**centos5,7可以用partedprobe同步硬件软件的分区表**
**centos6使用partedprobe可能出现bug**
centos6可以使用
使用partx -a ….在增加分区的时候使用
使用partx -d –nr (6-8) …. 在减少分区的时候使用
centos6中,fdisk记得增加和减少分区的时候分开操作/同步!
工作中不要随意重启!
****
fdisk看的是硬盘分区表,lsblk和cat /proc/partitions 查看的是内存中的分区表
id的修改可以看做是注释,但最好修改以示严谨
区别文件的最终基准看i node
windows本用户加密过的文件只有本机本用户才能打开(ntfs系统
windows还有压缩
支持的文件系统列表
“`bash
/lib/module/`uanme -r`/kernel/fs
“`
RAW文件系统:没有文件系统,只有二进制,性能卓越,但难以迁移和管理
cache:针对读操作
buffer:针对写操作
mkfs -t ext4 /dev/sdb1 ( centos6)
或mkfs.ext4 ….
uuidgen:生成uuid
blkid不关心块挂载与否
df 只显示已经挂载上的设备
vfat不支持权限和所属用户/组
tune2fs -l … 列出文件系统属性
tune2fs -o …
tune2fs 不适用于xfs
centos7手工创建的分区会默认加上ACL
win:簇;linux:块
文件所占据的最小单位
为了性能好,大块,如果都是小文件,小块(看具体情况
# 今天:编译,分区管理
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96869