【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

Linux基础入门(实验楼实验)

放大字体  缩小字体 发布日期:2020-05-01 19:34:43    浏览次数:8
导读

  Linux和windows、Mac OS一样是一种操作系统。最早流行起来的操作系统是UNIX,但由于其过度商业化,价格昂贵,因此在校园里人们大多选择MINIX。1991年,Linux之父Linus Torvalds从MINIX入手,计划开发一个性能更好的操作系统。他第一次发行的版本吸引了很多黑客,这使它很快具有了一些吸引人的特性。 Linux本身只是操作

  Linux和windows、Mac OS一样是一种操作系统。最早流行起来的操作系统是UNIX,但由于其过度商业化,价格昂贵,因此在校园里人们大多选择MINIX。1991年,Linux之父Linus Torvalds从MINIX入手,计划开发一个性能更好的操作系统。他第一次发行的版本吸引了很多黑客,这使它很快具有了一些吸引人的特性。 Linux本身只是操作系统的内核,它没有自己去开发应用程序,而是使用已有的自由软件,这减少了搭建开发环境花费的工作量,Linux中许多重要的软件都来自于自由软件基金GNU项目。

  Linux发展到今天已经成为了具有免费、稳定、安全、资源占用少、定制性高、具有多种可选择图形用户界面的优秀系统。因此尽管Linux没有特定的支持厂商,缺少对游戏娱乐和专业软件的支持,但仍然在世界范围内受到开发人员的广泛欢迎。Linux现在拥有Debian、Ubuntu、CentOS等多个发行版。

  Linux本身是没有图形界面的,我们看到的图形界面实际上是运行在 Linux上的一套软件,这些实现了客户端功能的桌面环境有KDE,GNOME,XFCE,LXDE,用户可以根据自己的喜好选择不同的桌面环境,定制自己的桌面。实验楼目前使用XFCE桌面环境。

  我们与Linux系统的交互通过一个叫Shell的中间程序完成,在图形界面下Linux系统还为我们提供了一个叫终端模拟器的程序----Terminal。终端本质上对应着Linux上的/dev/tty设备,Linux的多用户登录实际上就是通过不同的/dev/tty设备完成。Linux默认提供6个Terminal。

  对应于Linux内核,shell是linux系统提供给我们的“壳”,它之所以被称作shell是因为它隐藏了操作系统的底层细节。Shell既是用户交互的界面,也是控制系统的脚本语言,在Linux中常见的shell有bash、zsh、ksh、csh等,Ubuntu终端默认使用的是bash,实验楼中的终端则使用zsh。

  在使用终端进行交互的过程中,会有命令打起来麻烦,容易打错,终端用起来很累的感觉,熟练使用快捷键可以大大提高终端的使用效率,linux下的快捷键如tab补全命令、目录、文件名等都很好用,详细可以参考Linux快捷键大全。

  Linux是可以多用户登录的,他们共享一部分主机资源,也有自己的用户空间。尽管他们的文件都是放在同一个物理磁盘上,但由于Linux的用户管理和权限控制让用户看起来有属于自己的空间。

  输出的第一列表示当前伪终端用户的用户名,第二列pts/0中的pts表示伪终端,0表示伪终端序号。

  在Linux系统中,root账户拥有着最高的权利,可以新建/添加用户。我们一般登录都是以普通用户的身份登录,要创建用户需要root权限,这需要用到sudo命令。要使用这个命令需要两个条件:

  su user可以切换到用户user;sudo cmd可以以root权限运行命令cmd,这需要当前用户属于sudo组,且需要当前用户的密码;su -user也可以切换用户,并且会把环境变量改为目标用户的环境变量。

  Linux中每个用户都属于一个用户组,一个用户可以属于多个用户组,同一用户组中的用户可以共享一部分特定的资源,当创建一个新用户时会同时创建一个同名的用户组,查看用户属于那个用户组可以用groups命令或者查看/etc/group文件。

  使用长格式列出文件ls -l可以看到文件的权限。其中r表示读权限,w表示写权限,x表示执行权限。

  文件权限修改使用chmod命令。文件权限可以用二进制多项式表示,也可以用加减赋值的方法表示。对于二进制表示法,按照rwx的顺序,对应的值分别为4、2、1,即如果一个文件对某用户有rw权限,则值就是6。如下所示:

  命令chmod后接一组数字——一般是三位——表示对应用户的权限,那么哪一位数字对应哪些用户呢?经查证和实验,第一位数字表示文件所有者权限,第二位表示与文件所有者同组的用户的权限,第三个数字表示其他用户组的权限。对于四位数字的情况,相当于在原来三位之前再加一位,这一位的用法详见详解。

  Linux目录看起来和windows相似,但实际上实现机制完全不同。Windows以存储介质为基础实现文件管理,Linux则是以树形目录的形式来构建整个系统。

  使用cd命令可以切换目录,在linux里用.表示当前目录,用..表示上一级目录,用-表示上一次所在目录,用~表示当前用户home目录。

  路径分为相对路径和绝对路径,绝对路径可以理解为完整路径,相对路径则是相对于当前目录的路径。使用pwd命令可以获得当前目录的绝对路径。

  变量准确的说是Shell变量,变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。

  也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,却别在于打印的变量类型不同。

  Shell执行用户输入的命令是通过环境变量PATH来搜索的,将自己的程序路径加入到PATH中,再运行自己的程序使就不需要输入完整路径了。

  可以看到本次挑战中修改权限时犯过不少次错误,因为对命令中的参数对应哪些用户还不够熟悉,可见要想高效的的使用Linux需要很多的练习。

  tar原本是一个打包工具,但在Linux上同时还实现了对7z、 bzip2等压缩工具的支持,只是需要多加几个参数,非常方便。

  mkfs命令可以格式化磁盘;mount命令可以挂载磁盘到目录树;unmount可以卸载已挂载磁盘;fdisk命令可以为磁盘分区。losetup命令可以建立镜像与回环设备的关联。

  内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。

  外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。

  以上三个命令都可以获得帮助信息,不同的是,help命令用于显示Shell内建命令的简要帮助信息;man命令没有内建和外部之分,它显示系统手册页中的内容,更加详细;info是GNU的超文本帮助系统,显示的信息更多。

  crontab命令从输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活,crond为其守护进程,crond常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。

  在实验楼需要先启动rsyslog,以便通过日志中的信息了解任务是否真的被执行了。其次手动启动crontab,通过crontab -e添加任务。添加每分钟01秒时新建文件的任务如下:

  在文件中首先用五个参数表示任务执行的时间,后面接具体的任务。五个时间参数分别为分、时、天、月份、周几。

  实际上图中的句子有一个错误,那就是&&应该为,这在后面才会学到。然而即便有错在实验楼提交依然通过了,可见实验楼的在检测结果时并没有判断之前的文件是否被删除了。

  实际上命令顺序执行很可能遇到问题,那就是如果下一条命令的执行需要用到前一条命令的结果,那么顺序执行就会出错。所以我们可以用&&或来连接多条命令进行有选择的执行。当&&命令返回值是0的时候,&&后的命令会继续执行;则在前面的命令返回值不为零时才会执行后面的命令。要知道前一条命令的返回值,使用echo $?。

  和&&任意顺序连接命令都可以吗?当然是可以的,其实只要记住一条标准,那就是或&&后面的命令是否执行之和他们前面一条命令的返回值有关就行了。

  我们在使用一些过滤程序时经常会用到的就是匿名管道,在命令行中用分隔符表示。管道连接两条命令,将前一条命令的输出直接作为下一条命令的输入。如图

  数据流重定向简单的理解就是将原本输出到一个地方的数据转到另一个输出位置,如输出到标准输出中的数据转而输出到文件中。需要注意的是,标准输出和标准错误输出是两种不同的输出,要对这两种信息同时进行重定向需要特殊的操作,即使用&。对比以下两图。

  显然我理解的命令是下面那种输出,但这种提交是错误的,正确的反而是上面那种,感觉实验楼把文件行数减掉后的第一个字段直接当成命令了,似乎是实验楼错了?

  正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

  正则表达式不论是在什么操作系统下,都是字符流处理的一种很常用也很重要的方式。在Linux下要注意正则表达式和通配符的区分。正则表达式中的基本语法和特殊符号如下。

  程序(procedure):不太精确地说,程序就是执行一系列有逻辑、有顺序结构的指令,帮我们达成某个结果。就如我们去餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,最后我们得到了这么一盘牛肉盖浇饭。它需要去执行,不然它就像一本武功秘籍,放在那里等人翻看。

  进程(process):进程是程序在一个数据集合上的一次执行过程,在早期的UNIX、Linux 2.4及更早的版本中,它是系统进行资源分配和调度的独立基本单位。同上一个例子,就如我们去了餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,而里面做饭的是一个进程,做牛肉汤汁的是一个进程,把牛肉汤汁与饭混合在一起的是一个进程,把饭端上桌的是一个进程。它就像是我们在看武功秘籍这么一个过程,然后一个篇章一个篇章地去练。

  通过本实验我们初步的了解进程在系统中存在的概念,以及进程如何在系统中衍生,发展,以及进程之间存在的相互关系,学会了进程的查看命令 ps,pstree,top,以及使用这些命令时所得到的信息的含义,从而获取我们需要的信息,同时我们学会了进程的管理命令 kill,nice,renice可以为我们在后续学习进程管理打下基础,同时了解了工作与进程,以及工作管理的一些使用性的操作。

  日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。收集你想要的数据,分析出有价值的信息,可以提高系统、产品的安全性,还可以帮助开发完善代码,优化产品。日志会成为在事故发生后查明“发生了什么”的一个很好的“取证”信息来源。日志可以为审计进行审计跟踪。

  系统日志主要是存放系统内置程序或系统内核之类的日志信息如 alternatives.log 、btmp 等等,应用日志主要是我们装的第三方应用所产生的日志如 tomcat7 、apache2 等等。

  通过本实验我们了解系统日志结构,以及我们可以从中获取什么样的信息,给我们带来什么样的价值。还有日志工具的配置,以及省心省力的 logrotate。

  Linux表面死板,实则是一个自由度很高的系统。在终端中进行操作看似困难,但熟悉之后很多事情的效率却远高于图形界面。本次实验之前我其实用过一些Linux,那时对它的感觉就是虽然难用但是干净,它只做用户让它做的事。经过这两天连续使用Linux,感觉Linux其实没那么难用,相反在应用安装,环境配置时感觉比windows要方便好多,而且真的是能做到“我输入了什么,就产生什么结果”。这和windows等图形界面的操作系统有很大不同,图形界面经常鼠标不小心点一下哪里就完全偏离了预想的方向。继续练习,相信Linux的使用会更加得心应手。

 
关键词: linux实验
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:http://www.31duo.com/news/show-190793.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4