一、操作系统
操作系统 (Operating System,简称 OS)是管理和控制计算机硬件与软件资源的计算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。
二、Linux
开源: 把软件程序和源代码一起打包给用户
使用自由,复制自由,修改自由,创造衍生品自由
低风险:
高品质:
1、Linux的诞生
1) Multics计划
上世纪六十年代,人们还在用批处理计算机,也就是一次性给一批任务到计算机,然后等待结果,中途不能和计算机进行交互,而且准备作业需要耗费大量时间。于是1965年,贝尔实验室 (Bell),麻省理工学院 (MIT) 和通用电气(GE) 准备联手开发”分时多任务处理系统”,即300台以上终端机可以同时连接一台大型计算机进行作业,并取名为Multics(Multiplexed nformation and Computing System,多路信息计算系统)。但由于项目进度落后,资金短缺,1969年,贝尔实验室放弃了这个项目,决定退出 (后来Multics成功开发完成,尽管没有再被重视)
2) Unix的诞生与打飞机游戏
一位工程师调回到贝尔实验室的工程师看到费时的批处理机器,十分怀念先进的Multics。Ken Thompson在研发Multics的时候,写了一个叫太空大战 (SpaceTravel) ,是飞机发射子弹那种类型的游戏,然而这个游戏只能运行在Multics上面,他很想要移植这个游戏继续玩。1969年8月,Thompson在库房发现了一台闲置的PDP-7,刚好此时休假并且妻儿都去加利福尼亚探亲度假去了,经过四个星期的努力,用BCPL (Basic CombinedProgramming Language,基本组合编程语言)汇编语言编写了一组内核程序,还包括内核工具程序,以及一个小的文件系统。完成之后,Thompson激动地把身边的同时叫过来,让他们来玩他的游戏。由于这个系统是由Multics简化而来,同事们就戏称这个系统为"UNiplexed Information and Computing Service”,即没路信息计算系统,缩写为Unics,取其谐音Unix。这时已经是1970年了,于是就将1970年定为Unix元年,现代计算机的计时也就是这个时候开始的。
3) Unix的发展
Unix实在太好用了,这套系统在Bell实验室广为流传。但Unix是用汇编语言写的,高度依赖硬件,于是Thompson和Dennis Ritchie合作准备用更高级的语言改写,提高可移植性.Thompson改进了BCPL,称为B语言,然而这套语言在内存方面有限制,一筹莫展。又和Ritchie尝试了Pascal,发现编译出来的内核性能并不好。最终Ritchie决定再对B语言进行改进,成为了大名鼎鼎的C语言,重新改写了Unix。1974年7月,Bell实验室公开了Unix,引起了学术界的广泛讨论,并大量应用于教育目的。1978年学术界老大伯克利大学,推出了以Unix第六版为基础并加入改进的新Unix,并命名为BSD (Berkeley Software Distribution伯克利分发版),于是Unix的分支BSD系列就诞生了。由于Unix的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了Unix操作系统的开发。然而当时Bell属于AT&T,AT&T被《谢尔曼反托拉斯法》规定了不能销售除了电话机电报机等之外的商品,后来随着AT&T的分解,Bell可以卖出Unix了,第七版Unix明确提出“不可对学生提供源码”,Unix走向了商业化。高昂的授权费导致很多大学停止了对Unix的研究。
4) Minix操作系统
Unix进行了商业化,教师们都用不起了,1987年,身为ACM和IEEE两会资深会员的荷兰数学与计算机科学系统教授Andrew s.Tanenbaum开发了Minix操作系统,是Unix的缩小版用于学生学习操作系统原理,很多技术大牛希望改进Minix,但遭到了AST教授的丑拒,他认为Minix就是为了教学,让学生一学期学完,并不想被加入杂乱的东西。
5) GNU计划
Richard M.Stallman看不惯版权收费,于1984年创立自由软件体系GNU (Gun is NotUnix) ,拟定了普遍公用版权协议 (General Public License,GPL) ,所有GPL协议下的自由软件都遵循着Copyleft (非版权) 原则: 自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。GNU希望开发一个类似UNIX并且是自由软件的完整操作系统一一GNU系统。到90年代初,GNU项目开发出许多高质量的免费软件包括emacs编辑器bash shell程序、gcc系列编译程序、gdb调试程序。
7) Linux终于诞生了
此时,IBM公司开发的MS-DOS操作系统、Apple公司开发的Mac操作系统,Unix操作系统Minix操作系统全都要收费。GNU尽管已经开发出最受期盼的GNU C编译器,开发的操作系统却进度缓慢,渴求诞生一款自由软件操作系统来证明自己存在的价值。与此同时,Linus利用圣诞的压岁钱和贷款购买了一台386兼容电脑,并从美国邮购了一套Minix系统软件,在等待邮寄到达的期间,Linus认真学习了有关lntel 80386的硬件知识。为了能通过Modem拨号连接到学校的主机上,他使用汇编语言并利用80386CPU的多任务特性编制出了相关程序。甚至为了将老式电脑的软件复制到新电脑上,为一些硬件编写了驱动程序。Linus逐渐认识到了Minix的诸多限制,产生了自己编写一个新的操作系统的想法。1991年4月,Linus花费了全部时间研究Minix-386系统,并尝试移植GNU的gcc、bash、gdb到新系统上。1991年4月13日,Linus在omp.os.minix上发布信息说自己成功将bash移植到了Minix上,而且已经爱不释手,离不开这个shell软件了。1991年7月3日,Linus在comp.os.minix上透露了正在进行Linux系统的开发,并已经开始考虑POSIX的兼容了。1991年8月25日,Linus在comp.os.minix上发布了What would you like to see in minix?”,透露出正在开发一个免费的386操作系统,新开发的系统会移植bash和gcc,并且声明他开发的操作系统没有用行Minix的源代码。1991年10月5日,Linus在comp.os.minix上发布消息,正式向外宣布Linux内核诞生 (Free minix-like kernel sources for 386-AT) 。Linux遵循GPL协议,也给GNU运动送上了一份最好的礼物。Linux提供内核,GNU提供外围软件,GNU/Linux就成了密不可分的体系。
2.计算机的结构
硬件:显示器、键盘、鼠标等
输入设备:键盘、麦克风等
主机:cpu、存储器等
输出设备:打印机、显示器等
cpu:算术逻辑单元(程序的运算和逻辑判断)+控制单元(协调各周边组件和个单元之间的工作)
软件:操作系统。
运算器 控制器 输入、输出
3.Linux的内核
操作系统主要是通过操作系统内核实现的。
系统调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理的结果返回给应用程序。
SHELL
程序的终端
Bash(Bourne-Again SHELL)
终端
终端:是计算机网络中处于网络最外围的设备,主要是用于用户信息的输入和处理结果的输出
物理终端:键盘、鼠标、显示器。
虚拟终端:模拟终端(图形化界面)切换到重命令行的终端
伪终端
重命令行终端
进入:Ctrl+Alt+F3
退出:Ctrl+Alt+F2
4.Linux指令
1.命令格式
命令名称 [命令参数] 命令对象
命令名称 :动词——要做的某件事
命令对象:一般要处理的文件、目录、用户
[命令参数]: 对命令进行调整
!!!指令严格区分大小写!!!
指令
清屏:Ctrl+l
重新启动:reboot、shutdown -r now
关机:shutdown -h now、init 0、poweroff
查看IP地址:ip a/ifconfig
查看版本发行的信息:cat /etc/redhat-release
查看内核版本信息: uname -r
查看shell类型:cat /etc/shells
chsh -l
查看当前的默认shell类型:echo $SHELL
[root@localhost ~]
#:标识符,标识的是当前用户是 root
$:标识符,标识的当前的用户是普通用户。
切换用户:su - rhcsa
返回:$ exit
[root@localhost ~]
root:管理员,超级管理员,根用户@:分隔符
localhost:本意标的是当前这合主机,也是这台主机的主机名。
~:当前用户的家目录。root用户的家目录:/root
普通用户的家目录:/home/rhcsa
家目录:存放个人数据的地方
ls (list directory contents):用于显示指定工作目录下的内容(文件及子目录)
/根:文件系统的根。一切皆文件。
路径:绝对路径——以根开始的路径。/home/rhcsa
相对路径——不从根开始的路径。rhcsa
root
普通用户
su (switch):用于变更其他使用者的身份。
如果从root切换到普通用户,则不需要输入密码。但是如果从普通用户去切换到root,则需要输入密码。一般使用的时候需要加上“—”的选项去获取对应身份的环境变量和身份权限。
用exit退出
pwd(print work directory)显示工作目录
cd (change directory):切换当前目录
切换到home目录下并打印当前工作目录
切换到mnt下并打印当前工作目录
cd —:表示切换到上一次的目录
cd ~:切换到当前用户的家目录
ls (list directory contents)列出当前工作目录下的内容
-l: 是以长格式的形式显示文件的目录的信息(权限所有者、大小、创建时间) ls -l =ll
-a :显示所有文件及目录(开头的隐藏文件)
-A:不列出(当前目录)和..(父目录)
-h 在-l基础上使用h,以人类可读的方式显示当前目录中文件和目录的大小
2. Linux系统的目录结构
filesystem hierarchy standard文件系统层级标准,定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。
Linux目录结构的特点
1.使用树形目录结构来组织和管理文件
2.整个系统只有一个根目录 (树根) ,Linux的根目录用”/“表示
3.其他所有分区以及外部设备 (如硬盘、光驱等)都是以根目录为起点,挂接在目录树的0某个目录中的,通过访问挂载点目录,即可实现对这些分区的访问。
/bin 软连接(快捷方式),符号链接,binaries(二进制文件),可执行的应用程序。
/boot:存放的是系统启动时所需的文件
/dev:存放的时Linux的外部设备(光驱)。
/etc:存放的是系统管理所需要的配置文件。
/home:普通用户的家目录。
/root:root用户的家目录。
/lib:library(库)存放系统最基本的动态链接共享库(32位)
/lib64:library(库)存放系统最基本的动态链接共享库(64位)
/media:挂载点目录,让用户去临时去挂在别的文件系统。系统默认挂载点目录
/mnt:挂载点目录,手动去挂载点目录。
/opt:optional(可选),主机给额外安装软件所摆放的目录。
/sbin:超级用户的二进制文件的缩写,存放的是系统管理员所使用的系统管理程序。(超级管理员自己能用到的一些命令)
/srv:第三方服务,存放的是一些服务启动后需要提取的数据。
/tmp:temporary(临时):存放的是一些临时文件。
/usr:unix shared resouce(共享资源),用户很多应用程序和文件都存放在该目录中。
/var:变量的缩写,存放的不断扩充的东西。(日志文件)
/run:临时文件系统,存放的是系统启动以来的信息(守护进程)
/sys:
/proc:进程的缩写。程序——是由源代码生成的可执行文件
进程——程序执行后形成了进程,它占用内存资源。
Block 块设备
bus 总线(地址、控制、数据)
固件
/sys 内核或者操作系统
三.文件管理
1.文件的类型7种:一切皆文件
d 目录文件
l 软链接文件<——>快捷方式
- 普通文件
b 块设备文件
c 字符设备文件
p 管道文件
s 套接字文件
2.怎么查看帮助文档
help
help 命令 help cd
--help
man
manual
man 命令
空格是下一页,b上一页,/单词,n上一个关键字,N下一个关键字。
在线命令
区段1:用户指定,查看命令的帮助
区段2:系统调用
区段3:程序库的调用
区段4:设备、查看特殊文件的帮助
区段5:文件格式
区段6:游戏:查看游戏的帮助
区段7:
区段8:系统指令
区段9:内核内部的指令。
man cat
man ls
info
快捷键
Ctrl+c :停止当前的程序(系统会向程序发送一个 SIGINT
信号,在默认设置下,SIGINT
信号会导致程序终止。)
Ctrl+d:类似输入exit 命令,退出某某进程,窗口
ctrl + shift + =
放大终端窗口的字体显示
ctrl + -
缩小终端窗口的字体显示
清屏:ctrl+l或者clear
补全命令:tab,按一下或者两下
指令
date
hwclock(显示和设置时间)
hwclock -r 读取硬件时钟并打印结果
hwclock --show() 硬件时间
hwclock -w 系统时间同步给硬件时间
hwclock -s 硬件时间同步到系统时间
只写cal查看当前月份日历
查看指定月份2024年10月份日历
查看2023年整年的日历
timedatectl(设置系统时间)
timedatectl 选项 参数
设置所在时区
timedatectl set-timezone Asia/Shanghai
- 标记位——文件类型
- 普通文件
d 目录文件
l 链接文件
软连接 硬链接
文件:元数据 inode (索引节点----唯一标识) 类比身份证号
硬链接 hard link 和软连接(符号链接 symbolic link)
硬链接特性:1.必须有原始文件
2.在同一个文件系统里面创建
3.不能对目录进行创建
软连接特点:
1.对不存在的目录和文件进行创建
2.对存在的目录和文件进行创建
3.可以快文件系统创建的
4.删除软连接的时候对原文件没有任何影响
ln -s 原始文件 软连接文件
用户数据
B block 块设备文件 类似硬盘
C 字符设备文件
P (pipiline)管道设备文件
S (sockect)套接字文件 IP地址+端口号
- rw- --- --- . 1 root root 1073 Oct 21 09:52 anaconda-ks.cfg
A B C D
A :该文件的所有者对文件的权限。
B :该文件的所属组的对文件的权限。
C :其他人对文件的权限。
D :扩展权限
d rwx r-x r-x .
r : 读取的权限
w:对文件内容进行更改的权限
x:对文件的执行权限。
-:没有任何权限
drwxr-xr-x. 3 root root 19 Oct 21 09:51 home
home是目录文件,所有者 (root) 对它具有完全的权限,所属组的用户和其他用户都可以读取和执行该目录,但只有所有者才能对其进行写操作。
lrwxrwxrwx. 1 root root 7 Aug 10 2021 lib -> usr/lib
sbin是软连接文件,所有者 (root)、所属组用户和其他用户对它具有读、写和执行权限。它连接到名为 “usr/sbin” 的目录(或文件)。
第二列:硬链接的引用次数
第三列:该文件的所有者
第四列:当前文件的所属组
Oct 21 09:52 :修改时间
Access:访问时间(用户读取文件内容的时间) Modify:修改时间(修改文件内容的时间)
change :改变时间(用来标记文件元数据发生变化的时候)文件名,文件大小,文件类型等。
Birth :创建时间(创建文件的时间)。
File:名字
Touch修改文件的时间戳
如果touch一个已经存在的文件,则会把它除了创建时间之外的剩下时间全部进行修改。
如果touch一个不存在的文件,则会创建该文件
touch [OPTION]... FILE...
3.从命令行管理文件
1.创建
Mkdir(make directory)(创建目录)
格式:mkdir [OPTION]... DIRECTORY...
-p:创建目录时,如果该目录的父目录不存在则先创建父目录
-v:显示创建了哪些文件
级联目录:
Tree目录:
目录:路径映射的文件
Rm
rm - remove files or directories
rm [OPTION]... [FILE]...
alias:起别名的方法
加上斜杠无-i的选项,防止删除错误
-f, --force
ignore nonexistent files and arguments, never prompt
忽略提示信息强制删除
联合使用:-f -r 强行删除—— -
删除根目录!!!建议大家别轻易尝试哦!!!