Linux一些

本文深入解析Linux系统的核心技术,涵盖启动流程、fork()函数的工作原理、软硬链接的区别及使用,以及关键目录如/etc、/usr的功能。同时,详细解释了文件存储机制,包括目录项、inode和数据块的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何将一个程序开机就启动
写进配置文件/etc/rc.d/rc.local,/etc/inittab会启动rc.local这个文件

软硬链接

  在Linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接,另一种是软链接或者也称符号链接。
  硬链接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的链接。只删除一个链接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。即文件真正删除的条件是与之相关的所有硬链接文件均被删除。
  软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号链接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

硬链接文件与原文件的inode节点相同,然而软链接文件的inode节点不同
当删除原始文件后,硬链接不受影响,但是软链接无效

linux系统可以用ln命令来创建链接文件。ln命令格式:
ln [参数] [源文件或目录] [目标文件或目录]
主要参数:
-i 交互模式,文件存在则提示用户是否覆盖。
-s 软链接(符号链接)。
-d 允许超级用户制作目录的硬链接。
-b 删除,覆盖以前建立的链接
软链接 (符号链接) ln -s source target
硬链接 (实体链接)ln source target

Linux启动流程

Linux启动流程
POST加电自检MBR引导GRUB加载内核init/etc/inittab确定运行等级打印loginShell
1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4.核心执行init程序,并获取默认的运行信息
5.init程序执行/etc/rc.d/rc.sysinit文件
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)
8.init执行/etc/rc.d/rc.local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机

fork()函数

  一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,相当于克隆了一个自己。
  fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
 1)在父进程中,fork返回新创建子进程的进程ID
 2)在子进程中,fork返回0
 3)如果出现错误,fork返回一个负值
在fork函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。
fork出错可能有两种原因:
 1)当前的进程数已经达到了系统规定的上限,这时errno的值被设置为EAGAIN
 2)系统内存不足,这时errno的值被设置为ENOMEM
创建新进程成功后,系统中出现两个基本完全相同的进程,这两个进程执行没有固定的先后顺序,哪个进程先执行要看系统的进程调度策略。每个进程都有一个独特(互不相同)的进程标识符(process ID),可以通过getpid()函数获得,还有一个记录父进程pid的变量,可以通过getppid()函数获得变量的值。

Linux /etc /usr这两个目录下分别存放的什么文件

/etc:存放系统管理和配置文件
/usr:用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录
/var:用于存放运行时需要改变数据的文件

Linux如何存储文件

一个文件由目录项、inode和数据块组成:
目录项:包括文件名和inode节点号。
Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。
数据块:包含文件的具体内容。

  理解Inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区",每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个扇区一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。“块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做Inode,中文译名为"索引节点”。Inode包含文件的元信息,包括:文件的字节数;文件拥有者的User ID;文件的Group ID;文件的读、写、执行权限;文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间;链接数,即有多少文件名指向这个Inode;文件数据block的位置。
  当查看某个文件时,会先从Inode表中查出文件属性及数据存放点,再从数据块中读取数据。Inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是Inode区(Inode table),存放Inode所包含的信息。
  每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值