任务计划:调度性任务
一次性任务计划;
at:设置系统在某一各时间点执行的任务
任务计划:调度性任务
一次性任务计划;
at:设置系统在某一各时间点执行的任务
block----》磁盘上存放的数据库
文件系统:软件(XFS NTFS FAT EXT3 EXT4),存储数据或者文件的一种格式,文件系统不存在于分区上,它位于磁盘的某一个位置;文件系统把分区分割为两部分,一部分存放元数据(metadata),另一部分存放数据
metadata:元数据(和数据本身内容没有关系,包括的是数据属性,比如数据归属、数据权限、数据的时间戳)
block bitmap:在元数据区域,标记数据库是否被使用
inode(索引节点) 存放数据的属性,不包括文件名,数据对应的数据块(block)
super block 超级块 管理元数据区域内其他的区域的
ln(link):链接
ln【-s \ -v】 语法:ln 【-s\-v】 源文件 目标文件 什么参数都不加 就是 硬链接
-s:创建软链接
-v:显示详细过程
同一个 可以指向对个文件
硬链接当源文件失效后可以用 软链接则不可以用
删除文件:把对应的inode和block变为0,实际数据并没有删除
新建文件:
复制文件:重新建立新文件
移动文件:改变inode和block值,对数据没有进行操作
分区格式化:
格式化:低级格式化
高级格式化:分区装入文件系统
MBR:主引导记录 位于0磁道 0柱面 1扇区 512字节
三部分组成:
446字节的boot loader (启动加载器,存放引导代码)
64字节磁盘分区表
2字节magic number(检查MBR是否有效)
主分区:主分区+扩展分区 <=4
扩展分区:只能有一个 16字节空间 只能有一个 扩展分区是一个指针 指向磁盘另外的位置 不能字节存储数据
逻辑分区:
文件系统:软件
名称解析和验证是两个独立运行的机制
login:
rppt-nsswitch.conf-passwd:files
123--nsswitch.conf--shadow:files
authentication:123--sha512(salt)--/etc/shadow compare
名称解析 libnss库
authentication:独立验证机制
nsswitcgh:file db nis ldap
authentication:file db nis ldap kerberos 等
authentication:
PAM;嵌入式认证模块 本身自己是不会执行验证的 需要借助策略或者模块来认证
模块所在路径
ldd命令:可以查看某个服务所支持的模块
后面直接加服务的绝对路径
可看到vsftp所支持的模块
/etc/pam.d/service_name (系统中支持pam认证的服务名称)
/etc/pam.d/other(系统中支持pam认证的服务没有匹配到任何条目时候,配置到other)
/etc/pam.d/service_name 格式
类型 控制标准 模块 (模块参数) 如下图
类型:
authentication:身份认证 匹配用户名和密码
account:检查用户名和密码的有效性(是否被锁定? 被限制登录? 有效期内?)
password:检查修改密码时。密码是否符合标准
session:当用户登录到操作系统后 规定了用户访问的时间或者以什么形式来访问 其实就是检查用户会话相关属性
一般情况下 必须设置 第一个 一般设置 前两个
控制标准:
required:一票否定权 不会影响后续 会继续匹配下面的条目 最后会不匹配
requisite:一票否定权 不会匹配下面的条目 直接给用户返回出结果
sufficient:一票同意权 不匹配下面的条目 直接给用户返回出结果(慎用!)
optional:不影响最终的结果
include:引用其他的配置文件 把匹配权交给其他配置文件(其他配置文件跳出 则结束)
substack:也是引用其他配置文件 把匹配权交给其他配置文件(如果其他配置文件跳出 但是仅仅只跳出 当前交给的配置文件)
匹配认证模块:
启动流程详解:
bootloader:MBR,后安装的系统的BootLoader覆盖先安装的bootloader
Windows:不允许其他系统引导,也不引导其他系统
Linux:LILO 有众多的限制 GRUB 默认的bootloader
GRUB引导系统时几个阶段:配置文件/boot/grub/grub.conf
Linux系统中内核的名 /boot/vmlinuz-
grub分阶段启动;
stage1 第一阶段,位于BootLoader,为了引导第二阶段
stage1.5 识别文件系统
stage2 加载启动设置等,读取配置文件/boot/grub/grub.conf
grub修复:光盘启动,进入救援模式
chroot /mnt/sysimage
grub-install --root-directory=/dev/sda
grub
grub>root (hd0,0)
grub>setup (hd0)
grub>quit
准备grub的配置文件
exit
reboot
为grub启动菜单添加密码:
grub-crypt --sha-512 生成加密密码
vim /boot/grub/grub.conf 在hiddenmenu添加一行 password --encrypt 生成的密文
为系统添加启动密码:
grub-crypt --sha-512 生成加密密码
vim /boot/grub/grub.conf 在title下面添加一行 password--md5生成的密文
三类用户权限:
属主:owner
属组:group
其他:other
-rw-r--r--:10位
第一位:文件类型
第二到四位:属主权限
第五到七位:属组权限
第八到十位:其他用户的权限
文件:
r:读、可以查看文件的内容 可以使用cat more等命令
w:写、可以修改文件内容 以及删除
x:执行、可以执行的文件或者脚本
目录:
r:读,可以查看目录的列表 执行ls文件
w:写,可以向目录中新建文件或者目录等
x:执行,可以执行cd命令
root是可以读写 root组可读 其他用户 也是 可读
权限可以用数字表示:
r:4 w:2 x:1
---:000
rwx:111
-rw-r--r-- 1 root root
rw-: 110=6 root用户
r--:100=4 root组
r--:100=4 其他用户
举例子:
drwxr-xr-x 2 root root 60 Jul 6 06:15 vfio
rwx:7 r-x:5 数字表示为 755
crw-rw-rw- 1 root root 1, 3 Jul 6 06:15 null
rw-:6 文件用 数字来表示 就是666
lrwxrwxrwx 1 root root 15 Jul 6 06:15 stderr -> /proc/self/fd/2
数字表示为:777
chown:change owner 改变用户属主的权限 直接 chown 用户名 文件名
-R:递归更改目录的属主或属组
--reference:复制一个目录的权限属性 到目标文件 chown --reference=a.txt b.txt 将a.txt的权限复制给b.txt
chown:修改文件属组时,在组名前添加点符号(.)或者冒号(:)
chown .tom a.txt 或者 chown :bo b.txt
同时修改属主和属组:chown 用户名.组名(文件名)
chown -R lhg.tom /etc/ 也可递归修改
chgrp:change group修改文件的属组 其实 可以用chown来实现
chmod:修改文件或者目录的权限
chmod a\u\g\o +\-\= r\w\x 文件名
-R:递归更改文件或者目录的权限
a:所有用户
u:文件属主
g:文件属组
o:其他用户
+:添加权限 - :减少权限 =:赋予权限
简单上传一些文档笔记 图片实验笔记 就不上传了 太多了
组管理:
groupadd添加 groupdel删除 groupmod修改属性 gpasswd设密码 newgrp临时切换 groupmems查看成员列表
组分类:
管理员组:root
普通用户组:
系统用户组:
按照用户分类:
管理员组:root
基本组:初始化的组
附加组:有效组
组:逻辑容器、存放用户、实现集中授权
配置文件:
第一列:组名
第二列:组的密码区域
第三列:组的ID号(GID)
第四列:组中的成员
第一列:组名
第二列:组的密码
第三列:组的管理员成员
第四列:组成员列表
grooupadd:
-d:创建组时指定组的ID group -g 300 XXX
-r:添加一个系统组
groupdel:
groupdel XXX (直接后面加上组名就行)
如果组是用户的基本组的情况下 默认 是不能删除的
可以通过改变基本组 或者 改变ID号来删除 也可以删除用户的同时 系统会删除同名基本组
多个用户 同时用这个组的时候 也是 删除不了的
groupmod:修改组的属性 与usermod类似
groupmod -g :修改现有组的GID号 groupmod -g 3000 XXX
groupmod -n :为组重命名 groupmod -n newname oldname
gpasswd:为组设置密码 设置管理员 添加组成员
gpasswd -A 用户名 组名:为组设置管理员
gpasswd -M 用户名,用户名 组名:批量添加一些用户 进入组 中间是用逗号隔开的 都是普通用户
gpasswd -r :为组移除密码
gpasswd -R :让组的密码失效
gpasswd -a :为组添加成员(组的管理员操作命令)
gpasswd -d :删除组成员(也是组的管理员命令)
如果任何选项都没有 直接跟的组名 就是直接为这个组 设置密码
newgrp:为用户修改有效组 (只在当前shell中生效)
会使得 每个创建的文件 属组 都是你设置的组 如果不想 可以用exit退出
groupmems:为组添加成员,显示组成员列表
file命令:查看文件类型
ls cd pwd file cat cp mv rm mkdir touch tree which whereis这些基本命令!
Linux命令分类:
{
内部命令:shell自带的命令
外部命令:在Linux文件系统中存在的一个应用程序
type:查看Linux命令类型
[command] is a shell builtin:buildin关键字说明该命令是内部命令
mkdir is /bin/mkdir:有路径显示(外部命令)
路径:
绝对路径:从根(/)开始的路径就是绝对路径,linux系统中只有一个根
相对路径:所处的工作目录为参照点 (.代表当前路径 ..代表上一级路径 ~代表用的宿主目录)
}
ls(list):列出目录 后面列出
-l(--long):以长格式显示
-rw-------. 1 root root 1207 Nov 6 18:51 anaconda-ka.cfg
第一位:文件类型
-:代表普通文件(file)
d:代表目录(directory)
b:块设备(block):如硬盘,U盘等
c:字符设备(char):如键盘等
s:套接字文件(socket)
p:命名管道(pipe)
l:符号链接文件(symbolic link file)
第二到十位:权限位(rwx:读写执行)
234位:文件属主权限(owner)
567位:文件属组权限(group)
8910位:其他用户权限(other)
1:代表文件硬连接的次数
第一个root代表文件属主(owner)
第二个root代表文件属组(group)
1207:文件的大小
Nov 6 18:51:文件最后被访问的时间戳(stat命令查看文件时间戳)
文件的时间戳:
Access:访问的时间戳
Modify:文件被修改时间戳(修改文件数据:添加删除数据等)
Change:文件被更改时间戳(更改文件属性)
anaconda-ka.cfg:文件名
-h:为文件大小添加单位
-a:显示目录下所有文件(包括 . .. 以.开始的隐藏文件)
-A:和-a相同,但是不显示.和..
-R:递归显示目录中的内容(一并显示子目录中所有内容)
-r逆序显示目录内容
环境变量:内存当中的命名空间
PATH变量:存放系统命令的路径,以冒号隔开
查看PHYH变量:echo$PATH(linux命令严格区分大小写)
hash:查看命令缓存及命中率
1,进程优先级
采用0-139编号,共140个进程,越小级别越高
大O标准
O(1)
O(n)
O(logn)
O(2*n)
O(n^2)
0-99,系统分配优先级
100-139,用户可控优先级
2,进程命令
1,ps(process status)进程状态查看
结果分析
USER 发起用户名
PID 进程号(1为其它进程父进程)
CPU 占用CPU百分比
MEM 占用内存百分比
VSZ 虚拟内存集
RSS 常驻内存集
TTY 运行在哪个终端
STAT 进程状态
D 不可中断睡眠状态
S 可中断睡眠状态
R 运行状态
T 停止状态
Z 僵尸状态
s 会话领导者
< 优先级高的进程(用户不可控)
N 优先级较低进程(用户可控)
L 在内存中锁定分页
+ 前台进程组中的进程
START 启动时间
TIME 实际在CPU中运行时间
COMMAND 进程命令名称
2,pstree 查看进程树
1,进程
应用程序关于数据在集合的一次执行过程,是操作系统结构的基础,进程是程序的实体,是线程的容器,或者说其在内存的映射
特性
并发性,任何进程可以同其它进程一起执行
异步性,进程按自己的、不可预知的速度推进
独立性,能独立运行的基本单位
动态性,动态产生,动态消亡
2,CPU分环运行
0环,运行内核
1-2环,运行库文件
3环,进程环
1,编译安装步骤
1,获取源代码
2,执行configure脚本(源码目录)
选项
--help 查看帮助信息
--prefix=<path> 定义应用程序安装路径
--sbin-path 定义应用程序二进制程序路径
--conf-path 配置文件路径
--enable-XXX 开启某项功能
--with--XX 开启某项功能
--without--XX 关闭某项功能
--user 指定应用程序用户
--group 指定应用程序组
3,添加环境变量(/etc/profile)
4,添加头文件
5,添加帮助文档
centos 6 系统启动流程:
启动过程:
POST (加电自检:power on self test)--BIOS(基本输入输出系统;记录硬件信息,启动顺序)--MBR(主引导记录;446字节的bootloader)--启动菜单(Linux启动菜单 GRUB)--kernel--initramfs--init(/sbin/init)
内核设计:
单内核:所有的功能都集中到内核中去 linux使用单内核,采用模块化设计/lib/lib64
/lib/modules/以内核版本号为名称的目录
微内核:把每个功能都做成小模块 windows solaris
/boot/initramfs:(OS 6),虚拟根文件系统,把/proc /sys /dev目录复制到根文件系统
initrd(OS 5)
Linux运行级别:0--6
0:halt关机
1:单用户模式(root 无需登录),single,维护模式
2:多用户模式,会启动网络功能,但不会启动NFS;维护模式
3:多用户模式,正常模式;文本界面;CLI(command line interface)
4:预留级别
5:多用户模式,正常模式,图形界面 GUI(graphical user interface)
6:重启
chroot : 改变根文件系统
ldd 查看二进制文件所依赖的库文件系统
1,编译与CPU得架构密切相关,编译是将应用程序源码转换成机器可识别得二进制文件
2,内存地址空间
text:存放指令
data+BSS:data存放数据,BSS存放初始为0得数据
堆:存放运行时临时文件
栈:存放应用程序变量和函数
3,应用程序组成
二进制文件
库
配置文件
帮助文件
4,软件包管理器分类
前端(yum,apt)
后端(rpm)
5,RPM
开放式软件包管理,包括安装、卸载、升级、组合查询、软件包依赖以及验证等功能
优点:
编译过得程序和配置文件,不必重新编译
安装前检查硬盘容量,避免错误安装
使用RPM数据库管理,便于升级、卸载
缺点:
不能自己解决依赖关系(可以忽略)
## 用户
文件查找:
which 查找命令字所在的位置
locate 模糊匹配,不是实时的,基于数据库查找,updatedb升级locate数据库,查找速度快
find 查找文件或目录的工具,实时查找,精确,遍历整个指定目录中的文件,速度慢;支持多种查找条件(属组,属主,权限,文件名等)
find find_path 【条件】【处理动作】
条件 :匹配标准
- name filename 根据文件名进行查找(区分大小写)
- iname filename 不区分大小写
- regex PATTERN 根据正则表达式的模式进行查找
- user 通过属主进行查找
- group 通过属组进行查找
- uid UID 通过UID进行查找
- gid GID 通过GID进行查找
- nouser 查找没有属主的文件
- nogroup 查找没有属组的文件
- type 根据文件类型进行查找
b 块设备
c 字符设备。。。。。
- size [ + | - ] 根据大小
- size 5k 精确匹配
+ 5k 大于5k的文件
根据时间戳查找
- mtime 时间单位为天 modify时间
- atime 时间单位为天 access时间
- ctime 时间单位为天 change时间
- mmin 时间单位为分钟
- amin
- cmin
根据权限查找
-perm MODE
MODE : 644 精确匹配
/ MODE 任意一位匹配
- MODE 文件权限能够完全包含此MODE时才能匹配
条件组合:
- a 同时满足多个条件
- o 满足一个条件即可
- not 不满足条件的被查找出来
查找条件通配符:
* 通配任意个数的任意字符 find 路径 “name*”
? 通配单个的任意字符
处理动作:
- print 默认动作,查找结果打印到屏幕
- ls 默认以类似于 ls - l 的形式显示
- ok command { } \ 执行动作时提示用户是否执行,必须以 \ 结尾;{ }代表文件名占位符
- exec command { } \ 执行动作时不显示用户,直接执行
一切皆文件(设计原则)
设备文件
根目录:/dev
类型:
字符设备(c)
块设备(b)
设备号:
主设备号(标识某一类设备)
次设备号(标识某类的一个设备)
磁盘
IDE(标识为hd)
SATA(标识为sd)
SCSI(标识为sd)
USB(标识为sd)
Linux以字母来标识磁盘的个数,例如第一个为a,第二个为b
Linux以数字来标识分区,1-4标识主分许,5以后标识逻辑分区
文件系统(由内核提供)
FAT32
NTFS
EXT2、3、4
XFS
硬盘格式化
低级格式化(划分磁道)
高级格式化(划分并设置文件系统)
分区命令
fdisk(针对MBR分区类型交互式工具)
d 删除一个分区
l 显示支持的分区类型
m 显示菜单信息
n 创建一个新分区
p 显示当前分区
q 不保存退出
w 保存退出
gdisk(针对GPT分区类型工具)
开机自动挂载(/etc/fstab)
查看设备的UUID(blkid)
交换空间
swapon <dev-name>
swapoff <dev-name>
任务计划;调度性任务
一次性任务计划:
at :设置系统在某一个时间点执行任务,任务结果以邮件形式发送给任务发起者
/etc/at.allow 任务执行白名单,仅允许此文件中的用户执行at
/etc/at.deny 黑名单
at data_time
at >at_command1
at >at_command2
at >ctrl + d 保存退出
时间日期写法:
绝对时间:
HH:MM 具体时间点
DD.MM.YY 天 月 年
YY-MM-DD
MM/DD/YY
相对时间:
at now + 3minutes
at - l 查看系统中at任务列表,相当于atq
-r 删除系统中at任务列表,相当于atrm
-d 如上
-c 列出后续at任务的具体指令内容
systemctl start atd
systemctl enable atd
systemctl status atd
linux设置at任务后,会在/var/spool/at中生成at任务计划的文件,执行顺序按照文件名的排序执行
batch:用法和at相同,但其计划是在CPU空闲时执行,当平均负载小于0.8时执行batch任务
uptime 查看CPU平均负载
周期性任务计划:
系统周期性任务:
日志轮换:logroate
登陆文件分析:logwatch
创建locate数据库:updatedb
创建man帮助信息数据库:
centos 6 makewhatis
centos7 mandb
用户周期性任务
cron 设置周期性任务计划
anacron 当cron 由于某种原因没有执行,ancron重新执行任务
systemctl start cron
systemctl enable cron
systemctl status cron
/etc/cron.allow 白名单
/etc/cron.deny 黑名单
cron相关配置文件:
/etc/crontab cron配置文件
/etc/cron.d 辅助配置文件
/var/spool/cron 用户cron任务计划的配置文件,用户设置完cron任务后,会在/var/spool/cron生成以用户名为名称的cron文件
crontab 设置 查看 删除cron任务计划
- e 编辑cron任务内容
- u 为指定用户
- l 查看cron任务列表
- r 删除所有cron列表
设置cron任务语法
系统设置: 分时日月周 用户 命令
用户设置:分时日月周 命令
周 0 和 7都代表周日
时间的特殊写法:
通配 * 代表任意时间
离散时间段 逗号
连续时间段 中横线(-)
间隔时间段 */n
cron.hourly 由cron工具去执行
cron.daily weekly monthly 由anacron工具去执行
cron设置任务计划时注意事项;
CPU和内存资源集中使用时的问题
取消一些不必要的输出:设置命令时可以重定向输出
时间的检验:设置时间时,周与日月不可并存
安全的检验;借有/var/log/cron的内容查看cron任务计划中是否有非法任务
环境变量:系统命令查找和cron任务命令位置由$PATH变量决定,设置cron任务时,使用命令的绝对路径
anacron 当cron 由于某种原因没有执行,ancron重新执行任务
配置文件 /etc/anacrontab
anacron 语法:
anacron 选项 job
- s 依据时间记录文件判断是否执行
- f 强制执行
- n 立刻执行未执行的任务,不需要延迟
anacron执行流程:
1 由/etc/anacrontab 分析cron.daily天数为1天
2 由 /var/spool/anacron/cron.daily取出最近一次执行anacron时间戳
3 由2 步骤分析出的时间戳和cron任务进行比较,查看哪些cron任务超过1天时间没有执行
4 准备执行指令,根据/etc/anacrontab 的设置,将延时执行
5 延时时间后,执行
进程 :父子关系 优先级 进程状态
进程优先级 :0--139 共140个优先级
0--99 系统分配优先级(用户不可控)
100--139 nice值(用户可控优先级);-20到19
root用户可以任意调整nice值,普通用户只能调整0-19
高优先级进程:获取更多的CPU运行时间,更优先的让CPU执行
大O标准:O(1) O(n) O(log n) O(n^2)O(2^n)
进程分类:和终端相关的进程(用户进程),无关的进程(内核进程)
ps (process status)进程状态查看,运行ps那个时刻的进程状态
pstree 进程树
ps aux 结果解释
user 进程是由哪个用户发起的
PPID 父进程号
PID 进程号 在 /proc 存放着进程相关的信息
在centos7中 PID为1 的进程是systemd
在centos6中 PID为1的进程是init进程
%CPU占用CPU的百分比
%MEM占用内存的百分比
VSZ 虚拟内存集(计算进程所占物理内存时,物理内存包括共享库的空间)
RSS 常驻内存集(进程中不能被交换出去的数据)
TTY 终端
STAT 状态
D 不可中断睡眠
S 可中断
R 运行
T 停止
Z 僵死
s session leader 会话的领导者
< 优先级较高的进程(用户不可控)
N 优先级较低的进程(用户可控进程)
l 多线程进程
L 在内存中锁定分页
+ 前台进程组中的进程
START 进程启动时间
TIME 在CPU中运行的实际时长
COMMAND 该进程命令名称
ps -elF 结果解释
PRI 系统分配的优先级(用户不可改)
NI nice值
调整进程的nice值
调整正在运行进程的nice值
renice nice_num PID
指定进程运行的nice值(让某个命令以指定nice值运行) nice -n nice_num COMMAND
top 动态查看进程状态,三秒刷新一次
第三行(按1键可查看每个CPU的信息):CPU相关信息:
us 用户进程所占百分比
sy 系统进程所占
ni nice所占
id 空闲进程所占
hi 硬件中断所占
si 软件中断所占
st 被hypervisor偷走的CPU百分比
top 交互式命令;
M 按所占内存百分比排序
P 按照所占CPU百分比排序
T 按照运行时长排序
c 是否显示COMMAND列的完整路径
l 是否显示第一列
t 是否显示第二行和第三行
m 是否显示内存信息
k 杀死某个进程
q 退出top
pgrep 查看某个进程PID号 pgrep + comman
pidof 同上
kill 杀死某个进程(向进程传递某个信号)
kill -l 查看信号列表
kill sig_num PID
kill sig_name PID
信号列表;
1 SIGHUP 不停止服务的情况下,重新读取配置文件,并且应用配置文件中的设置
2 SIGINT 中断某个进程
9 SIGKILL 强制杀死某个进程
15 SIGERM 终止某个进程(默认信号)
killall 杀死整个进程树
信号:进程间的通信(IPC)
前台进程:利用终端执行的进程
后台进程;运行执行时不利用终端执行的进程
前台-->后台
Ctrl+z 把正在进行的进程调入后台,并停止运行
command+& 启动时直接调入后台
jobs 查看后台运行的作业
+ 下一次将要运行的后台作业
- 下一次将要运行的第二次后天作业
kill %1(后台作业号,%不能省)杀死后台作业
bg 把进程调入后台继续运行
fg 把后台调入前台继续运行