压缩解压缩
压缩格式:gz bz2 xz zip z
压缩算法,算法不同,压缩比也不同
compress: filename.Z
uncompress:
不能压缩文件夹,会将文件夹内的文件单个压缩
gzip: .gz
gzip filename 压缩完成后删除源文件
gzip -d 等于 gunzip
-#: 1-9 指定压缩比 默认为6
gunzip:
gunzip filename
zcat 临时查看压缩的文本文件不解压
bzip2: .bz2
比gzip 有更大的压缩比
使用格式相同
bzip2 filename
-d -# 都有
-k 可以保留源文件
bunzip2 :同理解压
bzcat :
xz: .xz 同上
unxz 解压
xzcat
xzdec 解压
zip: zip 压缩后的文件名 压缩的路径
可以压缩文件夹,压缩后不删除源文件
archive:归档 归档本身不意味着压缩
unzip :解压
tar:归档工具
-c:创建归档
-f file.tar :操作的归档文件
-x :展开归档
--xattrs 归档同时保留其扩展属性信息
-t: 不展开归档查看内部文件
-zxf:解压归档 调用gzip
-zcf:压缩归档 调用gzip
-jcf 调用bzip2
-jxf
-Jcf 调用xz
-Jxf
-z -j -J 在解压时可以省略,压缩时不可以
cpio:归档工具
read:
-p 给出提示
-t 超时时间
while 循环:
适用于循环的次数未知的场景,要有退出条件
语法:
while 条件 ;do
运行命令
done
使用颜色控制字体
echo -e \033[x;y;zm显示文字\033[
x 字体
y 前景色
z 背景色
64,32
/lib
/lib32
IDE 133Mbps 并行
SATA 300M 600M 6G 串行
USB 3 480M 串行
SCSI SMALL COMPUTER SYSTEM INTERFACE 320M 并行总结
SAS 2.5英寸 串行
RAID:
级别,仅代表磁盘组织方式不同,没有上下之分
条带:0
性能提升,读写
冗余能力没有
空间利用 n
至少2块
镜像:1
写性能下降,读性能上升
有冗余能力
空间利用 n/2
至少2块
效验码:4 盘1,盘2,盘3 盘6,坏一块(1-3)都可以用盘6来-去好的
轮流校验码 :5 轮流校验码存储位置
读写都提升
有冗余能力
空间利用 (n-1)/n
至少3块
1+0:先条带再镜像
至少4块
0+1:先镜像再条带
至少4块
JOBD:简单增加多块硬盘
无性能提升
无冗余能力
空间利用n
至少2块
MD multi dsiks 模拟一个RAID
逻辑RAID
/dev/md#
mdadm:任何块设备做成RAID
模式化命令
创建模式
-C
专用选项:
-l:级别
-n:设备个数
-a:yes/no 自动创建设备文件
-c:指定数据块chunk大小 默认64KB
-x:指定空间盘个数
管理模式
--add,--remove,--fail
监控模式
-F
增长模式
-G
装配模式
-A
-D --detail 查看RAID 的详细信息
停止整列
-S --stop
将当前RAID 信息保存至配置文件
mdadm -D --scan > /etc/mdadm.conf
以后装配就用 mdadm -A /dev/md#
watch 周期性地执行指定命令,并以全屏方式显示结果
-n 指定周期长度,默认单位为秒,默认2秒
watch -n '命令'
lsmod 列出内核模块
mdadm 用户空间工具
MD:MULTI DEVICE 多设备
DM:device mapper 设备映射
逻辑设备
lvm2
快照
多路径
vgcreate vgname 设备
-s : pe 的大小,默认为4mb
lvcreate -n lv name -L 空间大小 vg name
扩展逻辑卷
lvextend
-L 大小 逻辑卷
resize2fs
resize2fs2fs 逻辑卷 扩展到大小
-p 与物理边界一样大小
缩减逻辑卷
resize2fs 逻辑卷 缩减到大小
不能在线缩减,先要卸载
确保缩减后的空间大小依然能存储原有数据
在缩减之前应先强直检查文件,以确保文件系统一致性状态
lvreduce -L 大小 逻辑卷
再挂载
快照卷
生命周期为整个数据时长,这段时间内,数据的增长不能超出快照卷大小
快照卷只读
跟原卷在同一卷组内
lvcreate
-s 快照卷
-p r|w 权限
lvcreate -s -L 大小 -n 逻辑卷名 -p r /路径
until = !while
until who | grep "hadoop" >> /dev/null ;do
sleep 5
done
echo "hadoop is logged in"
for ((变量赋值;变量范围;变量变化)); do
循环操作
done
ping
-c 次数
-w 超时时间
awk 条件 {动作}
df -h | awk '{print $1}' awk -F 分隔符 '{print $字段序号}'
$NF是最后一个字段 ,NF是字段个数
-F 后跟分隔符匹配
CSMA/CD carrier sense multi access colision detection
载波侦听多路访问冲突检测
socket 套接字 ip与port 绑定
三次握手 四次断开 tcp 有限状态集
A 三次握手建立TCP连接 B
1.发送 SYN=1,SN=100
2.接受 SYN=1,ACK=1,AN=101,SN=300
3.发送 ACK=1,SN=101,AN=301
A 四次断开TCP连接 B
1.发送 FIN=1,
2.
3.
4.CLOSED
主机接入网络
ip
mask
gateway
hostname
dns
route
dhcp:dynamie host configuration protocol
169.254.x.x 自动地址
linux 网络属于内核功能
lo:本地回环
eth{0-9}:以太网卡
ppp{0-9}:点对点
5.8 /etc/modprobe.conf
alias
6.0 /etc/udev/rules.d/70-persistent-net.rules
ifconfig
-a 显示所有接口的配置信息
ifconfig eth{0-9} ip/mask up|down
配置立即生效,但重启后失效
网络服务:
5.8 /etc/init.d/network start|stop|restart|status
6 /etc/init.d/networkmanager 同上
网关
route
add 添加
-host 主机
-net 网络
-net 0.0.0.0 默认路由
route add -net 网络 gw 下一跳地址
route add -net default gw 下一条地址
del 删除
同上
route del -net 0.0.0.0
route -n 以数字方式显示主机信息
网络配置文件
/etc/sysconfig/network
网卡配置文件
/etc/sysconfig/network-scripts/icfg-eth{0-9}
DEVICE=关联的设备名称,要与文件名的后半部保持一致
BOOTPROTO={static|none|dchp|bootp}:引导协议,
静态 动态
IPADDR IP地址
NETMASK 子网掩码
GATEWAY 网关
ONBOOT 自动启用
HWADDR mac地址与硬件一致
USERCTL {YES|NO} 是否允许普通用户控制接口
PEERDNS {YES|NO} 是否接受DHCP中DNS的配置信息
不会立即生效,保证永久有效
路由配置文件
/etc/sysconfig/network-scripts/route-eth{0-9}
添加格式
格式,1
DEST via NEXTHOP
格式,2
ADDRESS0=
NETMASK0=
GATEWAY0=
ADDRESS1=
NETMASK1=
GATEWAY1=
DNS服务器指定 最多3个
/etc/resolv.conf
nameserver ip
本地地址解析
/etc/hosts
主机IP 主机名称 主机别名
配置主机名
hostname 名字
立即生效,重启失效
/etc/sysconfig/network
HOSTNAME=
永久有效
使用setup 设置效果一样,需要重启
ifconfig 老旧命令
iproute2
ip
link:配置网卡属性
ip -s link show 限时统计信息
ip link set 设备 状态
addr:协议地址
ip addr add 地址 dev 设备
ip addr del 地址 dev 设备
ip addr show
route:路由
tc 流量控制
一个网卡多个地址
网络设备可以别名
别名不能使用DHCP
ifconfig eth0:0
/etc/sysconfig/network-scripts/icfg-eth{0-9}:{0-9}
DEVICE=eth{0-9}{0-9}
程序组成
二进制文件 /bin,/sbin
库 /lib
配置文件 /etc
帮助文件 /usr/share/man
/etc,/bin,/sbin,/lib
都是系统启动需要用到的目录程序,不能单独挂载额外分区
必须在根分区上
/usr/
/bin
/sbin
/lib
操作系统的核心功能
可以单独分区
/usr/local
/bin
/sbin
/lib
/etc
/man
用户使用的第三方软件
/opt
早期第三方软件安装位置
/proc
/sys
不能单独分区,内核自我管理
/dev
设备,也不能单独分区
udev
/home 用户数据目录
推荐单独分区
/root 管理员家目录,么必要单独分区
/var 有了他系统管理更加规范
日志信息,和运行信息,推荐单独分区,日积月累越来越大
/boot :内核 initrd {initramfs} 只要能被找到就行,推荐单独分区
POST ---BIOS ----MBR (BOOTLOADER)--- 找到磁盘上的内核 ---- 找根的位置
软件包安装器
打包成一个文件:二进制文件,库文件,配置文件,帮助文件
生成数据库:追踪所安装的每一个软件
1,制作软件包
2,安装卸载升级查询校验
redhat suse :rpm
redhat package manager
rpm is package manager
redhat和suse 不能混用
debian :dpt
依赖关系:
前端工具:yum,apt-get
后端工具:rpm,dpt
yum:yellowdog update modifier
rpm 命令:
rpm:
/var/lib/rpm
rpmbulid:
安装,卸载,升级,查询,校验,数据库重建,验证数据包,
rpm命名:
包组成:
主包:
bind-版本
子包:
bind-libs
bind-utils
包名
包名格式:
名称-版本-发行号.架构.平台.rpm
bind-major.minor.release-release.arch.rpm
第一个release是发行号,第二个release是rpm包制作者修订用
主版本号:重大改进
次版本号:某个子功能发生重大变化
发行号:修改了部分bug,调整了一些功能
noarch 没有针对版本
umame -a 查看内核版本
rpm包:
二进制格式:直接使用,多数使用
源码格式:需要编译
rpm :
1,安装:
rpm -i 路径/文件名
-h 已#显示安装进读,50个#,每个2%
-v 详细过程
-vv 更详细
rpm -ivh 常用
--nodeps:忽略依赖关系,可以安装但是无法正常使用
--replacepkgs:重新安装,替换原有安装
--force:重装,覆盖,降级 强行安装
--test 测试安装
2,查询:
rpm -q 包名 : 查询指定包
-qa: 查询所有已经安装的包
-qi: 查询指定包的说明信息
-ql:查询指定包安装后生成的文件列表
-qc:查询指定包的配置文件
-qd:查询指定包的安装帮助文件
-qf 查询指定文件是由那个rpm包安装生成的
-q --scripts 查询指定包中的脚本
如果某RPM未安装,希望查询
-qpi
-qpa
同上
3,升级:
rpm -Uvh 如果有老版本的则升级,否则安装
-Fvh 如果有老版本的则升级,否则退出
rpm -Uvh --oldpackage 包名 降级安装包
4,卸载
rpm -e 包名
--nodeps
5,校验
rpm -V 包名
6,重建数据库
rpm
--rebuliddb 重建数据库,一定会重建
--initdb 初始化数据库,没有才建立,有就不建建立
7,校验来源合法性,及软件完整性
ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K 包名
dsa,gpg 验证来源合法性
sha1,md5 验证软件包的完整性
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
导入redhat的秘钥
HTML HYPERTEXT MARK LANGUAGGE
XML EXTENDED MARK LANGUAGGE
XML,JSON 半结构化数据
yum仓库中的元数据文件
primary.xml.gz
所有rpm包的列表:
依赖关系
每个rpm生成的文件列表
filelist.xml.gz
当前仓库RPM包的所有文件列表
other.xml.gz
额外信息,rpm修改日志
repomd.xml
记录以上上个文件的时间戳和校验和
comps 开头的.xml
rpm包的分组信息
为yum定义repo /etc/yum.repos.d/ 以.repo结尾的文件
[标示ID]
name= 名称
baseurl= 仓库路径
ftp://
http://
file:///
enable= 是否可用
gpgcheck= 检查签名完整性
gpgkey= 检查的秘钥位置
yum
list:列表
all 全部
available 可用
installed 已装
updates 可用更新
clean:清理缓存
repolist:显示repoe列表
install:
-y 自动回复yes
--nogpgcheck 无检查完整性
update:
升级到最新版本
update to:
升级到指定版本
remove|erase:
卸载
info :信息
provides:
查看指定文件或特性是那个yum安装的
groupinstall:
grouplist
groupinfo
createrepo 手动建立yum仓库时需要使用
在指定目录中建立repodata
还需要复制 XML文件
rpm 安装
二进制格式
源程序---编译----二进制格式
有些特性是编译选定的,如果编译未选定此特性,将无法使用
rpm包的版本落后于源码包,甚至落后很多
定制:手动编译安装
编译环境,开发环境
开发库,开发工具
linux :c
gun :c
C环境,c++,
gcc:编译器
g++:
make:项目管理工具
makefile:定义了make (gcc,g++) 按何种次序去编译源文件的程序
automake,创建---makefile.in
autoconf,创建---configure
以上两者结合成makefile
make install
perl+java,python
编译安装三步骤
前提:准备开发环境{编译环境}
安装 Development Tools 和 development libraries
先用tar 解压二进制程序包
cd
./configure (让用户选择编译特性,检查编译环境)
使用 configure --help 查看选项
使用 configure --prefix 指定安装目录
--sysconfdir 指定安装的配置目录
在安装目录中用 make 确认安装
再输入 make install
1,修改PATH环境变量,以能够识别次程序的二进制文件路径
1.修改/etc/profile
2.或者在/etc/profile.d 目录中 建立以.SH为名称后缀的文件
在里面定义export PATH=$PATH:/路径
2,默认情况下,系统搜索库文件的路径/lib,/usr/lib,要额外添加搜索路径
在/etc/ld.so.conf.d/中创建以.conf为后缀命名的文件,而后把要增添的路径直接写入次文件
ldconfig:重新搜索库文件
-v:显示重新搜索的过程
3,头文件(库调用的参数标准相关信息):输出给系统,
默认:/usr/include
添加头文件搜索路径,使用链接进行
/usr/local/tengine/include/ /usr/include/
第一种 ln -s /usr/local/tengine/include} 从左向右最后一次匹配 / 删除
acpid
echo ${file#*.} 从左向右第一次匹配 . 删除
d/acpid
echo ${file##*3 * * * * 每3分钟一次
每2小时执行一次
0 */2 * * *
每2天执行一次
0 0 */2 * *
执行结果将以邮件形式发送给管理员
*/3 * * * * cat /etc/fstab &> /dev/null
cron的环境变量:执行的所有命令都去PATH环境变量指定的路径下找
PATH /bin /sbin /usr/bin /usrsbin
管理用户任务
crontab
-l:查看
-e:编辑
-r:移除所有任务
-u:用户名 -e 管理其他用户的cron任务
移除一个任务,打开编辑删除即可
anacron:
/etc/anacrontab
第一项 第二项 第三项 第四项
多少天么运行 开机后多少时间运行 注释 命令
使用时需确保 crond service 开启
make acrh/
arch/x86/boot/bzImage 编译好的内核文件存放位置
硬件驱动:initrd
initrd:仅需提供访问真正根文件系统所在设备的驱动
存储设备和文件系统相关的模块
系统初始化rc.sysinit:提供其他硬件的驱动:
ROOTFS:busybox 的INIT 不支持运行级别
/etc/inittab 格式也不尽相同