千家信息网

Linux 学习笔记 二

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,压缩解压缩压缩格式:gz bz2 xz zip z压缩算法,算法不同,压缩比也不同compress: filename.Zuncompress:不能压缩文件夹,会将文件夹内的文件单个压缩gzip: .
千家信息网最后更新 2024年10月17日Linux 学习笔记 二

压缩解压缩

压缩格式: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/* /usr/include/

第二种 ln -s /usr/local/tengine/include/ /usr/include/tengine

4,man文件:安装在--prefix 指定目录下额man目录,/usr/share/man

1,man -M man文件的路径

2,在/etc/man.config 中添加一条manpath


netstat :网络状态命令

-r 显示路由表 -rn 数字显示

-t 显示tcp连接

-u 显示udp连接

-l 监听状态的连接

-p 监听指定套接字的进程号与进程名

source /etc/profile 重新载入配置文件


kill 进程号 杀死进程

while ,until,for


break :提前退出循环结束任务

continue: 提前退出当前循环,继续循环


while 特殊用法

while: ;do


done

无限循环



while read line; do 循环读取 文件每一行 存入line中


done < 输入重定向文件



函数,功能, function


代码重用:


定义函数 2种方法


1. function 函数名 {

函数体

}

2. 函数名() {

函数体

|

`` 反引号,应用程序执行结果

执行结果状态,看命令的最后一条运行结果


return # 0-255 定义函数状态返回


接受参数的函数

函数名 参数1 参数2

$1 调用参数1

$2 调用参数2



进程管理


CPU中 MMU 内存管理单元 MEMORY MANAGEMENT UNIT

进程切换,上下文环境切换


rss 常驻内存,位于物理内存不被交换出去的

vsz 虚拟内存大小 ,栈,堆,库,初始和为初始化数据,命令


thrend 线程 由进程拆分的多个小的组成部分, 可以节省内存的使用空间


进程状态


uninterruptible 不可中断的睡眠

interruptible 可中断的睡眠


init: 内核之后的第一个进程,其他均为其子进程

优先级 0-139 共140个

进程越小越高级


100-139 :用户控制

0-99: 内核调整


高优先级的优势, 1,获得更多的CPU运行时间

2,获得优先的运行时间

每个进程都有个

nice值:友好的,优雅的

范围-20到19

对应 100到139

nice值越小优先级越高

默认都是0

普通用户仅能够调大自己进程的nice值

管理员可以随意调整

PID:process id

init:所有进程的父进程 PID 为 1

进程的相关属性在目录 /proc/中对应的进程号

ps:process status

BSD 风格

sysv 风格 -

a:所有和终端有关的进程

u:

x:所有和终端无关的进程

-e:所有进程

-l:

-f:

ps -o 字段 显示指定字段

进程的分类:

跟终端相关的进程

跟终端无关的进程

进程状态:

D:不可中断的睡眠

R:运行或就绪

S:可中断的睡眠

T:停止的

Z:僵尸

<:高优先级进程

N:低优先级

+:前台进程组中的进程

l:多线程进程

s:会话领导者进程

pstree:显示进程树


pgrep: grep风格

-u 用户

pidof:根据程序名查找ID号


top:

M:根据驻留内存大小排序

P:根据CPU使用时间排序

T:根据累计时间排序

l:显示

t:显示

m:显示内存

c:显示完整命令

k:杀死进程

q:退出

top -d # 显示延迟时长

-b 翻屏显示

-n # 指定屏幕数量显示

进程间通信 IPC (inter process commu)

共享内存

信号:

semaphore:旗语

kill -l 查看信号


1:SIGHUP :让进程不用重启就可以重读配置文件,并让新的配置信息生效

2:SIGINT :ctrl + c ,中断进程

9:SIGKILL :杀死一个进程 强行杀死

15:SIGTERM : 终止一个进程 完成后事后杀死 kill 默认信号


指定一个信号:

信号号码:kill -1

信号名称:kill -SIGKILL

信号名称简写 : kill -KILL 去掉SIG就行

kill pid

killall commmand 杀死有多个进程的命令


调整已经启动进程的nice值

renice nice值 PID renice 3 16522

调整准备启动的nice值

nice -n nice值 command nice -n 8 top


前台作业:占据了命令提示符

后台作业:启动之后释放命令提示符,剩余工资在后台完成


前台--后台:ctrl+z ,或者在命令启动后在后台执行,最后加&


jobs:查看所有的作业,作业号不同于进程号

bg :让后台停止的作业继续运行

bg %作业号 默认为+



+:命令将操作的作业

-:命令将第二个操作的作业


fg:将后台调往前台

fg %作业号

终止作业用 kill %作业号


vmstat 系统状态查看命令

vmstat 间隔 次数 vmstat 1 5


uptime


/proc/meninfo 文件 内存信息



post----bios(boot disk select )----mbr(bootloader 446k)-----kernel---initrd-----rootfs/sbin/init(/etc/inittab)


启动的服务不同:

运行级别:0-6

0:halt

1:单用户 single user mode 直接登录管理员模式 1,S,s,single都可以

2:多用户 multi usermode ,no NFS 不挂在

3:多用户 multi usermode ,test 模式命令行

4:reserved 未定义,保留级别

5:多用户 multi usermode ,图形模式

6:reboot


redhat,suse

核心:动态加载,内核模块

内核:/lib/modules/内核版本号命名的目录


vmlinux-2.6.32


/lib/modules/2.6.32



内核设计风格:

单内核:linux LWP 轻量级进程

核心:ko kernel object

微内核:windows,solaris 线程

chroot 虚根的目录

ldd /bin/bash 查看二进制文件的共享库

tree


ramdisk---initrd

ramfs---initramfs

详解启动过程:

bootloader

LILO: linux bootloader

grub:grand unified bootloader

stage1:MBR

stage1_5: 引导文件系统

stage2:/boot/grub

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/sda2

# initrd /initrd-version.img

#boot=/dev/sda

default=0 设置默认启动的title编号,从0开始

timeout=5 等待的超时时长

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz 指定背景图片

hiddenmenu 隐藏菜单

password 明文密码

password --md5 加密密码 (使用grub-md5-crypt 生成)


title Red Hat Enterprise Linux Server (2.6.18-308.el5) 内核标题,可以自由修改

root (hd0,0) 内核文件所在的设备,,gurb中所有设备都是(hd#,@) #表示第几个磁盘,@表示第几个分区

kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 内核路径和传递给内核的参数

initrd /initrd-2.6.18-308.el5.img ramdisk 文件路径



gimp 图像编辑软件

查看运行级别

runlevel

who -r


查看内核:

uname -r

uname -a


安装修复 grub

安装 grub stage 1

方式1,

grub

root (hd0,0) 设置

setup (hd0,0)

quit


方法2,

grub-install --root-directory=/(boot所在的父母目录) /device指定设备


grub 下启动系统


find 查找 内核和initrd文件位置

root (hd0,0)

kernel

initrd

kernel 初始化过程

1.设备探测

2.驱动初始化(可能从initrd中状态驱动模块)

3.以只读文件挂载文件系统

4.状态第一个进程init (pid:1)


/sbin/init (/etc/inittab)

upstart :ubuntu开发 d bus events dirver

systemd :


id标示符:那个运行级别:动作:运行的进程

si::sysinit:/etc/rc.d/rc.sysinit

动作:

initdefault:设定默认级别

sysinit:系统初始化

wait:等待切换至此级别

respawn:一旦程序终止,会重新重启


/etc/rc.d/rc.sysinit 完成的任务

1.激活udev和selinux

2.根据/etc/syscti.conf 设定内核参数

3.设定系统时钟

4.装载键盘映射

5.启用交换分区

6.设置主机名

7.根文件系统检测,并以读写方式挂载

8.激活raid 和 lvm 设备

9.启用磁盘配额

10.检查并挂载其他文件系统,/etc/fstab

11.清理过期的锁和pid文件

l0:0:wait:/etc/rc.d/rc.sysinit

rc0.d

k*

stop

s*

start

/etc/rc.d/init.d etc/init.d

服务类脚本:

start

sysv : /etc/rc.d/init.d

start|stop|restart|status

reload|configtest

chkconfig

checkconfig: 第一组数字,启动级别. 第二组SS启动顺序. 第三组KK关闭顺序

当chkconfig命令为脚本在rc#.d目录中创建链接时

runlevel s表示创建S*开头的文件

k表示创建K*开头的文件

S后面的数字表示优先级为SS

K后面的数字表示优先级为KK

runlevel 是- 表示所有都是K开头的链接

renlevel 可以省略,默认为2345级别

description:用户说明此脚本的简单功能, \换行

chkconfig --list 查看所有独立守护服务的设定,独立守护进程

--list 服务名 查看指定服务名

--add 服务名 添加到服务列表中

--del 服务名 删除

--level 级别 服务名 on|off


chkconfig --list httpd

chkconfig --level 2345 httpd on

/etc/rc.d/rc.local 系统最后启动的脚本

可以把需要的命令写入让其运行

/etc/inittab 任务:

1.设定默认运行级别

2.运行系统初始化脚本

3.运行对应的指定对应级别下额目录脚本

4.设定 ctrl+alt+del 的操作

5.定义ups电源

6.启动虚拟终端(2345)

7.启动图形终端(5)

守护进程额类型

独立守护进程

xinetd:超级守护进程,代理人

瞬时守护进程:不需要关联至运行级别

大商场和专卖店

核心 :/boot/vm开头

内核模块:ko /lib/modules/version/


内核设计:

单内核

模块化设计

微内核

装载模块:

insmod

modprobe

用户监控和访问内核的方式

/proc /sys


伪文件系统

/proc/sys:此目录中文件很多是可读写的

/sys :某些也可以写

设定内核参数的方法

echo 数值 > 重定向 /proc/sys/文件

sysctl -w kernel.hostname=

能立即生效,不能永久有效

永久有效,但不能立即生效,/etc/sysctl.conf

使用 sysctl -p 使内核在修改后生效

sysctl -a 显示所有内核参数选项

内核模块管理

lsmod 列出内核模块

modprobe 模块名 装载模块

modprobe -r 模块名 卸载模块名

modinfo 模块名 查看模块具体信息

insmod 模块路径 装载模块

rmmod 模块名 卸载模块

depmod 模块路径 设置模块的目录

内核中的功能除了核心功能之外,在编译时,大多数功能都有三种选择

1,不使用功能

2,编译成内核模块

3,编译进内核

如何手动编译内核

make gconfig:ghome 桌面环境使用,需要安装图形开发库 yum grouplist 安装

make kconfig:kde 桌面使用

make menuconfig 文本方式

make

make modules_install

make install

screen命令

screen -ls 列出已经建立的会话

screen 新建屏幕

screen -r ID 可以还原屏幕

ctrl+a,d 拆除屏幕

exit 退出

二次编译时清理,清理前,如果需要,请备份配置文件.config

make clean

make mrproper

mkinitrd initrd文件路径 内核版本号

mkinitrd /boot/initrd-`uname -r`.img `umane -r`

file=/etc/init.d/acpid

echo ${file##*/} 从左向右最后一次匹配 / 删除

acpid

echo ${file#*.} 从左向右第一次匹配 . 删除

d/acpid

echo ${file##*/*/}

acpid

echo ${file%.*} 从右向左 第一次匹配 . 删除

/etc/init

echo ${file%%/*} 从右向左 最后一次匹配 / 删除

系统启动流程

post---bios(boot device)---bootloader(mbr)---

kernel(initrd|initramfs)---init(/etc/inittab|)-----rootfs/sbin/init


/etc/inittab

设置默认运行级别

系统初始化 /etc/rc.d/rc.sysinit

运行指定级别的脚本

/etc/rc.d/init.d

/etc/rc.d/rc#.d

k

s

00-99:运行次数

启动虚拟终端

启动图形终端

/etc/rc.d/rc.sysinit

检测并以读写方式挂载根文件系统

设定主机名

检测并挂载fstab中的文件系统

启动SWAP分区

初始化外围硬件的设备驱动

根据/etc/sysctl.conf 设定内核参数

激活udv和selinux

激活udev和selinux

清理过期的锁和pid文件

状态键映射

RELE 6

UPSTART --init

/etc/inittab

/etc/init/*.conf

内核初始化

硬件探测

装载驱动

挂载根文件系统

启动用户空间的第一进程init

1,关机和重启

shuntdown

halt

reboot

poweroff

2,主机名

3,运行对应的服务脚本

4,启动终端

5,运行用户

6,定义单用户级别

7,状态网卡驱动

8,提供一个WEB服务器

busybox

kernel


制定安装

自动化安装

定制引导盘

mount -n 挂载时不更新/etc/mtab文件

cat /proc/mounts 可以查看当前系统挂载的fs


mingetty 创建终端登录 运行后会调用 /bin/longin 登录提示符



脚本编程

变量中字符的长度,$(#变量名)

终端提示信息

/etc/issue 文件的内容

设定内核参数

/etc/sysctl.conf

sysctl -p


用户


PAM

/etc/pan.d/*


绕过PAM:

/bin/login:

login:验证


nsswitch NETWORK SERVICE SWITCH

名称解析开关

框架:

库:libnss_file.so,

配置文件:/etc/nsswitch.conf

确定了去×××用户密码

/etc/passwd /etc/shandow

/root/.bash_profile 中的环境变量

PS1= '[ \u @ \h \W]\$'

单用户模式

exec init S

内核编译


busybox

kernel+rootfs

kernel+initrd(busybox)+rootfs(busybox)


查看本机硬件信息

1. cat /proc/cpuinfo

2. lsusb

3. lspci

4. hal-device


内核配置

make menuconfig

make gconfig

make kconfig

make config


报错为.config 文件


make

make modules install

make install


模块安装位置,/lib/modules/内核版本号/


部分编译

1,只编译某子目录下的相关代码:

make dir/

make arch/

make drivers/net/


2,只编译部分模块

make M=drivers/net/


3,只编译某一模块

make /drivers/net/pcnet32.ko


4,将编译完成的结果放置别的目录

make O=/tmp/kernel



如何编译busybox:


交叉编译

make arch=平台格式


$ {变量:-对应值} 如果变量为空或者未定义,则变量展开为"对应值",否则,展开为变量的值

$ {变量:+对应值} 如果变量为空或者未定义,无操作,否则,展开为"对应值"的值

$ {变量:=对应值} 如果变量为空或者未定义,则变量展开为"对应值"并将展开为变量的值


A=HELLOWORD

ECHO ${A:2:3} 第一个数字表示略过几个,第二个数字表示之后的长度

LLO


/etc/rc.d/init.d/服务脚本


服务脚本支持配置文件: /etc/sysconfig/同名服务脚本



mktemp

创建零时文件或目录

mktemp /tmp/file.XX X是随机生成的数值

mktemp -d 零时目录


信号:

kill -信号 PID

1:HUP

2:INT

9:KILL

15:TERM

脚本中的信号捕捉,但是9和15无法捕捉


ctrl + c: 2 INT


trap命令

trap `command` 信号列表

一行中执行多个语句,命令中间加: 即可


任务计划

在未来的某一点执行一次某任务


at

batch

at 时间

at>命令

at>ctrl + d

指定时间的方法

10:20

now+3m

noon中午,midnight午夜,teatime下午四点

at -l =atq 显示执行列表

at -d =atrm 删除

命令的执行结果,将以邮件的形式发送给安排任务的用户

batch 系统空闲时自动执行

/etc/at.allow /etc/at.deny

周期性的执行

cron:自身是个不间断的服务

anacron:cron的补充,能够实现让cron因为各种原因在过去的时间该执行的任务恢复正常执行一次

cron:

系统cron任务

/etc/crontab

分 时 天 月 周 用户 任务

用户cron任务

/varspool/cron/用户名

分 时 天 月 周 任务

时间的有效期

时间通配符表示

*:应对所有有效的取值

3 * * * * 每小时的第3分钟

22 4 * * 0 每周日的4点22分

,:离散时间点

10,40 * * * * 每小时的10分和40分执行,半小时任务

-:连续时间点

10 02 * * 1-5 每周1-5的2点10分

/:对应取值范围内的每多久一次

*/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 格式也不尽相同


文件 进程 内核 系统 命令 编译 模块 运行 用户 目录 设备 配置 信息 变量 路径 级别 服务 任务 时间 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 求生之路2怎么过滤RPG服务器 srp网络安全路由协议仿真 宝山区优势软件开发服务生产厂家 什么操作系统是客户机服务器结构 黄浦区智能软件开发使用方法 网络安全领域执法 大象精灵软件开发有限公司的盈利 sql筛选前100条数据库 计算机网络技术有平面设计吗 校园网络安全论文主要工作 数据库管理系统类型 搭建免流服务器工具 程序员改数据库违法么 数据库主要功能模块的设计与实现 四川省小学生网络安全教育平台 兴微网络技术 江西数控套料软件开发商 美国重视太空网络安全 系统软件开发师招聘 创新网络技术推广诚信服务 软件开发难不难好就业吗 杭州游卡网络技术客服QQ 软件开发时属于哪个行业领域 迅游科技网络安全 网络安全之隐私 c服务器端开发 哪款笔记本电脑合适软件开发 数据库查询的视图什么样子 失落的方舟steam美西服务器 hp服务器u盘启动设置
0