自己对Linux的一些理解,从基础开始,以后会持续更新,不太对的地方还望指教
linux简介:
linux 是一个支持多用户,多进程,多线程的实时性较好的功能强大而稳定的操作系统;
多用户理解: 同一时刻,可以有多个用户远程登录一个linux(windows 也可以远程连接,但是当再有一个用户登录时候,前一个会被强制断开远程连接
Linux与UNIX的区别:
最大区别: Linux是开发源代码的自由软件,UNIX是对源代码实行知识产权保护的传统商业软件(当然两者都是操作系统的名称)
Linux的特性:
1.开放性:(指系统遵循开放系统互联(OSI) 国际标准)
2.多任务:(指计算机可以同时执行多个程序,各个程序的运行相互独立)
3.多用户:(系统资源可以被不同的用户使用,每个用户对自己的资源有特定的权限,互不影响)
4.良好的用户界面:(Linux向用户提供了两种界面:GUI界面和命令界面(黑框框的那种))
(还有个系统调用,说是给用户提供编程使用的界面,但是这个不太懂,个人理解就是两个界面,可能有点疏漏。。。。)
5.设备独立性:(指操作系统把所有的外部设备统一看成文件来看待,只要安装他们的驱动程序,任何用户都可以像使用文件一样,使用这些设备,而不必知道他们的具体存在形式(内核具有高度适应能力))
6.提供了丰富的网络功能:(完善的内置网络,网络功能:支持Internet,可以内部文件传输,可以远程登录等)
7.可靠的系统安全:(对权限的控制,带保护的子系统等等)
8.良好的可移植性:(可移植性就是,将操作系统从一个平台移动到另一个平台上,他还可以按照自己的方式运行的能力)
Linux相关名词及解释:
1.GNU:(GNU‘s not UNIX) 是一个自由的操作系统,被自由软件之父 理查德·斯托尔曼 发起开始于1864年;
2.GPL:GNU的通用许可证
Linux的选择:
我选择用centos 7 版本
另外还要Ubuntu, 红旗等。。。
获取Linux镜像地址:
http://mirrors.163.com/centos/
http://mirrors.sohu.com/centos/
https://mirrors.aliyun.com/centos/
https://www.centos.org/
安装:
。。。(安装虚拟机和centos步骤不详说了)
分区注意:
swap分区:相当于windows的虚拟内存,也就是内存数据与硬盘的交换。
swap分区大小:
物理内存<4G ,一般设置为物理内存2倍;
物理内存在4G到16G中间,一般等于物理内存;
物理内存>16G,设置为16G。
至少只需要根分区和交换分区,就可以完成系统安装,但不建议,以下分区建议安装时独立分配:
/boot:存储系统引导信息和内核信息。
/usr:存储系统应用软件信息。
/var:存储系统日志信息。
(Centos 7 下可以选择自动分区。。。。)
Linux启动过程:
BIOS自检--->系统引导GRUB--->启动内核----->系统初始化init
1.BOIS自检:(BOIS 又称输入输出系统)
BOIS 自检就是检测硬件设备是否能正常运行,(例如,最常见的内存松动, BOIS就会检测并报错,系统就无法启动,然后会对硬件设备进行初始化操作(比如开始去执行硬盘驱动器的第一个扇区,但并不关心里面内容是什么,只要去读取扇区内容并执行,然后进行下一步)
(注 : 个人电脑中,Linux启动是从OxFFFF0地址开始的)
2.系统引导lilo/Grub
名词解释:MBR :主引导记录,存储于磁盘的头部,大小为512bytes
GRUB: 多系统启动程序(记住这个就行了,lilo 不需要了解,因为我也不太清楚lilo)
通常情况下,诸如lilo、grub这些常见的引导程序都直接安装在MBR中。我们以grub为例来分析这个引导过程。
GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。
注:实际上这个步骤/boot还没被挂载,GRUB直接识别grub所在磁盘的文件系统,所以实际上应该是/grub/grub.conf文件
3.启动内核:
这里就不讲内核怎么启动了,就讲讲内核的作用吧,我不太了解底层知识,所以就直接上有用的干货:
内核的五大作用:管理进程,管理内存,文件系统,设备管理,网络管理;(名词不懂,后续命令时介绍)
4.初始化系统(init):
/sbin/init进程是系统其他所有进程的父进程,当它接管了系统的控制权先之后,它首先会去读取/etc/inittab文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等
(init有7种默式,可以在/etc/inittab 下面查看)
执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接,rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件
(/etc/rc.d/rc3.d目录,该目录下的内容全部都是以 S 或 K 开头的链接文件,都链接到"/etc/rc.d/init.d"目录下的各种shell脚本,S表示的是启动时需要start的服务内容,K表示关机时需要关闭的服务内容)
执行用户自定义引导程序/etc/rc.d/rc.local;
完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录
好了,Linux到这就启动了!!!
Linux的组成:
内核,shell,应用程序,文件系统
认识SHELL
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
查看当前shell: cat /etc/shells
当前系统默认shell: echo $SHELL
Linux命令入门及常用快捷键:
TAB : 自动补全
(^ 表示 Ctrl)
^C 终止前台运行的程序
^D 退出 等价exit
^L 清屏
^A 光标移到命令行的最前端 //编辑命令
^E 光标移到命令行的后端 //编辑命令
^U 删除光标前所有字符 //编辑命令
^K 删除光标后所有字符 //编辑命令
^R 搜索历史命令,利用关键词
ESC.引用上一个命令的最后一个参数,等价于!$
history : 查看历史命令(默认可以保存1000条)(想应的输出结果可以在/etc/profile 中修改,但是要重启才生效,因为改变的是系统的环境变量)
^R //搜索历史命令(输入一段某条命令的关键字:必须是连续的)
!220 //执行历史命令中第220条命令
!字符串 //搜索历史命令中最近一个以xxxx字符开头的命令,例如!ser
!$ //引用上一个命令的最后一个参数
alias : 命令别名
建立临时别名: alias 别名=’内容‘
取消别名: unalias 别名
永久别名: /etc/bashrc 里面添加
命令帮助:
命令 --help
man (man man 可以查看man手册的类型,常用的为 1,5,8)
info (同man)