前言
Linux系统具有许多优点,不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。
和我们日常使用的window系统有所不同。Linux通常用在后端之上,根据不同的用途有不同的适配版本。在学习之上,我使用的是Centos7 + Ubuntu20.04/22.04.前期使用的是Centos7。和目前使用的window系统最大的不同在于,Linux系统不是图形化的界面,对于大众使用起来不是很方便。
本博客会设计到一些历史方面关于计算机和Linux系统,文字部分会比较多。然后会简单的涉及到Linux的简单操作,只会比较简单的。然后会用Linux写一个简单的C语言文件并且在Linux系统上跑起来。
一、计算机发展历史
1、计算机历史
第一台计算机出现于1945年2月14日,名称是埃尼阿克。
之后有科学家提出了摩尔定律其核心内容为:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。
这条定律预示了计算机的小型化和高性能化,于是计算机私人公司分为了两种派系。一种是认为计算机只能面向于企业做大型计算机的,例如:IBM公司等。另一种是面向个人的计算机,例如:苹果、微软、英特尔等公司。
在出现众多计算机,并且计算机对于民众持有率提升之后,就形成了“计算机+互联网”的时代。两种派系的分别发展,也在此时合二为一。
再往后走进入了pc互联网时代,直到现在手机的新起。智能手机其实也是一台计算机,于是进入了移动互联网时代。
2、计算机系统的历史
计算机的功能主要包括三步:输入->计算->输出。
随着计算愈来愈复杂,操作系统的出现就成为了必然。
首先诞生的是Unix,当时的系统使用的是汇编语言。在诞生了C语言之后,两位大佬肯汤普森和丹尼斯里奇对Unix操作系统进行了重写,于是出现了苹果OS和微软OS。
3、Linux的诞生
随着计算机的小型化,以及计算机出现了操作系统后。计算机必然会进入高校中。
1991年芬兰赫尔辛基大学的学生林纳斯·本纳第克特·托瓦兹基于Unix自己编写了一款操作系统,这就是最初的Linux。并且直接将Linux进行了开源。
这个时候的所有操作系统刚开始诞生,都没有图形化的界面。
二、Linux介绍
1、主要特征
1.1、基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
1.2、完全免费
Linux是一款免费(或自由,即free)的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
1.3、兼容POSIX
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
1.4、多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现代电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
1.5、良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
1.6、支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
2、系统功能
系统内核的路由转发
Linux操作系统嵌入了TCP/IP协议栈,协议软件具有路由转发功能。路由转发依赖作为路由器的主机中安装多块网卡,当某一块网卡接收到数据包后,系统内核会根据数据包的目的IP地址,查询路由表,然后根据查询结果将数据包发送到另外一块网卡,最后通过此网卡把数据包发送出去。此主机的处理过程就是路由器完成的核心功能。
通过修改Linux系统内核参数ip_forward的方式实现路由功能,系统使用sysctl命令配置与显示在/proc/sys目录中的内核参数。首先在命令行输入:cat /proc/sys/net/ipv4/ip_forwad,检查Linux内核是不是开启IP转发功能。如果结果为1,表明路由转发功能已经开启;如果结果为0,表明没有开启。出于安全考虑,Linux内核默认是禁止数据包路由转发的。在linux系统中,有临时和永久两种方法启用转发功能。
临时启用:此种方法只对当前会话起作用,系统重启后不再启用。临时开启的命令格式:sysctl–wnet.ipv4.ip_forward=1。
永久启用:此种永久性的启用IP转发功能,通过更改配置文件/etc/sysctl.conf中的语句行“net.ipv4.ip_forward=0”,修改为“net.ipv4.ip_forward=1”,保存配置文件后执行命令sysctl–p/etc/sysctl.conf,配置便立即启用。
3、系统优势
3.1、代码开源
Linux由众多微内核组成,其源代码完全开源;
3.2、网络功能强大
Linux继承了Unix的特性,具有非常强大的网络功能,其支持所有的因特网协议,包括TCP/IPv4、TCP/IPv6和链路层拓扑程序等,且可以利用Unix的网络特性开发出新的协议栈;
3.3、系统工具链完整
Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性;
三、Linux安装
因为Linux是开源的,所以可以直接去网站下载(www.kernel.org)。我们电脑已经window系统所以,使用Linux需要安装虚拟机,或者直接换掉系统。
这里我用的是另一种方法,在网上挑了云服务器,安装Linux系统用。关于云服务器使用手册如下:
(1)挑选最便宜的云服务器,因为我们的代码不是用于商用或者大型企划。
(2)找到云服务器的实例,找到你的公网IP。
(3)注意系统的选择使用的系统是centos7或者Ubuntu20.04/22.04.
(4)云服务器实例中首先能够重置root密码。
(5)安装登录软件,例如xshell等,也可以使用云服务自带的登录器或者电脑的命令控制符,window的系统也是可以链接Linux的。
(6)开始登录
四、Linux的使用
我使用的云是腾讯云,用的是轻量级应用服务器,因为有一个月的试用,所以暂时不花钱。如果长期使用,华为云会更加好一些,便宜。总之什么适合你就用啥就行。
1、登录
如果在登录器上登录,很简单输入IP和密码登录即可。进入以下界面就表示登录成功了:
如果使用命令控制符登录可以输入 "ssh root@(IP地址)",IP地址如下,用黑笔图了的地方,每个人IP都不同:
进入了之后输入密码登录,这里密码不回显,所以不要乱按。
到这里就算链接完成了,如果没有显示。
2、命令操作
因为Linux是命令操作,所以我们需要熟系有哪些操作命令。
2.1、登录账户/账户操作
使用“whoami”能够查看登录使用的身份:
这里第一次登录使用的是root也就是最高权限账户,我们也可以创建子账户。在那之前我们可以看看服务器上有哪些能够登录的账户“ls /home/”:
这里就能看出来有两个账户,如果我们没有这么多账户希望新建一个子账户使用“useradd”创建对应账户的名称:
这个时候需要修改用户密码,使用“passwd + 用户名”,注意这里用户的密码不能太短或者太简单,同时会要求重复输入两次密码。另外,输入的密码也是不回显的:
以上是密码重复输入错误和密码太简单的举例,正确的如下:
最后一句的意思就是修改成功了。
如果不需要这个账户也可以使用“userdel -r + 用户名”删除,不要直接“userdel + 用户名”,不然系统会出问题。这个时候查询的用户在,但是不能使用。正确方式如下:
这样关于用户的操作就完了。
2.2、clear
“clear”能够清理操作界面:
这里加回车之后,界面就回到第一行,且之前的操作都看不见了。
2.3、ls + 其他指令
ls指令的作用是查找文件夹之下有什么文件,如果需要查找当前目录下的文件有许多相关指令:
(1)#ls:查找当前目录下的文件名.
我们这里先返回到根目录“/”处,然后就可以使用ls查看当前目录下有什么内容。
这里蓝色的字体都是文件,不同颜色表示不同作用。
(2)ls -l 和 ll :查看文件的更多属性。
“ll”操作其实是“ls -l”的重命名,使用之后结果如下:
这里d开头的“dr-xr-x---”表示这是一个目录,其他开头表示另外性质的文件。
所以再ls后面增加“-l”能够然文件信息更加详细。
(3)ls -a:显示全部文件(显示隐藏)
像我们window系统也有隐藏的文件Linux也一样。用上面的命令就能查看所有文件。
我们先进入“root”目录,然后使用两种方式查看,能够看到“ls -a”能够看到“.”开头的文件,这些文件就是隐藏文件。
(4)指令组合
像“-a”,“-l”这样的指令能够组合使用,可以用任意顺序组合,效果都是一样的。例如“ls -a -l”、“ls -l -a”、“ls -al”、“ls -la”。这些指令都是查看目录下所有文件的属性。
可以看到有“.”、“..”文件,这个文件是每个目录都存在的,“.”的作用是表示当前目录,“..”的作用是上级目录。
2.4、cd + 目录地址
cd的作用就是移动自己所在的地址,例如“cd ..”表示返回上级目录,“cd ./root”表示进入当前目录的root目录文件。这里的地址可以写的很详细,但是“cd root”和“cd ./root”的作用是一样的。也就是说能够当前文件夹这样的写法是可以实现的。“cd”指令在上面的文件操作中使用过了,所以不再举例。
2.5、pwd
pwd能够打印当前所处路径:
那么现在我们处在根目录下。移动到root就到了root目录下:
2.6、mkdir
我们能够创建新的目录,mkdir:增加目录,使用方式:mkdir + 文件名:
如果我们想建立一串目录,就需要增加指令“-r”。例如我想创建a/b/c/d,如果直接用“mkdir”是无法创建的,增加指令“-r”才行。
这了的tree指令能打印当前文件夹之下的文件,并将子文件展开。
如果无法使用tree命令,在centos下使用指令“yum install -v tree”安装tree命令。
2.7、stat
stat能够查看文件的属性,包括创建时间、大小等等文件信息内容,这写内容对于window系统也一样。需要有一些信息来维护这个文件。
window:
2.8、which
which能够查找文件所在的位置:
但是需要设置环境变量计算机才能找到,这里举例查找的都是之前写过的指令,同时也说明这些指令也是人为写好的文件。
查找之后下面一行就是文件所在的路径。
这里的alias表示的是取别名的意思。
2.9、rmdir
“rmdir”能够删除空目录:
但是不能删除除空目录以外的文件,如果需要删除文件请使用“rm + 文件名”。
同样的这里之前创建的文件“a”也不能删除,因为它的下面有:b/c/d。但是一个一个删除太麻烦了,我们可以使用“rm + -r + 文件名”来删除递归文件。
这里因为使用的是root用户,他的权利太大,所以删除文件的时候系统会问你要不要删除,如果要删除再用“y”确认即可,不想删除就输入“n”。使用其他用户删除自己创建的文件时不会询问。
如果你不想让系统问,也可以增加“-f”指令,让系统不询问是否删除。但是需要注意的是,这条指令不要乱用,因为不会询问,如果在根目录直接用“rm -r -f /”那么这个系统就完蛋了。所以需要注意自己的权限,以及指令不要乱用,不然系统挂了在公司里要追责的。
当然如果是其他用户在根目录下也不会让你删除东西,除了root用户。如果是自己学习的时候买的云系统,现在大家还能用root用户在“/”目录下使用“rm -r -f /”,之后等着重装系统就完了。
总之删除命令不要轻易加“-f”。
2.10、man
“man + 文件名”能够查看当前文件的手册,例如“man ls”能够查看ls的作用:
按q退出。
当然其他的也能够查看,例如“man man”:
使用方法还是很简单的,如果想查看C语言的手册可以增加指令“3”:
在那之前需要使用指令“# yum install -y man-pages”对指令进行下载。“man”找的是函数的,所以不要去找库或者关键字的手册,因为没有。
用“man”查找“printf”也能查找出来,但是这个“printf”不是C语言的“printf”,而是Linux自己的“printf”,Linux的“printf”能够在自己的界面上打印字符串。使用方式和C语言类似,这里不过多描述了。
3、Linux下第一个C语言文件
首先使用“#vim code.c”创建并进入code.c文件:
书写C语言内容如上所示。按“Esc”再按“CTRL+z”退出。
如果要重新进入“code.c”文件使用命令“cat”,例如“cat code.c”。
使用gcc编译代码,之后会出现对应可执行文件“mycmd”:
该文件直接打开就能使用。
五、Linux相关知识点
该章节内容是对第四章节的一个补充,知识点和代码操作不分家。系统中的这些相关知识点其实对于所有系统都是类似的,因为他们都来自Unix。
在电脑中无论是Windows还是Linux,目录 == 文件夹。
如果建立一个空文件,虽然该文件中没有内容但是也要占据空间。因为维护文件的存在需要有维护文件的内容,这些信息也是储存在电脑中的。
文件 = 内容 + 属性
那么文件的操作分为两种,一种是对文件内容操作,另一种是对属性进行操作。
例如“ls”就是显示文件属性,只有ls就只显示文件名。用“ll”或者“ls -l”会显示详细信息,显示“d”开头表示:目录,“-”开头表示普通文件。
Windows中:“\”是路径分隔符,Linux中:“/”是路径分隔符。
每个目录都有连个隐藏目录“.”“..”。分别表示当前目录和上级目录。
Linux的文件结构,是一颗从根目录“/”开始的多叉树:
a.叶子结点:一定是普通节点或者空目录。
b.非叶子节点:一定是非空目录。
文件中分为相对路径和绝对路径,这个道理和Windows是相同的。
在路径或者文件名中可以用“*”表示不确定的部分,在前或者在后。
结语
本节的重点在于Linux的进入以及简单的操作,然后需要认识到,对于电脑来说所有的操作其实都来源于文件。像windows的桌面,其实也是一个文件。我们进入系统会默认用用户登录然后进入用户的初始界面,最后显示图像出来。实际上桌面也是一个文件夹,我们可以在C盘的user中找到对应的桌面文件,里面的内容和桌面上的显示相同。
大致就是这样,可以说文件是计算机系统的基础。
下一篇博客可能会出的晚点,主要是实现用于实操去了。总之,感谢大家的支持了。