
在 Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。
也就是说在LINUX系统中有一个重要的概念:一切都是文件。
Linux支持的5种文件类型:
文件类型 | 描述 | 示例 |
|---|---|---|
普通文件 | 用来在辅助设备(如磁盘)上存储信息和数据 | 包含程序源代码、可执行程序、图片、声音、图像等 |
目录文件 | 用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名 | /root、/home |
链接文件 | 用于不同目录下文件的共享 | 当创建一个已存在文件的符号链接时,系统就创建一个链接文件,这个链接文件指向已存在的文件 |
设备文件 | 用来访问硬件设备 | 包括键盘、硬盘、光驱、打印机等 |
命名管道(FIFO) | 是一种特殊类型的文件、Linux系统下,进程之间通信可以通过该文件完成 |
运行级别就是操作系统当前正在运行的功能级别。
级别是从0到6,具有不同的功能。这些级别定义在/ect/inittab文件中。
这个文件是init程序寻找的主要文件,最先运行的服务是那些放在/ect/rc.d目录下的文件。
Linux下的7个运行级别:
0: 系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。1: 单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。2: 多用户状态,没有NFS支持。3: 完整的多用户模式,有NFS,登陆后进入控制台命令行模式。4: 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。5: X11控制台,登陆后进入图形GUI模式,XWindow系统。标准的Linux运行级别为5或者3
总结:
/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。K(Kill)开头的文件,系统将终止对应的服;对于以S(Start)开头的文件,系统将启动对应的服务runlevelinit N,如果init 3则进入终端模式,init 5则又登录图形GUI模式init 0为关机,init 6为重启系统 标准的Linux运行级别为3或5,如果是3的话,系统就在多用户状态;如果是5的话,则是运行着XWindow系统。不同的运行级别有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了root口令,那么可以让机器启动进入单用户状态来设置。在启动后的lilo提示符下输入: init=/bin/shrw这样就可以使机器进入运行级别1,并把root文件系统挂为读写。它会路过所有系统认证,让你使用passwd程序来改变root口令,然后启动到一个新的运行级。
Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作;run_queue 队列里的状态;run_queue 队列里的状态; socket 连接、等待信号量),而被挂起;zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉;符号:
一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。
由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。
一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait() 或 waitpid() 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait() 或 waitpid(),那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵尸进程。
僵尸进程通过 ps 命令显示出来的状态为 Z(zombie)。
系统所能使用的进程号是有限的,如果大量的产生僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程。
要消灭系统中大量的僵尸进程,只需要将其父进程杀死,此时所有的僵尸进程就会变成孤儿进程,从而被 init 所收养,这样 init 就会释放所有的僵死进程所占有的资源,从而结束僵尸进程。
kill -9 发送SIGKILL信号给进程,将其终止,但对于以下两种情况不适用
STAT z),此时进程已经释放所有的资源,但是没有被父进程释放。僵尸进程要等到父进程结束,或者重启系统才可以被释放。kill 只能杀死处于用户状态的进程。
kill -l查看可用的信号(15是TERM,即终止信号)。
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
下面是常用的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)

内核负责管理四个方面:
Linux大部分操作都是发生在用户空间。id来管理用户的。最关键的是root用户,意思超级用户,他不受各种权限限制,可以终止其他用户进程,读取系统中的任何文件。进程管理涉及进程的启动、暂停、恢复与终止。一个进程让出CPU使用权给另一个进程称为CPU的上下文切换。

内核是在上下文切换的时间段间隙中运行。

通常设备只能在内核模式中被访问,如用户进程请求内核关闭系统电源。


