关于 Linux | 您所在的位置:网站首页 › google怎么转换成中文 › 关于 Linux |
最近看了两篇关于 Linux 的博客,我觉得写得不错,我将其中我觉得比较有价值的整理一下。 一、发展历程相信对 Linux 系统有一些了解的朋友都听过这么一个故事,Linux 是一名芬兰的学生 Linus Torvalds 在 Unix 系统的基础上开发的,并发布在学校论坛,最后火了起来。但是这么说并不十分的准确,Linux 的故事缘起于更早的UNIX 系统。 1. UNIX说到 Linux,就不能提到大名鼎鼎的 UNIX 系统,在上世纪60年代末的时候,那时候计算机系统还是批处理的,在又大又笨的大型机器上运行,要先将程序卡片装入设备,然后等1个小时后才能取运算的结果。不仅慢,还很废纸。 于是美国电话电报公司(下面简称 AT&T 公司)下面的贝尔实验室联合麻省理工学院及美国通用电气公司本来是打算开发一个大型机上的多人使用、多任务、多层次的操作系统 multics。但是 multics 这个系统步子迈得太大了,贝尔实验室认为这个项目周期长、成本高,不久就撤资了,各方也陆续退出,项目于是就关闭了。 但是贝尔实验室下面的两个研究员肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)对项目关闭很失望,因为他们在这个系统上开发了一个游戏太空旅行(Space Travel),实验室的其他人员对这个游戏也十分有兴趣。 于是,为了能够继续玩游戏,肯·汤普森和丹尼斯·里奇决定自己开发一个操作系统。 在这台机器上,他首先重写了游戏,然后想要开发一个全新的操作系统,由于有之前 multics 系统的经验,在一个月内他很快完成了内核系统、文件系统、编辑器、编译系统的工作。1969年第一版的 UNIX 系统正式诞生了。 但是 UNIX 是由不少使用汇编语言完成的,汇编语言用来编程不够强大,也不具备很好的可移植性,于是1971年丹尼斯·里奇在 B 语言的基础上开发出了 C 语言,1973年 UNIX 也用 C 语言进行了重写,随后发布了4、5、6几个版本的 UNIX。此后,UNIX 被政府机关、研究机构、企业、大学纷纷注意,并逐步流行;随着 UNIX 系统的广泛流行,C 语言也成为了最受欢迎的语言之一,一直延续至今。 一开始 AT&T 公司也没有太重视 Unix,毕竟不是正式的项目,况且在操作系统上(multics)还吃过大亏,也就没想拿它卖钱,因此被免费提供给大学使用,甚至直接给V7版本的源码以做研究。 因此在后面的10年,UNIX在各个学术机构得到广泛应用,甚至许多机构在此源码基础上加以改进,其中最著名的变种之一是由加州大学柏克莱分校开发的BSD产品(Berkeley Software Distribution),在此基础上又诞生了三条分支:FreeBSD、OpenBSD和NetBSD,就连苹果电脑的内核 Darwin 所使用的 NextSETP 也是 BSD 的衍生版本。 AT&T 公司发现 UNIX 居然如此受欢迎,于是意识到了 UNIX 巨大的商业价值,不再将 UNIX 源码授权给学术机构,并对之前的UNIX及其变种声明了版权,后面引发了各种旷日持久的版权纠纷,这是UNIX的后话。 2. Linux时间来到了80年代,随着 AT&T 公司闭源 UNIX 系统,在学校里给学生用的操作系统很少;当时计算机主要使用的操作系统有 UNIX、MS-DOS 和 MacOS 这几种,UNIX 已经开始商用,比较昂贵,仅局限于大型机;MS-DOS 系统比较简陋,且源代码被软件厂商严格保密;而 MacOS 大家肯定也都知道,是专门用在苹果计算机上的系统,而且当时应该没有黑苹果一说。 1987年当时在荷兰阿姆斯特丹 Vrije 大学当教授的美国人安迪·塔内鲍姆(AndrewS.Tanenbaum)为了让学生更好的理解操作系统的原理,就仿照 BSD 的源代码,编写了一个类 UNIX 系统,取名为 MINIX,意为迷你的UNIX,并且开放全部代码给大学教学和研究用;既然是 MINI,它的代码体量也是比较小的,全部代码共约12000行,而且只是一个教学工具,没有什么实际的应用价值。 1991年,Linus Torvalds(简称 Linus)在芬兰赫尔辛基大学期间,开始对 UNIX 产生了浓厚的兴趣;在校期间,由于 Linus 经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,他对 MINIX 只允许在教育上使用很不满,同时也为了方便读写和下载文件,他开始写属于自己的类 UNIX 系统;在一个暑假没日没夜的开发中,最终开发出了 Linux 的第一个内核(0.02版),并取名 Linus' Minix,后来改名为Linux。 1991年10月 Linus 在 Minix 新闻组发布消息,对外宣布 Linux 内核的诞生,并公开了内核源码;公开后 Linux 因为结构清晰、功能简洁,一经发布立即收受好评;后来在很多热心支持者的帮助下,经过多次版本升级迭代,终于在1994年3月,Linux1.0正式发布。 Linux 的标志和吉祥物是一只叫做 Tux 的企鹅,它的由来是因为 Linus 之前在澳洲时,在动物园里曾被一只企鹅咬了一口,便选择了企鹅作为 Linux 的标志。 3. Linux 与 UNIX 的区别与联系我们上面提到了一个词:类 UNIX 系统,那什么是类 UNIX 系统呢? 类 UNIX 系统是指继承 UNIX 的设计风格演变出来的系统。 类 UNIX 系统就是长得像 UNIX、但实际不是 UNIX 的系统;其实本质上就是借鉴了 UNIX 系统的界面、特性(多用户、多任务等),但是没有直接抄人家的源代码,毕竟人家是有版权限制的,因此更多是思想理念上的传承。上面提到的 BSD、MINIX 系统,以及 Linux 系统都属于类 UNIX 系统。由于 UNIX 标准认定价格昂贵,所以目前唯一获得 UNIX 标准认定的为苹果的 MACOS 系统。 Linux 系统和 UNIX 系统主要有以下区别: 开源性:UNIX 是闭源的,Linux 是开源的。跨平台性:UNIX 系统大多是与硬件配套的,只能在工作站或小型机上运行,且价格昂贵;而 Linux 则可运行在多种硬件平台上。二、Linux 发行版我们很多时候都能看到 Linux 发行版这个词,或者又看到说 Linux 内核怎么样,很多同学容易混淆这两个概念。其实当初 Linus 开发的 Linux 只是一个内核,是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,是硬件和软件之间进行通信的桥梁,内核并不是一套完整的操作系统;我们可以把内核理解为手机的芯片,有了芯片,手机的各个功能才能运行起来,因此内核是整个操作系统的核心。我们在 The Linux Kernel Archives网站可以下载到各种版本的 Linux 内核,并且对其进行编译。 内核是操作系统重要组成部分,接近于物理硬件,不是操作系统。我们常说的 Linux 系统,其实更多说的是广义上 Linux 众多的发行版,因为你并不会直接去操作系统的内核。发行版是指一些组织或厂商将 Linux 的内核与各种软件、软件包管理器等封装起来,并提供系统安装界面、系统配置和桌面环境等,构成了 Linux 的发行版。相当于小米、VIVO 的手机厂商,将芯片集成到手机里,装上屏幕、外壳、扬声器、电池等等部件,然后把手机整个的卖给你。 Linux 的各个发行版使用的是同一个 Linux 内核(内核版本可能有差异),因此在内核层不存在什么兼容性问题;每个发行版有不一样的感觉,只是在发行版的最外层(比如界面、包管理器)才有所体现。 uname -srm命令可以查看Linux系统的内核版本号。Linux 的发行版本有很多,其大体可以分为两类: 商业公司维护的商业版本,以著名的 Red Hat 为代表;社区组织维护的免费版本,以 Debian、Ubuntu 为代表。有些同学可能会开始疑惑了,上面不是说 Linux 是开源的吗?为什么还会有商业版?是的,Linux 内核是开源的,但是开源不等于免费,商业版收费的是它的商业服务和支持。 比如 Red Hat 虽然使用的都是开源软件,但是付出了很多人工将成千上万的开源软件整合成一个系统,并且保证软件间的兼容性稳定性,提供后续的支持、维护以及升级服务,因此它是收费的;如果你花的钱足够多,比如购买他们的高级服务,你甚至可以让 Red Hat 的工程师现场过来给你解决问题。 很多同学可能还是觉得开源收费不太能理解,但其实如果你去尝试编译多个开源软件,或者在操作系统时遇到一些莫名其妙的错误,然后你花费几天找遍 github、stackoverflow 和 Google 也没有找到问题而苦恼时,你会觉得如果有人能够帮你解决问题是一件非常高兴的事。更何况企业项目在运行时往往都会追求快速上线,计时按照天甚至小时,这个时候快速解决问题就显得非常的重要;这点费用对于企业来说是非常划算的。 下面我们简单介绍几个常见的 Linux 发行版本。 1. Red HatRed Hat(红帽公司)创建于1993年,是一家开源解决方案供应商,部位于美国北卡罗来纳州的罗利市。 1993年,Bob Young 成立了 ACC 公司,这家公司主要是做邮购业务,主营业务是出售 Linux 和 Unix 的软件附件。1994年,Marc Ewing 创建了自己的 Linux 发行版,并将其命名为:红帽 Linux,Ewing 在就读卡内基·梅隆大学期间曾经戴着一顶红色的康奈尔大学长曲棍球帽子,这是他的祖父赠送给他的。Young 在1995年收购了Ewing的企业,两者合并成为红帽软件公司,由 Young 担任首席执行官。 Red Hat 公司的产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)、Fedora Core(由 Red Hat 桌面版发展而来,免费版本)。 2. FedoraFedora Linux 是由 Fedora 项目社区开发、红帽公司赞助,目标是创建一套新颖、多功能并且自由的操作系统。 Fedora 对于用户而言,是一套功能完备、更新快速的免费操作系统;而对赞助者 Red Hat 公司而言,它是许多新技术的测试平台,因此它的稳定性不如 Centos。 3. CentOSCentOS 可以理解为是基于 Red Hat 商业版系统的社区编译重发布版,完全开源免费,因此相较于其他一些免费的 Linux 发行版会更加稳定,也因此一般企业里常用作服务器操作系统。 4. DebianDebian 是目前世界最大的非商业性 Linux 发行版之一,是由世界范围1000多名计算机业余爱好者和专业人员在业余时间制做。 5. UbuntuUbuntu 是基于 Debian 发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的Linux 发行版,而且 Ubuntu 的所有发行版都免费提供。 Ubuntu 的创始人马克·沙特尔沃思(Mark Shuttleworth)是一名有传奇色彩的南非人,他在大学毕业后创建了一家安全咨询公司,后以5.75亿美元被收购,一跃成为南非本地的富翁。2002年马克自费乘坐罗斯联盟号飞船,在国际空间站中度过了8天的时光,之后创立了 Ubuntu 社区。他说太空的所见正是他创立Ubuntu的精神所在。Ubuntu 这个词也是来源自非洲一个部落,意思是“人性”“我的存在是因为大家的存在”,是非洲传统的一种价值观。 作为 Linux 发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从 Linux 初学者到实验室用计算机/服务器都适合使用的发行版。 6. 如何选择众多 Linux 发行版?如果你需要一个服务器系统,想要一个比较稳定的服务器,可以选择 CentOS 或者 RHEL。如果你需要桌面系统,既不想用盗版,也不想在系统配置上浪费太多时间,可以选择 Ubuntu。如果你喜欢折腾新功能特性可选 Fedora。三、Linux 的优劣势优势: 开源安全稳定适合计算机从事人员劣势: 软件生态不像 Windows 和 MacOS 那么丰富。交互界面不够现代化(个人观点)。没有足够的商业支持,更新维护相较于其他主流操作系统没那么令人放心。四、Linux 操作1. Linux 文件系统/var:包含在正常操作中被改变的文件、假脱机文件、记录文件、加锁文件、临时文件和页格式化文件等。/home:包含用户的文件:参数设置文件、个性化文件、文档、数据、EMALL、缓存数据等,每增加一个用户,系统就会根据其用户名在 home 目录下新建和其他用户同名的文件夹,用于保存其用户配置。/proc:包含虚幻的文件,他们实际上并不存在于磁盘上,也不占用任何空间(用 ls-l 可以显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统。/bin:包含系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。/etc:为操作系统的配置文件目录(防火墙、启动项)/root:为系统管理员(也叫超级用户或根用户)的 Home 目录。/dev:为设备目录,Linux 下设备被当成文件,这样一来硬件被抽象化、便于读写、网络共享以及需要临时装载到文件系统中,正常情况下,设备会有一个独立的子目录,这些设备的内容会出现在独立的子目录下。2. Linux 命令操作查看当前目录命令:pwd打开文件夹命令:cd打开指定文件夹:cd [目录名称]打开当前用户的根目录:cd ~返回上级目录:cd …返回进入目录:cd -打开根目录:cd /浏览目录下的文件列表命令:ls以列的方式查看当前目录下的文件列表:ls -l查看当前目录下所有的文件(包括隐藏文件):ls -a以列表的方式查看当前目录下的所有文件:ls -la创建文件目录命令:mkdir新建文件目录:mkdir 文件夹名称递归新建多级目录:mkdir -p 文件夹名称例如在用户目录下新建 test 目录,命令这样写:mkdir -p test/test1/test2/test3 递归新建多级目录的写法删除文件目录命令:rmkdir删除指定目录:rmkdir 目录名称递归删除指定目录及中间目录:rmdir -p 目录名称 这里没有写错,没有字母 k删除文件或者目录命令:rm常用命令:rm -rf [目录或文件] rm -ri [目录或文件]强制删除文件或目录:rm -rf 目录或者文件在删除前询问是否确认删除:rm -ri 目录或文件因为强制删除的后果不太好,一般不建议使用 rm -rf 进行文件删除rm 命令中不跟 r 参数,无法删除目录,只能删除文件复制文件或目录命令:cp递归复制目录1下的所有的文件和文件夹到目录2:cp -r [目录1][目录2]执行复制操作时覆盖原有目录前询问用户:cp -ri [目录1][目录2]移动文件、修改文件名命令:mv将文件夹1名称更改为文件夹2:mv 文件1 文件2 (给文件更名)将目录1的文件移动到目录2:mv 目录2 目录2 (将目录1的文件移动到目录2)创建文件命令:touchtouch 文件名称查看、编辑文件命令:vivi 命令为 UNIX 操作系统或者类 UNIX 操作系统都有具有的功能强大的文件编辑命令,用户输入 vi ++ 文件名,便可以进入 vi 模式进行文件内容的查看和编辑,如果文件已经存在,则直接打开文件,如果文件不存在,则系统将打开一个全新的空文件。查看、编辑文件命令:cat显示一个小的文件的内容:cat 文件名称创建并打开一个新的文件:cat > 文件名称查看文件开头内容命令:headhead [参数] [文件名]例如,使用 head 命令显示某个文件开始的 n 行数据:head -n 文件名称 查看文件结尾内容命令:tail动态加载某个文件的内容(常用于查看日志文件):tail -f 文件名称展示文件最后几行的数据:tail -n 行数文件名称3. Linux 权限管理用户和用户组 用户是指在一个操作系统中,一系列权限的集合体,操作人员通过用户名和口令可以在系统中执行某一些被允许的操作。不同的用户可以具有不同的权限。Linux 操作系统中每个用户都具有唯一标识 UID,当使用命令创建用户时,如果不指定用户的 UID,则系统将自动为其分配 UID。 用户组就是具有相同特征的用户的集合体,在 Linux 系统中,每一个用户都属于至少一个用户组。Linux 操作系统中每个用户分组都具有唯一标识 GID,当使用命令创建用户组时,如果不指定用户组的 GID,则系统将自动为其分配 GID。当使用 -u 指定用户 id 时,用户 id 尽量大于500,以免冲突。因为 Linux 操作系统安装后,会默认建立一些用户,所以可能会占用 500 之内的 id 号。 Linux 权限机制有以下特点: 系统有一个权限最大的用户,其名称为 root ,root 用户属于 root 用户组。系统默认只有 root 权限可以添加和删除用户。添加用户之后,如果没有给用户指定用户组,则系统会为用户添加一个同名的用户组,用户属于该组。root 切换到普通用户无需登录,普通用户切换到 root 用户需要登陆。root 可以给用户赋予和回收某一个文件的读、写、执行的权限。用户操作命令 切换用户命令:susu [用户名] 或者 su -[用户名]su[用户名]和 su -[用户名]都可以切换用户,前者类似于临时切换用户,当使用该命令进行切换新用户时,用户配置仍然沿用原来的用户配置,如环境变量、系统变量等。而后者进行切换用户时,环境变量、系统设置全部切换成新用户的用户配置。查看当前登陆用户命令:whoami查看当前用户所属分组命令:groups查看当前用户 UID 和 GID 命令:id添加新用户命令:useradd在 Linux 操作系统中添加用户:useradd 用户名 在 Linux 操作系统中添加用户并指定用户 UID:useradd -u 指定的 UID 用户名 修改用户密码命令:passwd例如:修改当前用户名为 sang 的用户密码:passwd sang在添加用户之后,只有为其设置密码,用户才能登陆 删除用户命令:userdel删除用户:userdel 用户名删除用户并同时删除其登陆信息:userdel -r 用户名修改用户信息命令:usermod语法:usermod [选项] [参数] [用户名]修改用户登录名:usermod -l 新用户名 旧用户名修改用户所属分组:usermod -g 新组名称 用户名添加用户组命令:groupadd语法:groupadd [选项] [组名称]修改用户登陆名:groupadd 组名修改用户所属分组:groupadd -g 组 GID 组名权限操作 权限操作Linux 操作系统为文件定义了读、写、执行三种权限,不同的用户或者用户组可以具有不同的权限,系统采用“r”、“w”、“x”来分别表示文件的读、写、执行权限。使用 ls -l 命令可以查看到用户在当前目录或者文件的操作权限。 举例: drwxr -xr -x. 2 root root 4096 Sep 23 2011 bin从左至右分别表示如下含义: d:代表 bin 数目目录而不是文件rwx:代表拥有者具有读、写、执行的权限r -x:代表同组用户具有读、执行的权限,但是没有写权限r -x:代表其他组用户具有读、执行权限,没有写权限常用的变更权限命令为:chmod 语法:chmod [选项] [参数] chmod 的参数可以分为两种,分别是权限模式和数字模式。 权限模式: 权限模式使用 u、g、o 分别代表拥有者、同组用户、其他组用户,使用 + 和一代表赋予和收回权限,使用 r、w、x 代表读、写、执行权限。 例如:将文件01的执行权限给当前用户,写权限赋给用户所在的用户组和其他用户。 chmod -r U+X,G+W F01例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读、写权限赋给用户所在的用户组和其他用户。 chmod -r u=rwx,g=rw,o=rw f01数字模式: 为了简化授权步骤,用户也可以采用数字模式进行授权,使用二进制的形式代表 r、w、x 三种权限,如 101 (5) =r -x,111 (7) =rwx,100 (3) =r- - 例如:将文件 f01 的读、写、执行的权限赋给当前用户,将读和执行权限赋给用户组、将写和执行权限赋给其他用户。 chmod 753 -r f01例如:将文件 f01 的读、写、执行权限赋给所有用户。 chmod 777 -r f014. Linux 进程管理在 Linux 的应用中,我们需要对进程进行管理,如查看某个进程是否启动、以及在必要的时刻,杀掉某个线程。 查看进程命令:psps 命令是 Linux 操作系统中查看进程的命令,通过 ps 命令我们可以查看 Linux 操作系统中正在运行的过程,并可以获得进程的 PID(进程的唯一标识),通过 PID 可以对进程进行相应的管理。 ps -ef | grep [进程关键字]根据进程关键词查看进程命令显示如下,显示的进程列表中第一列表示开启进程的用户,第二列表示进程唯一标识 PID,第三列表示父进程 PPID,第四列表示 CPU 占用资源比列,最后一列表示进程所执行程序的具体位置。 杀掉进程命令:kill当系统中有进程进入死循环,或者需要被关闭时,我们可以使用 kill 命令对其关闭。 kill -9 [PID] PID 为 Linux 操作系统中进程的标识 5. Linux 其他常用命令清屏命令:clear查询命令详细参数命令:man挂载命令:mnt远程连接服务 SSH 相关命令:启动 SSH 服务命令:service sshd start重启 SSH 服务命令:service sshd restart关闭 SSH 服务命令:service sshd stopLinux 大多数情况下都是远程服务器,开发者通过远程工具连接 Linux ,启动了某个项目的 JAR,一旦窗口关闭,JAR 也就停止运行了,因此一般通过如下命令启动 JAR:nohup java -jar jar-0.0.1-SNAPSHOT.jar & 这里多了 nohup ,表示当前窗口关闭时服务不挂起,继续在后台运行。 6. Linux 系统软件安装常用软件安装Linux 下常用的软件安装方式有3种。 tar 安装:如果开发商提供的是 tar、tar.gz、tar.bz 格式的包(其中 tar 格式的为打包后没有压缩的包,gz 结尾的是按照 gzip 打包并压缩的软件包,tar.bz 是按照二进制方式打包并压缩的软件包),可以采用 tar 包安装,tar 安装方式本质上是解压软件开发商提供的软件包,之后在通过相应配置,完成软件的安装。rpm 安装:rpm 安装方式是 redhat Linux 系列推出的一个软件包管理器,类似于 Windows 下的 exe 安装程序,可以直接使用 rpm 命令安装。yum 安装:yum 安装本质上依然是 rpm 包安装,和 rpm 安装方式的不同之处是用户可以通过 yum 参数,指定安装的软件包,系统将自动从互联网上下载相应的 rpm 软件包。而无须用户关心软件包的下载地址,以及软件包的依赖关系。软件安装常用命令 解压压缩命令:tar语法:tar [选项] [压缩包]解压 gzip 包:tar -zxvf [包名]解压 bz 包:tar -jxvf [包名]解压普通包:tar -xvf [包名]安装卸载命令:rpm 语法:rpm [选项] [软件包]查询是否已经安装了某软件包:rpm -qa|grep [软件包关键词]卸载已经安装的软件包:rpm -e 软件包全名 安装软件包并查看进度:rpm -ivh 软件包路径 参考[1] 为什么很多程序员都建议使用Linux? - 掘金 [2] Linux 最常用命令:能解决 95% 以上的问题 |
CopyRight 2018-2019 实验室设备网 版权所有 |