2018年12月

1、文件系统相关概念

计算机文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。

文件系统通常使用硬盘光盘这样的存储设备,并维护文件在设备中的物理位置。但是,实际上文件系统也可能仅仅是一种访问数据的界面而已,实际的数据是通过网络协议(如NFSSMB9P等)提供的或者内存上,甚至可能根本没有对应的文件(如proc文件系统)。

严格地说,文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)。

文件系统是一种用于向用户提供底层数据访问的机制。它将设备中的空间划分为特定大小的块(或者称为),一般每块512字节。数据存储在这些块中,大小被修正为占用整数个块。由文件系统软件来负责将这些块组织为文件和目录,并记录哪些块被分配给了哪个文件,以及哪些块没有被使用。

不过,文件系统并不一定只在特定存储设备上出现。它是数据的组织者和提供者,至于它的底层,可以是磁盘,也可以是其它动态生成数据的设备(比如网络设备)。

100_000-files_5-bytes_each_--_400_megs_of_slack_space.png

空闲空间示例:每簇4,096字节的NTFS文件系统,每个文件5字节,共100,000个文件,逻辑字节总共500,000字节,但由于一个文件需独占整数倍个(最后一簇无论是否占满,仍会独占一整个簇),实际占用磁盘空间409,600,000字节(每个文件5字节独占一个簇)

- 阅读剩余部分 -

1、计划任务简介

计划任务是指将需要定时或周期性执行的任务通过计算机程序自动执行。在 Linux 中,提供这类服务的程序通常是 crond,常常也叫 crontab。

crond 是 Linux 下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与 Windows 下的计划任务类似。通常的,crond 是 Linux 发行版自带的服务,并且设置了开机自动启动,crond 进程的最小调度单位是分钟,即每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

2、深入了解 crontab

crond 的任务类别分为两类,系统任务和用户任务。他们对应的配置文件分别是 /etc/crontab/var/spool/cron/用户名

先看用户任务,用户任务的配置文件在 /var/spool/cron/用户名,其定义如下:

*****command
命令
    • 0-59:具体的分钟
    • *:每分钟
    • */n:n为数值,表示每n分钟
    • 0-23:具体的小时
    • *:每小时
    • */n:n为数值,表示每n小时
    • 1-31:具体的日期
    • *:每日
    • */n:n为数值,表示每n天
    • 1-12:具体的月份
    • *:每月
    • */n:n为数值,表示每n月
    • 0-7:具体的周几,0和7都表示周日
    • *:每周
    • */n:n为数值,表示每n周

- 阅读剩余部分 -

1、Linux启动过程概述

1.1、启动过程

启动过程.png

上图中,有 GRUB、GRUB2、init、systemd 等几个概念,下面做一下简单的说明。

GRUB2 相较于 GRUB 的提升:更健壮、可移植、更强大。支持 Legacy BIOS、EFI 和 OpenFirmware,支持 GPT 和 MBR 分区表。支持非 Linux 系统,如苹果 HFS 文件系统和 Windows 的 NTFS 文件系统。

systemd 被设计用来改进 sysvinit 的缺点,它和 Ubuntu 的 upstart 是竞争对手,然而从 Ubuntu 15.04 开始,Ubuntu 开始逐步使用 systemd 替代 Upstart 初始化系统。

systemd 的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd 尽可能减少对 shell 脚本的依赖。传统 sysvinit 使用 inittab 来决定运行哪些 shell 脚本,大量使用 shell 脚本被认为是效率低下无法并行的原因。systemd 使用了 Linux 专属技术,不再顾及 POSIX 兼容。

- 阅读剩余部分 -