Linux入门教程
上一篇 /
下一篇 2016-08-29 14:18:02
/ 个人分类:selenium
在博客的草稿箱里一
直有一份"Linux命
令"的草稿,记录了一些常用的Linux命令,用于需要的时候查询。由于是出于个人使用的目的,所以这个清单并不完整。今天整理了一下这个清单,调整了格
式,并增加了一些内容。现在发布出来,以抛砖引玉。我也会在未来继续补充。希望能对Linux用户有用。
Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件。当我们给出一个文件的完整路径时,我们从根目录出发,经过沿途各个目录,最终到达文件。
我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内存空间传递信息。为了让进程间传递更多的信息量,我们需要其他的进程间通信方式。
典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实现方式有异于其它的UNIX系统,但Linux的多线程在逻辑和使用上与真正的多线程并没有差别。
计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下从程序到进程的漫漫征程。
Linux的用户在
登录(login)之后,就带有一个用户身份(user ID, UID)和一个组身份(group ID,
GID)。在Linux文件管理背景知识中,我们又看到,每个文件又有九位的权限说明,用来指明该文件允许哪些用户执行哪些操作(读、写或者执行)。
Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。我们在这里讲解进程组和会话,以便以更加丰富的方式了管理进程。
Linux进程基础
一
文中已经提到,Linux以进程为单位来执行程序。我们可以将计算机看作一个大楼,内核(kernel)是大楼的管理员,进程是大楼的房客。每个进程拥有
一个独立的房间(属于进程的内存空间),而每个房间都是不允许该进程之外的人进入。这样,每个进程都只专注于自己干的事情,而不考虑其他进程,同时也不让
别的进程看到自己的房间内部。这对于每个进程来说是一种保护机制。(想像一下几百个进程总是要干涉对方,那会有多么混乱,或者几百个进程相互偷窥……)
计算机实际上可以做
的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等。这些最基础的计算机动作被称为指令
(instruction)。所谓的程序(program),就是这样一系列指令的所构成的集合。通过程序,我们可以让计算机完成复杂的操作。程序大多数
时候被存储为可执行的文件。这样一个可执行文件就像是一个菜谱,计算机可以按照菜谱作出可口的饭菜。
文件用于数据的存
储,相当于一个个存储数据的房子。我们之前说,所谓的数据是0或者1的序列,但严格来说,Linux以字节(byte)
来作为数据的单位,也就是说这个序列每八位(bit)为一个单位(八位二进制对应的十进制范围为0到255)。使用ASCII编码,可以将这样一个字节转
换成为字符。所以,在Linux中,我们所说的数据,完全可以用字符表达出来,也就是说文本(text)的形式。
在了解了Linux文件管理背景知识之后, 我们可以学习一些命令来管理我们的文件。
Linux的命令是很重要的工具,也往往是初学者最大的瓶颈。有朋友用了很长时间的Linux图形界面,基本不使用命令行输入命令执行,所以装的Linux最终成了摆设。这里总结一些命令行下常使用的命令,希望能有用。
以下图为基础,说明Linux的架构(architecture)。(该图参考《Advanced Programming in Unix Environment》)
对于计算机来说,所
谓的数据就是0和1的序
列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常
会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。但如果数据只能组织为文件的话,而不能分类的话,文件还是会杂乱无
章。每次我们搜索某一个文件,就要一个文件又一个文件地检查,太过麻烦。文件系统(file
system)是就是文件在逻辑上组织形式,它以一种更加清晰的方式来存放各个文件。
计算机开机是一个神
秘的过程。我们只是按了开
机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而
是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。
Linux可以有狭
义和广义两种定义。狭义来说,Linux实际上指Linux kernel
(内核)。内核负责管理硬件,并为上层应用提供接口。而广义来说,是指以Linux
kernel为基础的,包括OS和各种应用在内的各个Linux版本(distribution)。尽管看起来版本眼花缭乱,但实际上,各个版本之间也只
是大同小异,其差别往往体现在客户群、升级维护和界面等方面。
相关阅读:
- Linux-centOS基础命令 (zaza9084, 2016-8-17)
- linux服务器使用tsocks设置代理 (fairylly, 2016-8-17)
- linux下压力测试软件siege的安装 (jiahou166, 2016-8-17)
- Linux为FTP服务器添加iptables规则--案例分析 (zaza9084, 2016-8-18)
- linux下快速转移大量小文件? (xuquan, 2016-8-22)
- 诠释Linux 中“一切都是文件”概念和相应的文件类型 (zaza9084, 2016-8-24)
- Linux环境下NodeJS的安装配置~ (xuquan, 2016-8-24)
- Linux 中 ln命令的用法 (xuquan, 2016-8-25)
- Linux中find命令-path -prune用法详解 (zaza9084, 2016-8-26)
- Linux服务器文件删除空间未释放的问题 (zaza9084, 2016-8-29)
收藏
举报
TAG:
Linux