读书目的:了解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