存放系统命令
system binary 系统二进制文件
存放只有root用户才能操作的命令
devise
存放设备文件,每一个硬件进来都会映射成一个设备文件
如/dev/ttySAC0 这里的0指的是串口0
设备的分类:
字符设备
(每次读写的时候以字符为单位,通常是慢速的,其通常是顺序读取的,不支持随机存取。如:键盘 串口)
早期电话的调制解调器都是连在串口上的,如配置路由器交换机时,都是连接到串口上的。
块设备
(以块为单位,磁盘中的块一般包括
512字节,内存中的块一般包括1kb/4kb字节),这种方式虽然有浪费,但极大地提高了读写的效率,所以大容量设备如: 硬盘等都是块设备,键盘是字符设备。
设备创建 (自动和手动)
(1)手动创建:mknod命令
在驱动程序insmod成功之后,通过mknod命令手动创建设备文件至/dev目录下:mknod /dev/xxx c 主设备号 次设备号。("c"表示字符设备、"b"表示块设备、"p"表示网络设备)
(2)自动创建设备文件:mdev
自动创建需要内核支持sysfs文件系统
存放系统应用程序所对应的配置文件,在windows中对应的是注册表
用户级的配置文件通常和用户系统放在一起
注册表:效率要高一点 但注册表会越来越臃肿,导致注册表的检索效率变慢,且会影响软件的再次安装
配置文件: 容易找到和删除
重要的系统配置文件(linux中不以后缀名做区分):
passwd: 存放用户名
shadow: 存放口令/密码
(分开存的原因:早期是放一起明文存放的, root用户可以看到其他用户的口令,为了改进这一点将密码加密(用加密算法(需要存放密钥)或者 将密码进行散列计算(由散列反推是很难做到的,一般加上sault 这样散列的健壮性更好))放到shadow中)
group: 分组文件
/etc下的重要目录
library: 存放库文件
存放共享库和可加载模块(驱动程序) 该目录用于支撑根文件系统
普通用户可以查看,超级用户可以修改。
/lib/crda/pubkey 放置了一些公钥密码
/lib/systemd 存放了一些系统脚本,例如shutdown、sleep
/lib/console 放置了一些驱动安装程序(sh文件)
libc.so 存放c语言库
用户主目录,对于每个用户都有一个对应的主目录
/home下每一个字目录对应一个用户
/root用户的主目录存放在 /root下
/ :代表根目录或者是路径分隔符(windows下是 \ 可以记忆汉字八 因为windows是后出现的,所以是八的第二笔划)
里面存放的是共享,只读的程序和数据
os中共享用加锁(行加锁 表加锁)
/usr 下的目录
/include:c程序的头文件里给出了头文件的定义,加上lib库文件才能运行。
/lib:库文件
/share:与架构无关的数据
/local: 本地目录
/var 所有服务的登录的文件或错误信息文件(LOG FILES)都在/var/log下,此外,一些数据库如MySQL则在/var/lib下,还有,用户未读的邮件的默认存放地点为/var/spool/mail
存放系统运行状态信息 如cpu信息 硬盘信息
里面的文件由内核动态运行生成 不需要保存
/proc/1: 也叫做init进程,其是所有进程的父进程,它来收养所有的孤儿进程(proc/0用来创建1)
/proc/cpuinfo 处理器信息 输入命令: cat cpuinfo 即可看它的内容
/proc/dma 显示当前使用的DMA通道
/proc/interrupts 显示使用的中断 (可以由很多用户处理,信箱只能由一个用户处理)
/proc/meminfo 存储信息
/proc/modules 系统加载了那些模块
/proc/uptime 系统启动时间长度
挂载模块: mount -t proc(表明文件类型) proc(设备名)/proc(具体的目录 将设备的内容映射到哪里)
查看: cat /proc/cpuinfo
挂载点目录
有些将u盘挂载到 /media
用于存放临时文件(带~的同名文件:定时保存文件,防止断电等意外;还有中间文件)
它的删除一般由操作系统处理,一般用户不要手动处理
Linux 文件类型
普通文件 目录文件 字符设备文件 块设备文件
FIFO:通常用来保存中间数据 FIFO管道(命名管道:可以暂存上一部分传来的内容,等有程序接入时流出)
套接口 socket:ip+端口号(相当于插座和插头) 是服务器客户端模式 不是p2p模式
链接文件:硬链接和软链接
详情见这里
删除文件:一般是删除文件名和inode,但数据区不动
在删除的时候多次写入0,然后再删除,这样恢复的可能性极低
硬接文件:不同的文件名指向同一个inode
inode会记录有几个链接文件,当里面的记录为0时才会删除inode,文件才会被删除
文件属性:
r:读inode 和 数据区
w:写数据区 inode被动改变
x:执行
Busybox: (1)开源 (2)体积足够小,将众多unix命令集合在1kb范围内 (3)只需要在/dev目录创建设备
init进程(PID = 1)
对应的可执行程序为:/sbin/init
开源的代码:首先要查看开源协议