1.简述linux的起源与发展

Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。它的建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。通常所说的Linux,指的是GNU/Linux ,即采用Linux内核的GNU操作系统。 GNU 代表既是一个操作系统,也是一种规范。 Linux最早由Linus  Torvalds1991年开始编写。在这之前,Richard Stallman创建了Free Software FoundationFSF)组织以及GNU项目,并不断的编写创建GNU程序(程序的许可方式均为GPLGeneral  PublicLicense)。在不断的有程序员和开发者加入到GNU组织中后,变造就了今天我们所看到的Linux

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途,同时它们都尽可能被编写得更好

2.linux的版本有什么变化和差异

linux的版本分为发行版和内核版。其中内核版分为稳定版和测试版。

目前最著名的发行版本:DebianubuntuOpenSuse(Suse)CentOSfedora等。国内比较著名的红旗linux版本Linux操作系统的组成模块及功能

3.linux系统有哪些特色与优势?

1Open的思想,开放源代码,自主改进或定制

2Free的精神,自由使用

3、完善的网络功能,内置TCP/IP协议

4、真正意义上的多任务、多用户操作系统

5、完全运行于保护模式,充分利用了CUP性能

6、先进的内存管理机制,更加有效地利用物理内存

7、稳定性,安全性,高效性

8、与UNIX系统在源代码级兼容,符合IEEE POSIX标准

9、支持数十种文件系统格式

10、设备独立性,良好的可移植性

11、无昂贵的版权费,低成本

4.造成Linux命令众多的原因有哪些?

1. linux由众多人开发,集万家之所长,每个人都将自己的思想注入到linux系统中

2. linux几乎每一条命令都跟有很多参数,造成命令的种类繁多

3. linux的命令可以进行编程——shell编程,变化多样

4. linuxshell分很多种,如bash,bsh等,造成诸多变化

5. 继承,linux继承于Unix,当然继承了其很多命令

6. linux中同一功能可以有多种命令的表达

7. 命令可以组合使用,形成具有不同功能的新命令,如管道符“|

5.linux管理功能模块有哪些?

进程管理内存管理文件系统设备控制网络管理关系图有:

6.linux安装准备工作及安装模式

Linux操作系统的安装方式有三种:

a.直接安装

利用系统光盘放入光驱直接安装。如果没有意外,直接下一步即可。在安装的过程中,若出现请插入第二张光盘,则需要把光盘2放入光驱,一般在redhat系统有这个要求。

b.虚拟机安装

利用VMWare或者VirtualBox进行虚拟安装。推荐初学者使用这种方法,因为这种方法不会破坏电脑中的系统,整个Linux系统,就像一个应用软件一样,使用中除了会占用一点内存外,其他的,和正常使用系统一样。
c.虚拟光驱安装

虚拟光驱,顾名思义,就是在电脑中虚拟出一个光驱,来打开电脑中的iso镜像文件。在网上下载一个Linux的镜像文件iso系统,如果装了虚拟光驱,则只要用虚拟光驱进行安装即可。当然,也可以不用虚拟光驱,直接用解压工具进行解压。然后,双击里面的wibu即可,但是这样解压会很慢,而且使用虚拟光驱安装系统,要安装在电脑上的一个空磁盘中,使用之前,要先格式化这个盘。

以上三种方法安装,Ubuntu安装都可以。对于Linux专业开发者或者Linux发烧友,可以使用第一种和第三种,因为他们比较熟练Linux系统。而作为初学者,建议使用虚拟机安装。安装好之后,我们可以先备份一份,以后如果Linux系统崩溃了或者要转移到其他电脑上,直接在电脑上安装一个虚拟机,再打开备份好的虚拟机即可,建议初学者使用VirtualBox,因为它是免费的,而且安装比较简单,基本上不需要配置什么就可以使用。三种方法中,除了第一种方法外,其他两种安装的方法,都是将系统当作一个windows下的一个软件使用。在装系统的时候,都会面临着一个分区的问题,在系统中,会有一个swap分区,我们可以手动分区,也可以自动分区。

对于系统安装的详细步骤,这里不一一详解,大家可以上百度查询,基本上都是傻瓜式装机。

7.linux下的分区类型及其实现

       Linux的分区比较重要,这里详细介绍一下。

1/分区。用于存储系统文件。
2swap,即交换分区,也是一种文件系统,它的作用是作为Linux的虚拟内存。
Windows下,虚拟内存是一个文件:pagefile.sys;而Linux下,虚拟内存需要使用独立分区,这样做的目的据说是为了提高虚拟内存的性能。
3/home:是用户文件夹所在的地方。如果独立划分/home,即使Ubuntu不能启动,也可以用Live CD启动来取得自己的文件资料。
4/boot:包含了操作系统的内核和在启动系统过程中所要用到的文件。
很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——1024柱面之前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个 /boot
其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。
但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后的分区中的 Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。
5/usr/local:是 Linux系统存放软件的地方。
建议/opt/usr/usr/local独立出来的教程,基本上也是非常老的了。使用Ubuntu时,我们一般都是使用系统的软件包管理器安装软件,很少自己编译安装软件。而建议独立/usr/opt/usr/local的理由无非是为了重装系统时不再重新编译软件而直接使用早先编译的版本。不过对于大多数普通用户来说,这个建议通常是没有意义的。
6/var:是系统日志记录分区。
7/tmp分区,用来存放临时文件。
建议把/var/tmp独立出来的教程通常是面向服务器的。因为高负载的服务器通常会产生很多日志文件、临时文件,这些文件经常改变,因此把/var /tmp独立出来有利于提高服务器性能。但如果你用Ubuntu是做桌面的,或从来不关心过系统日志这东西,就没有必要独立的为/var/tmp挂载分区。
还有些老旧的教程中建议把Linux安装在主分区中,或在/boot下挂载一个主分区。事实上,这也是不需要的。Linux的所有分区都可以位于逻辑分区中。所以请放心的把Linux安装在逻辑分区中。
Linux的文件系统(分区格式)主要有ext3ReiserFSXFSJFS等。同时Linux也可以读写使用FATFAT32NTFS文件系统的分区。
Ubuntu默认的文件系统是ext3
或许有人会告诉你其他文件系统会有什么什么优点,ext3会有什么什么不好,但如果你对文件系统并不了解的话,我的建议就是使用默认的ext3,默认的设置可能不一定是性能最好的,但对普通用户一定是最稳定最安全最适合的。
最大分区大小:ext34TBReiseFS16TBFAT32Windows XPWindows 2000里的最大分区是32GB;而Linux中的FAT32则可以支持到2TB
最大文件大小:ext32GB4GBReiseFS8TBFAT324GB
如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用三分区方案:
1“/”分区:使用ext3文件系统;分区容量为10GB15GB
2“swap”分区:用于交换空间。内存小于或等于 512MBswap分区容量为内存大小的2倍;内存大于512MB的,swap分区容量等于内存大小。
3“/home”分区:使用ext3文件系统;分区容量为“/”“swap”以外的剩余空间

linux系统中至少必须有两个挂载点(磁盘分区),分别是 / swap ,其余是否要将其他的挂载点独立分割出来则视你的规划需求而定。可参考以下建议:
swap的大小约等同你的内存大小,或稍大 初次接触的新手或硬盘空间有限Desktop的安装建议:
挂载点装置说明
/            /dev/hda1       可用空间 - swap大小后的所有空间
swap      /dev/hda2        大约内存大小建议至少512Mb
高级用户 Desktop的安装建议:
挂载点装置说明
/          /dev/hda1     15G
/home  /dev/hda2 最大的剩余空间
/boot     /dev/hda3   128MB左右
swap     /dev/hda5 大约内存大小(建议至少512MB)
高级用户 Server的安装建议:
挂载点装置说明
/          /dev/hda1        15G
/home      /dev/hda2      最大的剩余空间
/boot     /dev/hda3   128MB左右
swap     /dev/hda5    大约内存大小(建议至少512MB)
/var        /dev/hda6   视服务器功能决定大小
安装Liunx Ubuntu磁盘分区的配置与建议事项就说到这里,有了以上的相关说明相信要将自己的硬盘规划好,应该不会是件难事。
Linux 规定了主分区(或者扩展分区)占用 1 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1hda2hda3hda4,而逻辑分区占用了 hda5 hda16 12 个号码。因此,Linux 下面每一个硬盘总共最多有16 个分区。
因此 hda1- hda4 是主区的意思。 hda5以后是逻辑分区!

8.linux5种状态的转换

linux系统中,一个进程有5种可能状态,在sched.c定义了状态标识:

#define TASK_RUNNING 0 // 正在运行或可被运行状态

#define TASK_INTERRUPTIBLE 1 // 可被中断睡眠状态

#define TASK_UNINTERRUPTIBLE 2 // 不可中断睡眠状态

#define TASK_ZOMBIE 3 // 僵死状态

#define TASK_STOPPED 4 // 停止状态

各种状态的转换图如下:

9.linux进程调度的三种模式

高级调度:又叫长调度作业调度间接调度。它决定处于输入池的哪一个后备作业可以调入主系统做好运行的准备,成为一个或者一组就绪进程。系统中的一个作业只有一次高级调度。

中级调度:又称中程调度或者对换调度。它决定处于交换区的就绪进程哪一个可以调入主存,以便直接参与对CUP的竞争。

低级调度:又称短程调度进程调度。它决定处于主存中的就绪进程哪一个可以占用CPU。它是操作系统中最活跃,最重要的调度程序,对系统的影响很大。

linux内核的三种调度方法
1SCHED_OTHER 分时调度策略,
2SCHED_FIFO实时调度策略,先到先服务
3SCHED_RR         实时调度策略,时间片轮转

10.linux提供了哪几种进程通信的机制?

管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量(semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号(sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存(shared memory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
套接字(socket):套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

11.linux下的进程控制块?

Linux内核使用进程描述符(又称为进程控制块)来描述一个进程的完整信息。
Linux进程控制块的结构如下:

进程控制块的主要内容

进程标识符process ID

进程描述符中的标识符字段

字段名

说明

pid

进程的PID

tgid

线程组领头进程的PID

pgrp

进程组领头的进程PID

session

会话领头进程的PID

1、进程状态:反映进程当前状态,包括以下几种可能的状态。

TASK_RUNNING(可运行状态):进程是可执行的,它或者正在执行(运行状态),或者在运行队列中等待执行(就绪状态)

TASK_INTERRUPTIBLE(可中断的等待状态):进程正在等待某一事件的发生(如某一硬件中断或一个信号),它处于挂起或称睡眠状态。

TASK_UNINTERRUPTIBLE(不可中断的等待状态)除了不会因为接收到信号而被唤醒从而投入运行外,这个状态与可中断等待状态相同。

TASK_ZOMBIE(僵死状态)表示进程已经结束,但其父进程还没有调用wait()系统调用。子进程的进程描述符在此之前仍然被保留

TASK_STOPPED(停止):表示进程停止执行,进程没有投入运行也不能投入运行。常这种状态发生在接收到SIGSTOPSIGTSTPSIGTTINSIGTTOU等信号的时候。

进程基本信息

2、每个进程都有一个进程基本信息块

在进程描述符的thread_info字段中包含了指向该结构的指针,与进程调度有关的信息

根据进程优先级把进程组织成多个队列,最多可有140个。

进程的亲属关系:进程描述符中的亲属关系字段

字段名

说明

real_parent

指向创建p进程的父进程的描述符,若该父进程不再存在,就指向1#进程

parent

指向p进程的当前父进程,它的值通常与real_parent一致,偶尔也可不同

children

链表的头部,链表中的所有进程都是p进程创建的子进程

sibling

指向兄弟进程链表中的下一个或前一个元素的指针

3、其他字段

在进程描述符的thread_info字段中包含了指向各种结构的指针。

fs —— 指向当前目录结构fs_steuct

files —— 文件描述符结构files_struct

mm —— 主存描述符结构mm_struct

signal——信号结构signal_struct

tty——进程相关的tty_struct结构

12.linux进程管理和进程控制的相关命令?

进程管理和控制的常用命令:topfreepspstree(p)killnohupjobsfgbgCtrl+Z(re)nice等。

Top: 性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似windows的任务管理器。

Free:显示内存和swap的详细信息,包括bufferscachedsharedfree

Ps:显示瞬间进程的状态,不是动态的。常用格式ps -ef ps aux f参数以长格式输出。

Pstree:将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),可以指定显示某个使用者的进程。

Kill终止进程。向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。常用格式:kill pidkill -9 pid

Nohup不挂断地运行命令(让程序后台运行)。守护进程可以直接在命令后面加上&符号,普通程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。(有些人用nohup运行程序后直接按关闭按钮关掉连接的窗口,这样做不规范,程序会随着session的关闭而终止。正确步骤是:先按任意键回到shell终端,然后输入exit退出)。

Jobs查看当前在后台运行的程序。

Fg将后台的命令调至前台继续运行。格式:fg %jobId,这里不是进程的pid,是用jobs查到的jobid

Bg将一个在后台暂停的命令,变成继续执行。格式:bg %jobId

Ctrl+Z:这是组合键,将一个正在前台执行的命令放到后台,并暂停。

Nice:内核根据进程的nice值决定进程需要多少处理器时间,取值范围-2020,值越低优先级越高,Ps axl可以查看 NI 值。降低优先级可以直接用"nice -niceNum 命令"这种格式;提升优先级用"nice --niceNum 命令"的格式,如果为负数则需要root权限。


13.linux下用户有哪几种,各有什么权限差异?

1. 超级用户

用户名为root,具有一切权限,只有进行系统维护或其他必要情况下才使用,以避免系统出现安全问题。

2. 标准用户

RedHat Linux 9安装的过程中,系统会自动创建许多用户账号,而这些默认的用户就称为标准用户。这些用户账号除了“root”代表超级用户之外,其余账号都是系统账号,也就是应用程序在执行时的身份。需要注意的是,标准账号是操作系统安装时,自动建立的用户启动相应的应用程序,超级用户在向系统添加普通用户的时候,不能和系统中已有的标准用户同名。系统中的部分标准账号见下表。

用户名称

用户ID

ID

主目录

使用的shell

root

0

0

/root

/bin/bash

bin

1

1

/bin

/sbin/nologin

daemon

2

2

/sbin

/sbin/nologin

adm

3

4

/var/adm

/sbin/nologin

lp

4

7

/var/spool/lpd

/sbin/nologin

sync

5

0

/sbin

/bin/sync

shutdown

6

0

/sbin

/sbin/shutdown

halt

7

0

/sbin

/sbin/halt

mail

8

12

/var/spool/mail

/sbin/nologin

news

9

13

/etc/news


uucp

10

14

/var/spool/uucp

/sbin/nologin

operator

11

0

/root

/sbin/nologin

3. 标准组

RedHat Linux 9安装的过程中,系统除了会自动创建默认的用户账号外,也会新增标准组账号。同样,除了“root”组是用来组织管理者之外,其余的账号都是提供给应用程序在执行时使用。Red Hat Linux 9的部分标准组见下表。

组名称

IDGID

组成员

root

0

root

bin

1

rootbindaemon

daemon

2

rootbindaemon

sys

3

rootbinadm

adm

4

rootbindaemon

tty

5


disk

6

root

lp

7

daemonlp

14.Linux哪些命令对用户进行修改管理?

1、在Linux下输入su 切换到root用户

[tom@myhost tom]$ sutom账号下使用su命令

Password输入root账号密码

[root@myhost tom]#进入root账号

使用su命令切换到用户:

[root@myhost root]#su tomroot账号下输入su user进入tom用户

[tom@myhost tom]$

2、添加用户帐号

RedHat Linux 9中添加用户账号可以使用adduseruseradd命令,因为adduser命令是指向useradd命令的一个链接,因此,这两个命令的使用格式完全一样。

useradd命令的使用格式如下:

useradd[参数]新建用户账号

常用参数和含义见下表。

-d  <dirname>

指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录

-s  <shellname>

设置用户登录系统时使用的shell,默认为/bin/bash

-g  <GID>

指定用户所属的组,该组的GID必须是在/etc/group文件中登记过的,即该组已存在。如果不使用该参数,系统自动建立用户同名的组,并将该用户纳入该组

-c  <comment>

用于指定账号信息字段的内容

-u  <UID>

指定用户的UID

-e  <expired>

指定账号的有效期限,格式为YYYY-MM-DD

3、变更用户命令

RedHat Linux 9中,超级用户可以使用passwd命令为普通用户设置或修改用户口令。用户也可以直接使用该命令来修改自己的口令,而无需在命令后面使用用户名。该命令的常用格式为:

passwd[参数]用户名# 可以用此命令来修改所有的用户密码,包括root(需权限)

常用的参数及含义如表所示

-d

删除用户口令,此后该用户登录系统是无需口令

-l

临时锁定用户账号,该账号此后无法登录系统,直到解锁

-u

解除账号的锁定

--stdin

在用户设置口令的时候,通常并不显示内容,并且需要用户输入两次口令以便验证两次输入是否一致。使用该参数表示在用户设置口令的时候,显示口令内容,同时只需要用户输入口令一次。

4、查看用户信息

1) whoami命令

该命令用户查看当前系统当前账号的用户名。由于系统管理员通常需要使用多种身份登录系统,例如通常使用普通用户登录系统,然后再以su命令切换到root身份对传统进行管理。这时候就可以使用whoami来查看当前用户的身份。

该命令的使用格式如下:

whoami

2) who命令

该命令用于查看当前所有登录系统的用户信息,使用格式如下:

who[选项]

常用的参数及含义如下表所示。

-mam I

只显示运行who命令的用户名、登录终端和登录时间

-q--count

只显示用户的登录账号和登录用户的数量

-u

在登录时间后显示该用户最后一次操作到当前的时间间隔

-u--heading

显示列标题

3) w命令

该命令也可以查看登录当前系统的用户信息。与who命令相比,w命令的功能更强大,它不但可以显示当前有哪些用户登录到系统,还可以显示这些用户正在进行的操作,并给出更加详细和科学的统计数据。 w命令的格式如下:

w[选项][用户名]

如果w命令携带用户名,则只显示指定用户的信息,否则显示当前所有登录用户的信息。其常用参数和含义如表所示。

-h

不显示各列的标题

-l

显示详细信息列表,此为预设值

-s

使用短列表,不显示用户登录时间、JCPUPCPU时间

-u

忽略执行程序的名称,以及该程序的PCPU时间

4) finger命令

该命令用于查找指定用户,并显示该用户的相关信息。该命令常用格式如下:

finger[参数][用户名]

5、修改用户信息

1) chfn命令

该命令用于修改系统中存放的用户信息。这些用户信息包括:用户全名、工作单位、工作电话和家庭电话等。

该命令使用格式如下:

chfn[用户名]

2) usermod命令

RedHat Linux 9中,除了在添加用户时指定用户的主目录、登录时的shell和所属的组外,还可以在用户创建后,使用usermod命令来修改用户的这些信息。usermod命令的使用格式如下:

usermod[选项][用户名]

常用参数和含义见下表。


-d  <dirname>

重新指定用户登录系统时的主目录

-s  <shellname>

设置用户登录系统时使用的shell

-g  <GID>

指定用户主组

-G  <GID>

重新指定用户所属的组名

-u  <UID>

重新指定用户的UID

-e  <expired>

指定账号的有效期限,格式为YYYY-MM-DD

-c  <comment>

用于指定账号信息字段的内容

6、删除用户

该命令的使用格式如下:

userdel[-r][用户名]

如果使用参数-r,则表示在删除用户的同时,将该用户的主目录一并删除。

7、在登陆的用户间传递消息

Linux系统中,提供了几个用于向登录用户发送消息的工具,以便管理员在需要的时候使用这些工具向其他登录用户发送系统消息。

1) mesg命令

该命令用于设置终端机的写入权限,即如果mesg使用y参数表示允许其他用户将消息传到自己的终端机界面上。如果mesg使用n参数表示不允许其他用户将消息传到自己的终端机界面上。该命令的使用格式如下:

mesg[选项]

常用参数和含义见下表。

参数

y

允许其他用户将消息传到自己的终端机界面上

n

不允许其他用户将消息传到自己的终端机界面上

2) wall命令

该命令能将消息内容发送给每一个在线的用户,但是该用户的必须首先使用mesg命令允许其他用户将消息传到其终端上。改名的使用格式如下:

wall<message>

也可以直接使用wall,然后输入信息,不过信息结束时需加上 EOF (使用键盘键Ctrl+D)

3) write命令

该命令可以向指定的用户发送信息。该命令的使用格式如下:

write<username>[ttyname]

其中参数ttyname是可选项,当一个用户多次登录系统时,可以选择使用该参数指定其登录的终端。

15.linux文件系统的特点及实现方式

绝大多数Linux发行版支持ext2ext3reiser文件系统,因为它们是原生的Linux文件系统,它们分为虚拟文件系统、日志型文件系统和ext2ext3reiser文件系统。由于VFS和日志文件系统比较重要,下面重点讲讲它们两个。

虚拟文件系统(Virtual file system, VFS)

用户进程和底层各种文件系统之前的抽象接口。VFS主要提供两方面的功能:

1、提供管理底层文件系统的功能组件(inodedirectory entrypage cache)

2、提供访问底层文件系统的方法(readwriteopen等系统调用)

下图说明了VFS与用户进程和底层文件系统之间的交互:

由于VFS的存在,用户进程不需要了解底层具体使用了哪种文件系统,VFS为用户进程访问底层文件系统提供了统一的接口。

区别于VFS(Virtual Filesystem Switch),虚拟文件系统转换器。

非日志型文件系统

对于早先的非日志型文件系统(non-journaling file system),当进行一个写操作时,操作系统首先修改文件系统的元数据(metadata),然后再写入实际用户数据。

如果元数据正在被修改时,发生系统崩溃或机器掉电,文件系统就有可能被损坏。使用fsck工具可检测并修复文件系统损坏的问题,但对于非日志型文件系统,fsck得扫描所有元数据,假如磁盘卷(volume)非常大,那就得花费很长时间进行检测和修复。

因此非日志型文件系统不仅不利于保护数据的完整性,而且在文件系统损害时,也不利于文件系统的恢复。为解决这些问题,日志型文件系统就出现了。

日志型文件系统

相比非日志型文件系统,日志型文件系统(Journaling file system)增加了一个特别的区域:日志区(journal area),作为一个中间层,元数据和实际数据被写入文件系统之前,可先写入日志区:

16.常见linux下操作命令

系统

# uname -a # 查看内核/操作系统/CPU信息 (uname –r也是差不多的)
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名,也可以修改主机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量

资源

# free -m # 查看内存使用量和交换区使用量,以M为单位显示,还有free –Bfree –G
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载

磁盘和分区

# mount | column-t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息

进程

# ps -ef # 查看所有进程
# top # 实时显示进程状态

用户

# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务

服务

# chkconfig--list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务

程序

# rpm -qa # 查看所有安装的软件包


查看系统信息
cat /proc/cpuinfo - cpu (i.e. vendor, mhz, flags like mmx)
cat /proc/interrupts - 中断
cat /proc/ioports - 设备io端口
cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions
所有设备的所有分区
cat /proc/pci - pci设备的信息
cat /proc/swaps - 所有swap分区的信息
cat /proc/version - linux的版本号相当于 uname -r

17.linux下文件有哪些类型?

LINUX中的文件类型有:
d  目录文件。
l  符号链接(指向另一个文件,类似于windows下的快捷方式)
s  套接字文件。
b  块设备文件,二进制文件。
c  字符设备文件。
p  命名管道文件。

18.linux下系统目录文件有哪些?各有什么功能?

目录树的主要部分有root/)、/usr/var/home等等。下面是一个典型的linux目录结构如下:
/
根目录
/bin
存放必要的命令
/boot
存放内核以及启动所需的文件等
/dev
存放设备文件
/etc
存放系统的配置文件
/home
用户文件的主目录,用户数据存放在其主目录中
/lib
存放必要的运行库
/mnt
存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppycdrom子目录下。
/proc
存放存储进程和系统信息
/root
超级用户的主目录
/sbin
存放系统管理程序
/tmp
存放临时文件的目录
/usr
包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var
包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等。建议单独的放在一个分区。
2.6
的内核还有个/sys的目录,内容和/proc差不多

19.linux 下文件的属主类型和权限

Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容;

[root@localhost~]# ls -lih
2408949 -rwxr-xr-x 1 root root    7 04-21 12:47 lsfile.sh
2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.17
2408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir
2408258 lrwxrwxrwx 1 root root    7 04-21 22:16 sun001.txt ->sun.txt
2408263 -rw-r--r-- 2 root root   11 04-20 14:17 sun002.txt
2408263 -rw-r--r-- 2 root root   11 04-20 14:17 sun.txt

解释:
第一字段: inode
第二字段:文件种类和权限;
第三字段:硬链接个数;
第四字段:属主;
第五字段:所归属的组;
第六字段:文件或目录的大小;
第七字段和第八字段:最后访问或修改时间;
第九字段:文件名或目录名

lsfile.sh为例:

2408949-rwxr-xr-x 1 root root    7 04-21 12:47 lsfile.sh

inode 的值是:2408949
文件类型:文件类型是-,表示这是一个普通文件;文件权限:文件权限是rwxr-xr-x ,表示文件属主可读、可写、可执行,文件所归属的用户组可读可执行,其它用户可读可执行;
硬链接个数:lsfile.sh这个文件没有硬链接;因为数值是1,就是他本身;
文件属主:也就是这个文件归哪于哪个用户,它归于root,也就是第一个root
文件属组:也就是说,对于这个文件,它归属于哪个用户组,在这里是root用户组;
文件大小:文件大小是7个字节;
访问可修改时间这里的时间是最后访问的时间,最后访问和文件被修改或创建的时间,有时并不是一致的。

20.权限用8进制表达,0~7分别表示什么权限?

r 代表读,w 代表写,x 代表执行,
如果可读,权限是二进制的100,十进制是4
如果可写,权限是二进制的010,十进制是2
如果可运行,权限是二进制的001,十进制是1
具备多个权限,就把相应的 421 相加就可以了:
若要 rwx 4+2+1=7
若要 rw- 4+2=6
若要 r-x 4+1=5
若要 r-- =4
若要 -wx 2+1=3
若要 -w- =2
若要 --x =1
若要 --- =0

21.权限修改命令的使用

chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1. 文字设定法
chmod who+ | - | =mode文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示用户(user,即文件或目录的所有者。
g 表示同组(group)用户,即与文件属主有相同组ID的所有用户。
o 表示其他(others)用户
a 表示所有(all)用户。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“us”设置文件的用户ID位,“gs”设置组ID位。

t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
 文件名:以空格分开的要改变权限的文件列表,支持通配符。
 在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+ro+r example
 使同组和其他用户对文件example有读权限。
2. 数字设定法
 我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,

2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从07的八进制数,其顺序是(u)(g)(o)。

数字设定法的一般形式为:
chmod mode文件名

22.怎样挂载和卸载文件系统

   mount / umount

1. 挂载光驱

    # mount -t iso9660 /dev/cdrom /mnt/cdrom

2. 挂载光驱,支持中文

      # mount -t iso9660 -ocodepage=936,iocharset=cp936 /dev/cdrom /mnt/cdrom

3. 挂载 Windows 分区,FAT文件系统

      # mount -t vfat /dev/hda3/mnt/cdrom

4. 挂载 Windows 分区,NTFS文件系统

      # mount -t ntfs -oiocharset=cp936 /dev/hda7 /mnt/had7

 5. 挂载 ISO 文件

       # mount -o loop/abc.iso /mnt/cdrom

 6. 挂载软驱

       # mount /dev/fd0/mnt/floppy

 7. 挂载闪盘

      # mount /dev/sda1 /mnt/cdrom

 8. 挂载 Windows 操作系统共享的文件夹

      # mount -t smbfs -ousername=guest,password=guest //machine/path /mnt/cdrom

 9. 显示挂载的文件系统

      # mount

      # cat/etc/fstab        显示系统启动自动加载的文件系统

       # cat/etc/mtab        显示当前加载的文件系统

23.linux 下建立文件系统需要哪些步骤及命令?

fdisk用法:用于硬盘分区

mkfs用法:在硬盘分区上创建文件系统

mkfs [ -V ][ -t fstype ] [ fs-options ] filesys [ blocks ] 创建一个Linux文件系统

mkfs是用来在一个设备上建立Linux文件系统,通常是在硬盘分区。filesys是设备名(如分区/ dev/hda1/ dev/sdb2)blocks是在文件系统中使用的块的数量,mkfs返回01的表示成功/失败。实际上,mkfs为大量不同的命令的提供前端,如mkfs.ext2,mkfs.ext3.mkfs.msdos等等,mkfs检索一系列目录,如/sbin,/sbin/fs, /sbin/fs.d, /etc/fs, /etc(具体的目录在编译时定义,但至少包含/sbin/sbin/fs),最终在PATH环境变量中定义的目录中找到。

  选项说明:

-V 显示mkfs版本信息,这个选项会抑制其他命令,只用来测试

-t fstype 指定文件系统,未指定,默认使用ext2文件系统

fs-options 特殊文件系统选项使用时则略过去读特殊文件系统建立档下列的项不保证能支援所有的文件系统。

-c 在建立文件系统前检查是否有坏块

-l filename 从文件中读取坏轨信息

-v 显示mkfs版本信息

mkfs -t ext3/dev/hda1 /dev/hda1创建ext3文件系统

mkfs -t ext3-v -c /dev/hda1 同上,但是提供的信息更多,扫描坏块

mkfs.ext3 -c/dev/hda1 同上

mkfs.ext3 -c-L mypartition /dev/hda1 同上并添加分区标签

24.关于文件系统操作的命令有哪些,各有什么功能?

1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件。

2. chgrp:用来改变文件或目录所属的用户组,命令的参数以空格分开的要改变属组的文件列表,文件名支持通配符,如果用户不是该文件的所有者,则不能改变该文件的所属组。

3. chmod:用于改变文件或目录的访问权限,该命令有两种用法:一种是使用图形化的方法,另一种是数字设置法。

4. chown:用来将指定用户或组为特定的所有者。用户可以设置为用户名或用户ID,组可以是组名或组ID。特定的文件是以空格分开的可以改变权限的文件列表,文件名支持通配符。

5. clear:用来清除终端屏幕。

6. cmp:用来比较两个文件的大小。

7. cp:(copy)可以将文件或目录复制到其他目录中,就如同Dos下的copy命令一样,功能非常强大。在使用cp命令时,只需要指定源文件名或目标目录即可。

8. cut:用来移除文件的部分内容。

9. diff:用来找出两个文件的不同之处。

10. du用来显示磁盘的剩余空间的大小。

11. file:用来显示文件的类型。

12. find:用来在目录中搜索文件,并执行指定的操作。

13. head:只查看文件的头几行内容,而不必浏览整个文件。

14. ln:可以在文件之间创建链接,实际上是给某个文件指定一个访问它的别名。

15. less:用法与more类似,可以查看超过一屏的文件内容,不同的是less除了可以按空格键向下显示文件外,还可以利用方向键来滚动显示文件,要结束浏览,只要在less的提示符后按Q即可。

16. locate:可用于查找文件,且比find命令的搜索速度快。

17. lslist):用来显示当前目录中的文件和子目录列表。

18. mkdir(makedirectory):建立子目录。

19. more:用于显示内容超过一屏的文件,为了避免文件内容显示瞬间就消失,可以使用more命令让文件显示满一屏时暂停,在按下任意键的时候继续显示下一屏的内容。

20. rmkdir(remove directory):用来删除子目录或无用的目录件。

21. mv(move):可以将文件以及目录移到其他位置,或更改文件以及目录的名称。

22. pico:可指定文本的编辑方式。

23. pwd(print working directory):可显示用户当前所在的目录。

24. rm:用来删除系统中过时或无用的文件,可以删除目录中的文件或目录本身,对于链接文件,原有文件保持不变。

25. sort:将文本文件自动分类。

26. stat:用于显示文件或文件系统的状态。

27. Strings:显示文件中要打印的字符串。

28. tail:输出文件的结尾。

29. touch:改变文件的时间戳。

30. umask:用于启动bash shell

31. uniq:移除已分类文件中的重复文本行。

32. vi:启动vi文本编辑器。

33. wc:显示文件中字节、词组合文本行的数目。

34. whereis:查找特定目录下的原始程序,二进制程序或用户手册等文件的位置。

35. man:如果用户对某个命令想了解更详细的话,可使用此命令。

36. dd:复制一个文件。

37. df:查看一个文件系统的磁盘空间使用情况。

38. edquoat:设置用户与用户组的磁盘空间限制,即Windows系统的配额。

39. fdformat:格式化软盘。

40. fdisk:执行Linux下的磁盘分区。

41. mkfs:建立一个Linux文件系统。

42. mkswap:创建一个Linux交换分区。

43. mount:挂载一个文件系统。

44. quota:限制和显示用户可用的磁盘空间。

45. swaponswapoff:启用或取消设备和文件的交换页。

46. quotaonquotaoff:启用或取消quota限制。

47. umount:取消文件系统的装备。

25.虚拟文件系统的作用是什么?

作为一个通用操作系统,linux需要为用户程序提供一个统一的系统操作界面来完成对各种文件的访问。虚拟文件系VFS就是这么一个统一的、抽象的、虚拟的文件操作界面。你可以认为它是应用层与驱动层之间的一个中间层,对上提供一组标准的接口open/close/read/write/lseek,对下则又根据不同的文件类型调用不同的驱动程序提供的接口完成对具体设备的操作。这些操作通常是通过读写外设上(磁盘也是外设)的控制寄存器和存储区间来完成的。

26.为什么要备份,备份的类型和策略有哪些?

不管系统多么可靠,总会发生一些意想不到的事情,致使系统数据丢失。因此使用备份来保护数据不丢失是一种非常重要的手段,尤其在系统数据非常重要的时候。经常进行数据备份能够减少偶然破坏造成的损失,保证系统能够从错误中恢复正常运行。备份不应该成为一个长时间痛苦的事情,但它是作为系统管理必不可
少的工作,在着手之前进行详细的考虑和计划是应该的。
在进行备份之前,首先要选择合适的备份策略,这将决定何时需要备份,以及出现故障时进行恢复的方式。通常使用的备份方式有三种:
1、完全备份:每隔一定时间就对系统进行一次全面的备份,这样在备份间隔期间出现数据丢失等问题,可以使用上一次的
备份数据恢复到前次备份时数据状况。这是最基本的备份方式,但是每次都需要备份所有的数据,并且每次备份的工作量也很大,需要大量的备份介质,因此这种备
份不能进行的太频繁,只能每隔一段较长时间才进行一次完整的备份。但是这样一旦发生数据丢失,只能恢复到上次备份的数据,这期间内更新的数据就有可能丢失。
2、增量备份:首先进行一次完全备份,然后每隔一个较短时间进行一次备份,但仅仅备份在这个期间更改的内容。当经过一个较长的时间后再重新进行一次完全备份,开始前面的循环过程

3、累计备份:这种备份方法与增量备份相似,首先每月进行一次完全备份,然后每天进行一次更新数据的备份。

27.文件备份的命令有哪些,语法格式是什么?

1.使用tar命令(并不压缩文件)
Linux的实用程序tar最初是为了制作磁带存档而设计的(把文件和目录复制到磁带中,然后从存档中提取或恢复文件),而现在的应用中可以把它用于任何设备,它是数据备份中最常用的命令之一。
下面具体介绍tar命令的使用方法:
1)格式:tar 参数 ......
2)参数:
c创建备份(Create
v表示回显模式(Verbose),将产生一系列备份的文件列表
f指定使用的备份文件,它后面的参数为输出的备份文件名
x展开备份文件
t显示备份文件的内容
T后面跟随一个文件参数,指定从这个文件中读取要备份的各个文件的路径。如果不使用T参数,那么就需要一个参数,指明进行备份文件和目录的路径
Z使用压缩方式创建和解开备份文件,这是GNU的新版tar的功能,需要同时安装gzip例如:
$ tar cvf backup.tar /etc
上面的命令将/etc下的所有文件打包成tar存档文件backup.tartar的第一个参数“cvf”,是tar的命令参数,“c”告诉tar创建一个存档文件;“v”选项迫使tar采用冗长模式,即在存档时打印每个文件名;“f”选项告诉tar下一个参数backup.tar是创建的存档文件名。

2.gzipcompress 命令
MS-DOS的存档程序不同, tar在存档过程中并不压缩文件。因此,如果存储两个1MB的文件,那么tar文件大小为2MBgzip命令用来压缩文件(被压缩的文件并不需要是tar格式)。
例如:
$ gzip -9 backup.tar
压缩backup.tar文件,产生的文件为backup.tar.gz,开关“-9”告诉gzip用最高的压缩比。gunzip命令用来解开一个gzip压缩的文件,用“gzip -d”也可以达到同样效果。
例如:
$ gunzip backup.tar.gz

28.计算机系统的存储体系

寄存器(register),高速缓存(cache),主存(primary storage),外存(secondary storage)。它们的访问速度递减,磁盘容量依次增大。

29.地址转换过程

在计算机操作系统中,地址转换是存储管理的一个主要功能。所谓地址转换就是将用户的逻辑地址转换成内存的物理地址,完成地址重定位。需要指出的是,地址转换是操作系统的地址变换机构自行完成的,无需用户干预,这样我们使用操作系统时,才方便而可靠。

30.内存管理方案

计算机的内存管理主要包括四个方面的内容:内存分配与回收,内存地址映射,内存共享与保护和内存扩充。常用的内存管理方案有单一连续分区管理,固定分区存储管理,可变分区存储管理,分页式存储管理,分段式存储管理等。

31.页面置换算法

最佳置换算法(OPT),先进先出置换算法(FIFO),最近最久未使用(LRU),最少使用(LFU),工作集算法,老化算法,NRU(最近未使用)算法,第二次机会算法等。Linux中的页面置换算法有:OPT, LRU, FIFO

32.虚拟存储技术的本质,技术支撑,思想特性?

思想特征:利用大容量的外存来扩充内存,产生一个比有限的实际内存空间大得多的,逻辑的内存空间。

技术支撑:局部性原理和虚拟页式存储管理。

本质:采用交换技术。

33.buffercache的差异与联系

Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU等待时间,提高了系统的效率。Cache又分为一级CacheL1 Cache)和二级CacheL2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB512KB L2 Cache.

Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

Free中的buffercache:(它们都是占用内存):

buffer :作为buffer cache的内存,是块设备的读写缓冲区

cache:作为page cache的内存,文件系统的cache

  如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

34.freevmstatswap命令

free功能说明:显示内存状态。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法: free [-bkmotV][-s <间隔秒数>]
参数:
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。

vmstat报告虚拟内存统计信息。vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由vmstat命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

语法:vmstat [ -f ] [ -i ] [ -s ] [ -I ] [ -t ] [ -v ] [ PhysicalVolume... ] [ Interval [ Count ] ]

swap提供调页空间管理界面。swap 命令提供特征显示、调页空间增加和调页空间除去的功能。

语法:swap [ -adevice] | [ -ddevice ] | [ -s ] | [ -l ]