Linux学习笔记(二)

Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令、操作传递给操作系统底层
一般分为:图形化Shell(GUI)、命令行Shell(CLI)

Linux中一般默认GUI为:GNOME,默认CLI为:BASH

BASH提示符以#或$起始,#代表当前用户为root用户,$代表当前用户为普通用户

通过 history命令可以查看以往操作的命令
可以通过 ctrl + r 来对历史记录进行搜索查询

命令后追加一个&,可以将该命令放入后台运行
通过以下命令可以管理后台作业:
jobs  显示后台作业
fg    将后台作业调到前台执行
bg    继续执行一个后台作业


Linux系统目录架构
/dev     存放设备文件
/boot    存放内核与启动程序相关文件
/lib      存放系统库文件
/bin      存放二进制文件(可执行命令)
/sbin    存放特权级二进制文件(特权级可执行命令)
/usr     一般存放安装程序
/var     一般存放经常变化的数据,如服务数据、日志文件等
/proc    只存在于内存中的文件系统,保存操作系统的实时信息
/home   用户家目录 
/root    特权用户(root)家目录
/opt 一般存放比较大型的软件


uptime命令:显示系统运行时间


MBR (Master Boot Record) 传统的分区机制,应用于大多数使用BIOS的PC设备
1. 支持32bit和64bit系统
2. 支持分区数量有限
3. 只支持不超过2T的硬盘,超过2T的硬盘只能使用2T空间。

占用硬盘开头的512字节

主分区,最多创建4个主分区
扩展分区,一个扩展分区会占用一个主分区位置
逻辑分区,Linux最多支持63个IDE分区和15个SCSI分区

GPT(GUID Partition Table) 是一个较新的分区机制
      1. 支持超过2T的磁盘
      2. 向后兼容MBR
      3. 必须在支持UEFI的硬件上才能使用
      4. 必须使用64bit系统
      5. Mac、Linux、Win7 64bit、Win2008 64bit系统都能支持



fdisk是基于MBR的分区工具,如果使用GPT,则无法使用

fdisk命令只能具有超级用户权限才能运行
使用fdisk -l 可以列出所有安装的磁盘及其分区信息
使用fdisk /dev/sda可以对目标磁盘进行分区
分区之后需要使用 partprobe命令让内核更新分区信息,否则需要重启

/proc/partitions文件也可以用来查看分区信息

创建文件系统的过程又称之为 格式化

没有文件系统的设备又称之为 裸(raw)设备

常见的文件系统有fat32\NTFS\ext2\ext3\ext4\xfs\HFS等

文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等

mke2fs 创建文件系统
mke2fs -t ext4 /dev/sdb2

mkfs 比较简单的命令
mkfs.ext4 /dev/sdb1

dumpe2fs 查看分区的文件系统信息
dumpe2fs /dev/sdb1


JOURNAL日志
带日志的文件系统(ext3、ext4)拥有较强的稳定性,在出现错误时可以进行恢复。
使用带日志的文件系统,文件系统会使用一个叫做“ 两阶段提交”的方式进行磁盘操作,
当进行磁盘操作时,文件系统进行以下操作:
1) 文件将准备执行的事务的具体内容写入日志
2) 文件系统进行操作
3) 操作成功后,将事务的具体内容从日志中删除

优点: 当事务执行的时候如果发生意外,可以通过查询日志进行 恢复
缺点: 丧失一定的性能( 额外的日志读写操作)


e2lable 分区标签
e2lable /dev/sdb1 LINUXCAST


fsck用来检查并修复损坏的文件系统( 必须卸载umount)
fsck /dev/sdb1
-y 不提示直接进行修复
-t 如果文件系统损坏较为严重,指定文件系统类型
对于识别为文件的损坏数据,fsck会将该文件放入 lost+found 目录
系统启动时会对磁盘进行fsck操作


磁盘或分区创建好文件系统后,需要挂载到一个目录才能使用
通过 mount命令挂载
mount /dev/sdb1 /mnt
命令 umount用来卸载已挂载的文件系统
umount /dev/sdb1
umount /mnt
如果出现device is busy报错,则表示该文件系统正在被使用,无法卸载,
可以使用以下命令查看使用文件系统的进程:
fuser -m /mnt
也可使用命令lsof查看正在被使用的文件:
lsof /mnt


用户分为三种

      1. root用户 (ID为0的用户)
      2. 系统用户 (1-499,没有shell)
      3. 普通用户 (500以上)

与用户信息相关的三个文件

/etc/passwd  保存用户信息
/etc/shadow  保存用户密码(加密的)
/etc/group   保存组信息

查看当前用户的 三个命令
whoami显示当前用户
who显示有哪些用户已经登陆到系统
w显示有哪些用户已经登陆并且在干什么


/etc/skel
新建用户时将此目录的文件复制到用户的家目录中。


权限一般分为读、写、执行。
每个进程都是以某个用户的身份运行,所以 进程的权限与该用户的权限一样。


权限 对文件的影响 对目录的影响
r         可读取         可列出目录内容
w         可以修改         可在目录中创建删除文件
x         可作为命令运行 可以访问目录内容

目录必须拥有x权限,才能访问其内容

一般普通用户的默认 umask为002,root用户的默认umask是022
目录的默认权限是: 777-umask
文件的默认权限是: 666-umask


三个特殊权限
数字 权限 对文件的影响         对目录的影响
4         suid 以文件的所属用户身份执行
2         sgid 以文件所属组身份执行 在该目录中所创建的任意新文件的所属组与该目录中的所属组相同
1         sticky                         对目录拥有w权限的用户仅可以删除其拥有的文件,无法删除其他用户的文件

设置suid:  chmod u+s linuxcast.net
设置sgid:  chmod g+s linuxcast.net
设置sticky: chmod o+t linuxcast.net


数字表示: chmod 4755 linuxcast.net


网络部分:
IPv4地址的32bit分为网络部分和主机部分
通过 子网掩码来确定网络部分的位数
IP地址中相应子网掩码中为1的部分为网络部分

在不同网络之间传输数据的功能叫做 路由功能
一般有多个接口,连接到不同的网络中,并且通过路由表进行数据转发

使用 setup命令可以配置网络信息
配置完成后,使用 ifup启用网卡


网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件
/etc/resolv.conf
主机名配置文件
/etc/sysconfig/network
静态主机名配置文件
/etc/hosts


测试DNS解析
host www.baidu.com
dig www.baidu.com


追踪到达目标地址的网络路径
traceroute www.baidu.com

使用mtr进行网络质量测试
mtr www.baidu.com


网络故障排查遵循 从底层到高层、从自身到外部的流程进行
1. 先看网络配置信息是否正确
ip地址
子网掩码
网关
DNS
2. 查看到达网关是否连通
ping 网关IP地址
3. 查看DNS解析是否正常
host www.baidu.com


命令行shell的 数据流
名称         说明 编号 默认
STDIN         标准输入 0         键盘
STDOUT 标准输出 1         终端
STDERR 标准错误 2         终端


基于关键字的 搜索 grep
grep 'linux' /etc/passwd
find / -user linuxcast|grep Video

命令 cut用于基于列处理文本
cut -d: -f1 /etc/passwd
cut -c2-6 /etc/passwd  (显示从第2个到第6个字符)

命令 wc (wordcount) 用于统计文本信息
wc -l /etc/passwd

命令 sort用于对文本内容进行排序

命令sort -u 可以删除重复行
uniq删除相邻的重复行

命令 diff用于比较两个文件的区别

命令 tr (translate)用于处理文件内容
tr -d 'TMD' < linuxcast

命令 sed用于搜索并替换文本
sed 's/linux/unix/g' linuxcast



RPM验证,一般使用非对称加密算法
导入密钥
rpm --import RPM-GPG-KEY-Centos-6
验证rpm文件
rpm -K software.rpm
验证已安装的软件
rpm -V software

YUM是RPM的前端程序,主要目的是设计用来 自动解决RPM的依赖关系问题
yum配置文件必须以.repo结尾
yum search keyword 搜索包含关键词的软件包

创建yum仓库
1.将光盘中的rpm文件拷贝到一个目录中
2.通过rpm命令手工安装createrepo软件
3.运行命令 createrepo -v /rpm-directory
4.如果有分组信息,则在运行命令的时候使用-g参数指定分组文件
createrepo -g /tmp/*comps.xml /rpm-directory
  分组信息保存在光盘repodata目录下,文件名以comps.xml结尾的xml文件

yum clean all 清除缓存




Linux系统启动流程
1.BIOS (找到可启动设备后执行其引导代码)
2.MBR:Boot Code  (MBR共512字节,其中前446字节为引导代码)
3.执行引导程序-GRUB
相关文件保存在/boot/grub目录中
配置文件为/boot/grub/grub.conf
4.加载内核
内核保存在/boot/vmlinux-(version)
一般还会加载内核模块打包文件:/boot/initamfs-(version).img
命令dmesg可以查看本次启动时内核的启动信息,查看/var/log/dmesg文件内容
5.执行init
init是Linux系统中运行的第一个进程,是所有进程的父进程。
调用/etc/rd.d/rd.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务
通过/etc/inittab修改默认运行级别
每个级别启动的服务保存在/etc/rc[级别].d/目录中
6.runlevel
命令runlevel显示上一个及当前运行级别
init命令可以改变当前运行级别



initramfs文件:
Linux为了保持kernel的精简将一些不常用的驱动、功能编译为模块,
在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件。
initramfs是早期initrd的替代优化版本。





如何修改root密码
1.为内核传递参数“1”或“single”可进入单用户模式
a.在"倒数"界面按任意键进入菜单选择界面
b.选择需要启动的系统,按"e"进入编辑界面(如果GRUB有密码,按"p")
c.选择"kernel"的选项,按"e"编辑
b.在编辑界面中,输入“[空格] 1”,然后回车
d.按"b"重启
2.单用户模式下不启动任何服务,直接以root用户登录,并且不需要密码
3.使用passwd命令修改密码


GRUB加密
1.在grub.conf中的启动配置中加入如下参数
password --md5 "加密后的密码"
2.加密后的密码可以通过命令 grub-md5-crypt 生成





mii-tool查看网卡状态
ethtool可以查看网卡设置



IP别名
Linux支持在一个物理网卡上配置多个IP地址,用来实现类似子接口之类的功能
1. 关闭NetworkManager服务
service NetworkManager stop
chkconfig NetworkManager off
2. 在/etc/sysconfig/network-scripts/下添加别名配置文件:
文件名:ifcfg-eth0:0
内容:  DEVICE=eth0:0
IPADDR=10.1.1.1
PREFIX=24
ONPARENT=yes


多网卡绑定
Linux支持将多块物理网卡绑定为一个逻辑网卡,绑定后的逻辑网卡
可以并行使用组成其的所有物理网卡,用于提高带宽及稳定性。

绑定后物理网卡不在直接使用,IP地址配置在逻辑网卡上。

Linux支持以下的网卡绑定模式:
-模式0:平衡轮训(提高带宽)
-模式1:主动备份(提供稳定性)
-模式3:广播


1. 创建逻辑网卡的配置文件:
/etc/sysconfig/network-scripts/ifcfg-bond0

DEVICE=bond0
IPADDR=192.168.1.200
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimon=50"

2. 关闭网卡 ifdown eth0;ifdown eth1 ,
   修改每个属于该逻辑网卡的物理网卡的配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=no
MASTER=bond0
SLAVE=yes
USERCTL=no

3. bond0网卡添加驱动支持:
新建文件:/etc/modprobe.d/bonding.conf
内容:alias bond0 bonding


4. 重复网络服务: service network restart



Linux内核集成了网络访问控制功能,通过 netfilter模块实现
在用户层可以通过iptables程序对netfilter进行控制管理

iptables通过规则对数据进行访问控制
一个规则使用一行配置
规则按顺序排列
当收到、发出、转发数据包时,使用规则对数据包进行匹配, 按规则顺序进行逐条匹配
数据包按照第一个匹配上的规则执行动作


列出现有iptables规则:
iptables -L
service iptables status

删除所有iptables规则:
iptables -F

插入一个iptables规则:
iptables -I INPUT 3 -p tcp --dport 80 -s 192.168.1.0/24 -j DROP

删除一个iptables规则:
iptables -D INPUT 3
iptables -D INPUT  -p tcp --dport 80 -s 192.168.1.0/24 -j DROP

配置一个NAT伪装:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 
iptables规则保存在配置文件:
/etc/sysconfig/iptables
 
以下命令可以将当前iptables配置保存到配置文件中:
service iptables save



常见 远程管理工具:
- RDP协议,windows远程桌面管理
- telnet (内容明文传输)
- SSH (内容加密传输)
- RFB ,图形化远程管理协议, VNC使用的协议。


SSH2是现在广泛使用的ssh版本
ssh协议使用tcp协议,端口号22

绝大多数Linux版本均使用openssh作为SSH程序
SSH服务端默认启动,作为常驻服务运行
service sshd status

ssh信息保存在用户家目录的.ssh隐藏文件夹中


使用SSH的命令:
1. scp在两台计算机之间进行快速、加密的数据传输:
如:scp linuxcast.tar root@192.168.1.1:/root/
2. rsync命令在两台计算机之间同步文件


VNC SERVER
1. 安装 yum install -y tigervnc-server
2. 配置vnc服务 ,配置文件保存在 /etc/sysconfig/vncservers
VNCSERVERS="1:linuxcast 2:nash_su"
3. vnc需要单独的登录密码
su - linuxcast
vncpasswd
4. 启用vnc服务
service vncserver start
开放5901端口


现今Linux的服务管理体系沿用System V的服务管理体系。
每个服务的启动、结束、重启等操作由一个System V脚本控制。
通过编写Sys V脚本来手工创建一个有Sys V控制的服务。

命令service可以用来调用指定服务的Sys V服务,并执行指定动作
service 服务名 [start|stop|restart|status]

脚本保存在 /etc/rc.d/init.d/ 目录中


命令chkconfig设置服务是否需要开机启动
chkconfig httpd [on|off]

非常驻的 xinetd服务
rsync
tftp

安装: yum install xinetd
启动: 
chkconfig xinetd on
service xinetd start
chkconfig rsync on
配置: /etc/xinetd.conf
控制的服务的配置在/etc/xinetd.d/下与服务同名的文件转换




ACL允许针对不同用户、不同组对一个目标文件、文件夹进行权限设置。
不受UGO模型限制

ACL需要在挂载文件的时候打开ACL功能(根目录"/"默认已打开)
mount -o acl /dev/sda5 /mnt

查看一个档案的ACL设置:
getfacl linuxcast

针对一个用户对档案进行ACL设置
setfacl -m u:zack:rwx linuxcast

针对一个组对档案进行ACL设置
setfacl -m g:tech:r-x linuxcast

删除一个ACL设置
setfacl -x u:zack linuxcast




SELinux是一个内核级的安全机制,CentOS/RHEL默认开启。
两个基本概念:域(domain)和上下文(context)
域用来来对进程进行限制
上下文用来对系统资源进行限制


命令ps -Z 可查看进程的域
命令ls -Z 可查看文件的上下文

SELinux通过定义策略来控制哪些域可以访问哪些上下文
三种工作模式
-强制(enforcing)
违反策略的行为都被禁止
-允许(permissive)
返回策略的行为不被禁止,但会产生警告信息
-禁用(disabled)

配置文件: /etc/sysconfig/selinux

命令 getenforce查看当前SELinux工作状态
命令 setenforce 设置当前SELinux工作状态 setenforce [0|1]


LVM逻辑卷将底层物理硬盘抽象封装起来,大小可以动态调整,而且不会丢失现有数据

PE(physical extend): 物理扩展, 4M大小,LVM的最基本单元
PV(physical volume): 物理卷
VG(volume group)   : 卷组
LV(logical volume) : 逻辑卷

设备目录: /dev/vgname/lvname

1.物理磁盘被格式化为PV,空间被分为一个个PE
2.不同的PV加入同一个VG,不同PV的PE全部进入VG的PE池内
3.LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同物理磁盘
4.LV现在就直接可以格式化后挂载使用
5.LV的扩充缩减实际上就是增加或减少组成该LV的PE的数量。其过程不丢失数据。


创建LVM
1.将物理磁盘设备初始化为物理卷
pvcreate /dev/sdb /dev/sdc
2.创建卷组,并将PV加入卷组中
vgcreate linuxcast /dev/sdb /dev/sdc
3.基于卷组创建逻辑卷
lvcreate -n mylv -L 2G linuxcast
4.创建文件系统
mkfs.ext4 /dev/linuxcast/mylv
5.挂载使用
mount /dev/linuxcast/mylv /mnt

查看LVM相关信息
pvdisplay
vgdisplay
lvdisplay

删除LVM
1.删除LV
lvremove /dev/linuxcast/mylv
2.删除VG
vgremove linuxcast
3.删除PV
pvremove /dev/sdb
pvremove /dev/sdc


拉伸\扩充逻辑卷(可以在线执行,不需要卸载)
1.保证VG中有足够的空闲空间
vgdisplay
2.扩充逻辑卷
lvextend -L +5G /dev/linuxcast/mylv
3.查看扩充后LV大小
lvdisplay
4.更新文件系统
resize2fs /dev/linuxcast/mylv
5.查看更新后文件系统
df -h

扩充卷组
1.将磁盘格式化为PV
pvcreate /dev/sdd
2.将新的PV加入VG
vgextend linuxcast /dev/sdd



RAID
廉价磁盘冗余阵列技术是通过多磁盘并行运行来提高计算机的存储IO性能。

RAID级别共有7类(0~6),常用的有以下 四类
- RAID 0  读写性能  (最少2块硬盘,将数据平均分开读写到多块硬盘上)
空间利用率最高,所有硬盘容量之和
性能最佳,所有硬盘速度之和
没有冗余能力
- RAID 1  读写性能、冗余性 (最少2块硬盘,写数据时,将数据复制写到多块硬盘,读数据时平行读取)
空间是所有硬盘中最小的那块,空间利用率最差
读性能与RAID0一样,写性能有所减弱
冗余性最强,只要一块硬盘正常,数据就不丢失
- RAID 5  读写性能、冗余性(1块硬盘)
最少使用3块硬盘
读写数据时将数据分布的读写在所有硬盘上,在写数据时对数据进行奇偶校验运算,同时将校验信息保存在硬盘上
空间利用率: 1- 1/n
性能 : 读性能接近RAID0,写性能较RAID0弱一些
冗余:可接受1块硬盘损坏
- RAID 6  读写性能、冗余性(2块硬盘)
最少使用4块硬盘
与RAID5类似,在写数据时多保存了一份校验信息
空间利用率: 1-2/n
性能: 读性能接近RAID5,写性能比RAID5还要弱一点
冗余:可接受2块硬盘损坏





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值