《鸟哥linux私房菜》读书笔记

来源:互联网 发布:高中化学知识网络结构 编辑:程序博客网 时间:2024/06/10 01:36

读书目的:了解linux操作系统主要功能框架,为运用这些功能打基础
读书收获:一个操作系统最基本的功能就是要可以使用上面的文件,所以对操作系统的运用必然要学习磁盘管理文件管理,如果事务繁多可以利用脚本自动处理功能,然后就是账号管理软件安装,其他功能若非系统管理员稍微了解即可。试想作为一个windows用户,经常使用的功能不就是上面几种吗

心得:对于一个庞大的系统,必须:明确目的抓重点,再去学习

文件、目录、磁盘格式

1.文件权限&目录配置

对文件的操作不外乎执行创建删除几种操作,而文件权限就是对文件的这几种操作的权限

1.1文件权限:

  • 属主、属组、其他用户的可读(4)可写(2)可执行(1)权限
  • 文件默认权限:umask
  • 文件隐藏属性:chattr lsattr
  • 文件特殊权限:SUID(4) SGID(3) SBIT(1)

1.2文件配置:

  • /bin
  • /boot(内核引导位置)
  • /dev(设备目录)
  • /etc(配置文件及脚本)
  • /home(普通用户主目录)
  • /lib(函数库、内核模块)
  • /media
  • /mnt(临时挂载)
  • /opt(第三方软件)
  • /root(root用户主目录)
  • /sbin
  • /srv(服务数据目录)
  • /tmp(进程暂时放置文件的目录)
  • /proc(虚拟文件系统,存放进程信息)
  • /sys(虚拟文件系统,记录与内核相关的信息)
  • /usr(系统数据,类似Windows下C:\Windows\和C:\Program files\的综合体)
  • /var(缓存、日志文件)

2.文件&目录管理

一切皆文件,对文件的管理操作不外乎查看(r)修改(w)创建删除查询;文件权限是对文件可管理的程度

2.1文件目录管理

  • ls cp rm mv basename dirname

2.2文件内容查询

  • cat head tail od

2.3查看文件类型

  • file

2.4文件位置查询:

  • which(寻找执行文件)
  • whereis(寻找普通文件)
  • find(寻找普通文件):find [path] [option] [action]

3.磁盘管理&文件系统管理

磁盘结构:bootsector+n个(superblock+inode+blocks)
磁盘管理即分区管理,分区信息存入bootsector中
文件系统即superblock+inode+blocks
文件系统是在格式化后产生的,挂在后才能使用

3.1磁盘管理

  • 分区:parted
  • 格式化:mkfs.ext4 mkswap(启动swap:swapon [dev];查看swap:swapon -s)
  • 检验:fsck(检验文件系统是否出错) badblocks(检验硬盘扇区坏块)
  • 挂载&卸载:mount&umount
  • 设置开机挂载:/etc/fstab
  • 磁盘参数修改
    • mknod:改变设备类型
    • e2label :修改卷标
    • tune2fs :读块数据、文件系统转换、改卷标

3.2文件系统管理

  • 文件系统结构
    • superblock:记录此文件系统的整体信息(inode/block总量、使用量、剩余量、文件系统格式相关信息)
    • inode:记录文件属性和数据所在的block号码
    • block:记录文件内容
  • 文件系统管理
    • 查询容量:df(磁盘使用量)、du(文件大小)
    • 文件链接:ln [目标文件] [链接文件]

4.文件打包压缩&文件系统备份

打包压缩节省文件占用空间,便于传输;备份即完全拷贝

4.1压缩、查看、解压

  • tar -jcv -f filename.tar.bz2 [目标文件]
  • tar -jtv -f filename.tar.bz2
  • tar-jxv -f filename.tar.bz2 -C [路径]

4.2备份

  • dd:备份完整的分区或磁盘

shell与shell script

5.bash

shell作为一个内核与用户交互的平台,提供内置命令(也可以使用外部命令)来与内核交互

5.1bash shell的功能

  • 命令记忆history
  • 命令&文件名补全
  • 命令别名alias
  • 作业控制、前后台控制
  • 程序脚本shell script
  • 通配符

5.2变量

  • 环境变量:用一组符号替换一串保留的数据,定义在配置文件中(全局变量)
  • 自定义变量:通过export定义的变量(局部变量)

5.3数据流重定向

  • 通过> 2> <之类的符号将输出的信息转到其他文件或设备中去

5.4管道命令

  • 选取:grep
  • 排序:sort
  • 双向重定向:tee
  • 字符转换:tr
  • 切割:split
  • 参数代换:xargs(用于不支持管道的命令使用管道功能)

6.正则表达式

一套搜索文本字符串的规则,通过grep、sed、vim等工具实现,用于查找、删除、替换文本中的字符串,以行或段(awk)为单位

6.1正则表达式

  • 处理字符串的方法(以行为单位),通过符号辅助实现查找、删除、替换特定字符串的功能

6.2正则表达式&通配符

  • 正则表达式用于文本文件中的字符串处理,通配符用于shell 命令行中的字符串处理

6.3常用的正则表达式工具:grep、sed、vim

  • grep
    • 查询:grep [-A] [-B] [-n] [–color=auto] ‘字符串’ filename
  • sed(加-i参数会直接修改源文件内容)
    • 删除:sed ‘2, 5d’ filename
    • 增加:sed ‘2a hello world’ filename
    • 替换:sed ‘s/old/new/g’ filename

6.4文件格式化处理

  • awk(以段为单位,将数据重新整理输出)
    • awk ‘condition1 {action1} condition2 {action2} … ’ filename

7.shell script

shell脚本属于解释型语言,语言结构不外乎四部分(数据类型、运算符、流程控制、函数封装),shell自带脚本编译器

7.1数据类型

  • 字符串类型
  • 数值型

7.2运算符

  • 普通运算符
  • $[ ]用于运算数值
  • $( )用于提取变量值
  • 文件类型判断
    • -e 文件名是否存在
    • -f 文件名是否存在且为文件
    • -d 文件名是否存在且为目录
    • -b -c -S -p -L
  • 文件权限判断
    • -r -w -x
    • -u -g -k (SUID SGID SBIT)
    • -s 文件名是否存在且有内容
  • 文件比较
    • -nt new than
    • -ot old than
    • -ef equal file(判断硬链接)
  • 整数判断
    • -eq ==
    • -ne !=
    • -gt >
    • -lt <
    • -ge >=
    • -le <=
  • 字符串判断(可以用于整数判断)
    • ==
    • !=

7.3流程控制

  • 分支
#if分支    if [ $A -lt $B ]; then        echo "$A < $B"    elif [ $a -gt $B ]; then        echo "$A > $B"    else        echo "$A =$B"
#case分支    case $A in    "hello")        echo hello    ;;    "hi")        echo hi    ;;    *)        echo "input hello or hi"    esac
  • 循环
#while循环    while [ $1 -ne 55 ]; do        echo "input a number again"    done    echo "you guess it"
#for循环    for $I in 1 2 3 4 5 6 7 8 9     do        echo $I    done#================================================    for ((I=1; I<10; ++I));    do        echo $I    done

7.4函数或封装

    function printit() {        echo -n "your choice is "    }    case $1 in    "one")        printit; echo $1 | tr 'a-z' 'A-Z'        ;;    "two")        printit; echo $1 | tr 'a-z; 'A-Z'        ;;    *)        echo "$(basename $0) {one|two}"        ;;    esac

linux使用者管理

8.账号管理&ACL权限设置

管理账号无非新建、修改、删除
账号:具有对文件不同的访问权限
用户组:为了扩展对文件的访问权限
ACL:进一步扩展用户对文件的访问权限

8.1账号&用户组

  • UID
    • 0 系统管理员
    • 1-499 系统账户
    • 500-65535 普通账户
  • /etc/passwd(账号名:密码:UID:GID:信息说明:主文件夹:shell)
  • /etc/shadow(账号名:密码:密码修改时间:密码不可变天数:密码更改周期:密码到期提前警告天数:密码过期宽限时间:账号失效日期:保留)
  • /etc/group(用户组名:用户组密码:GID:组内账号名)
  • /etc/gshadow

8.2账号管理

  • 新增用户:useradd [-u UID] [-g init用户组] [-G 次要用户组] [-r系统用户] [-s shell] 账号名
  • 修改用户:usermod [-ugG] 账号
  • 删除用户:userdel [-r删除主文件夹] 账号
  • 新增用户组:groupadd [-g GID] [-r系统用户组] 组名
  • 修改用户组:groupmod [-g GID] [-n 组名]
  • 删除用户组:groupdel 组名

8.3ACL权限规划

  • Access Control List,针对单一用户、单一文件或目录来进行rwx权限设置

8.4用户特殊shell

  • /sbin/nologin,不能通过shell登录主机,但是可以使用主机资源

8.5PAM模块

  • 一套具有验证机制的API,只要用户将验证阶段的需求告知PAM后,PAM就能回报用户验证结果

8.6用户信息传递

  • 查询用户:who、last、lastlog
  • 用户对谈:write、mesg、wall、mail

9.磁盘配额&高级文件系统管理

磁盘可分成多个区,多个磁盘或区也可以组成一个大磁盘(逻辑卷),文件系统在格式化磁盘或分区产生,在线扩展文件系统属于高级文件系统管理

9.1磁盘配额(quota)

多个用户使用一个磁盘时,给多个用户分配可使用的空间大小

9.2软件磁盘阵列(RAID)

多个等容磁盘组合成的一个大磁盘,数据以并列方式存取(提高磁盘读写性能)

  • 创建软RAID
    mdadm –create –auto=yes /dev/md0 –level=5 \
    –raid-devices=4 –spare-devices=1 /dev/sda{1, 2, 3, 4, 5}
  • 查看软RAID
    mdadm –detail /dev/md0
  • 替换故障磁盘
    mdadm -manage /dev/md0 –add /dev/sda6 –remove /dev/sda2
  • 关闭软RAID
    mdadm –stop /dev/md0

9.3逻辑卷管理器(LVM)

  • 物理卷:磁盘或分区
    pvcreate 磁盘/分区
    pvdisplay
    pvremove 磁盘/分区
  • 卷组:由磁盘或分区组成的一个物理卷组
    vgcreate [ -s N[mgy] ] VG名 PV名
    vgdisplay
    vgextend VG名 PV名
    vgreduce VG名 PV名
    vgremove VG名
  • 逻辑卷:在卷组上分出来的逻辑上的卷
    lvcreate [ -L N[mgt] ] [-n LV名] VG名
    lvdisplay
    lvresize -l +N(PE) LV名 (增加了磁盘容量,没有增加文件系统容量)
    dumpe2fs [device] (查看文件系统信息)
    resize2fs [-f] [device] [size]
    lvremove LV名
  • 快照功能
    lvcreate -l N(PE) -s 快照PV名 PV名

10.例行性工作

每隔一定周期要办的事项,与突发性工作相对

10.1仅执行一次的工作调度

  • 启动atd服务
  • /etc/at.allow /etc/at.deny
  • at [-mldv] TIME

10.2循环执行的工作调度

  • /etc/cron.allow /etc/cron.allow
  • crontab [-u username] [-l|-e|-r]
  • /etc/crontab

10.3可唤醒停机期间的工作任务

  • anacron
  • /etc/anacron

11.程序管理&SELinux

进程处理的事项叫工作分为前后台,进程管理也包含了工作管理
进程/工作创建、进程/工作查看、进程/工作删除
SELinux:主体进程–>SELinux(策略规则)–>安全上下文(拒绝访问说明)–>目标数据

工作管理

在一个shell中进行多个任务

  • & 让命令后台执行
  • ctrl + z 将当前的工作放到后台并暂停
  • jobs 查看目前后台工作状态
  • fg %jobnumber 将后台工作拿到前台
  • bg %jobnumber 将后台暂停的工作运行
  • kill -signal %n 管理后台的工作

进程管理

  • 创建子进程 fork-and-exec流程
  • 进程查看 ps pstree top
  • 进程优先级 nice

SELinux

SELinux(Eecurity Enhanced Linux)重点在于主体进程能否访问目标文件资源,这中间涉及到策略规则,以及实际的安全上下文类型

12.系统服务

常驻内存的服务进程,用于响应请求信息
一般涉及网络请求用netstat -tlup命令查看

12.1stand alone(可单独启动的服务)

stand alone的daemon响应速度较快,常驻内存(如:httpd vsftpd)

  • service 服务名 {-start|-status|-stop} (/etc/init.d/)
  • service –status-all

12.2super daemon(通过xinetd统一管理的服务)

xinetd也是一个statnd alone服务,它可以管理其他服务,具有多线程处理模式和防火墙功能

  • 有客户端请求则唤醒相应服务(telnet),请求结束则关闭服务释放资源(xinetd)
  • service xinet.d {-start|-status|-stop}

13.日志文件

日志记录服务syslogd收集系统中进程发过来的信息(记录进程运行期间的状态),写入/var/log/目录的相应文件中(messages记录的信息最多)

linux系统管理员

14.启动流程、模块管理、loader

14.1启动流程

BIOS–>MBR(bootLoader)–>kernel–>init–>/etc/rc.d/rc.sysinit–>/etc/inittab(run-level)–>/etc/rc.d/rc.local–>login–>shell

14.2模块管理

加载:insmod
查看:lsmod
卸载:rmmod

14.3loader

stage1:执行boot loader主程序
stage2:主程序加载配置文件(/boot/grub/*)

  • default=0:默认启动第一项
  • timeout=5:超时时间(自动选择)
  • splashimage=(hd0,0) /grub/splash.xpm.gz:启动背景图片
  • hiddenmenu:启动隐藏菜单
  • root:内核文件放置的分区
  • kernel:内核文件及设置(vmlinuz压缩的可执行内核文件)
  • initrd:压缩的根目录文件(提供USB SATA SCSI等驱动)

15.系统设置工具&硬件检测

15.1系统设置工具setup

  • 用户身份验证设置:一个账号登陆多台主机
  • 网络配置设置
  • 防火墙设置
  • 键盘形式设置
  • 系统服务的启动设置

15.2硬件检测

  • lspci
  • lsusb
  • iostat

16.rpm、yum

安装 rpm -ivh xxx.pkg 或 yum install xxx
查看 rpm -qa 或 yum list xxx
删除 rpm -e xxx && rpm –rebuilddb 或 yum remove xxx

17.备份策略

增量备份:完整备份后,每一次备份都是基于与前一次备份的差异而备份的
差异备份:完整备份后,每一次本分都是基于与完整备份的差异而备份的
备份工具:dd cpio dump/restore

0 0