linux鸟哥私房菜收获
最近半个月读完了《linux鸟哥私房菜》这本书,其实在研究生的时候这本书已经读过一遍,这次拿出来读,主要是巩固熟悉一下linux操作系统的相关概念。
这本书整体来说对于初学者还是比较合适的。但是里面也有错误,同时书排版的方式有些地方有些问题,但是这些问题都不是很大。通过阅读这本书,对于linux的了解还是比较深度一些的。如果想要更深入的了解linux,可以看看《Unix & Linux大学教程》这本书,这本书对于命令的介绍和使用会更加深入些。
操作系统
操作系统是硬件和在操作系统上面运行软件的一个中间层。当然这里面包括了很多的内容,包括如何管理硬盘,内存,CPU等等一系列内容。所以一个操作系统要包括以下内容:文件系统,内存管理,网络管理,进程线程管理等等。下面主要聊一聊读了《linux鸟哥私房菜》的一些获得内容。
linux命令
在linux中更常用的还是命令行命令,由于在我们平时的工作中,使用linux主要是作为服务器,而服务器基本上是不提供X Window的。所以掌握linux命令就变得很重要。在linux下面的命令,我们要学会使用帮助文档,即如下获取命令的详细使用说明,其实就是软件程序的使用说明。
命令帮助
man [command]
[command] --help(-h)
man的输出内容主要包括以下内容:
NAME:简短的命令,数据名称说明
SYNOPSIS:简短的命令执行语法简介
DESCRIPTION:较为完整的说明
OPTIONS:针对SYNOPSIS部分,所有可用的选项说明
COMMANDS:当这个程序在执行的时候,可以在此程序中执行的命令
FILES:这个程序所使用或参考或连接到的某些文件
SEE ALSO:这个命令有相关的其他说明
EXAMPLE:一些可以参考的使用例子
BUGS:是否有错误
命令分类
因为在linux中命令太多了,我们不可能全部都记住的,但是一些常用的还是需要记忆一下的,这样至少我们在使用linux的时候可以能够操作。还有就是我们在使用命令的时候,可以稍微联想一下这个命令对应的英文单词,这样子能够帮助我们进行记忆。比如cd(change directory),mv(move),rm(remove)等等。而且linux下的很多命令在其他的软件中都有相同的意思。比如在docker操作中,docker rm
也是代表的删除等意思。其实外国人这些简写都是根据相对应的单词而来。当然我这里仅仅列举了较少的一些命令,更多的命令大家还是多多使用linux进行探索吧。
文件与目录相关管理命令
这部分命令主要是如何新建文件,目录;如何复制,移动文件;如何查看文件,目录等等。常用的命令如下,具体的使用规则可以使用帮助进行查看。
cd:切换目录;ls:列出目录和文件;cp:复制;
rm:删除;mv:移动;touch:创建文件;
mkdir:创建文件夹;cat:查看文件内容;more:查看文件内容(每次输出一页);
less:查看文件内容(可以往前翻页)
磁盘和文件系统管理
对于文件系统,大家可以找本关于操作系统原理的书好好了解一下。了解常规的文件系统对于理解分布式文件系统会比较有帮助。文件系统在我们开发的过程中是很重要的,特别是现在容器话,集群化。在linux文件系统中mount(挂载点)的含义,日志系统如何记录文件的操作,inode等等。常用命令如下:
df:查看磁盘整体的情况;
du:查看某一个目录的容量情况;
mount:挂载某一个文件系统;
ln:创建连接文件(有点类似于windows的快捷方式,但是分为软连接和硬连接)
文件和文件系统的压缩和打包
在平时我们linux的过程中,tar命令是一个经常出现的命令,掌握tar命令的使用很关键。因为tar命令不光能够打包文件,同时还能够解压文件。
tar:打包文件;
gzip:压缩文件;bzip2:压缩文件;
dump:备份工具
tar命令能够压缩文件是因为这个命令支持gzip和bzip2软件。对于tar命令我们要掌握以下常用的命令
压缩:tar -jcv -f filename.tar.bz2 被压缩的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
,可以查看文件内的内容
解压缩:tar -jxv -f filename.tar.bz2 -C 被解压缩的目录
其他常用命令
其他常用的命令,比如管道和数据重定向等等,如果我们需要编写shell脚本,这些命令会非常有用。在linux中掌握shell脚本是很重要的,shell脚本能够帮助我们做一些自动化的事情,代替手工作业。
grep:匹配文件;sort:排序;
wc:计数,比如统计文件内行数;history:查看历史命令
在linux的学习中,更重要的还是要多用。关记忆这些命令是没有用的,在我们用linux的命令的过程中,仔细想想每个命令的用法,同时加深自己对于这些命令背后的原理以及linux系统本身的原理的理解,相信能够完全掌握linux的使用的
权限理解
因为linux是支持多用户的,即多个人可以同时登陆一台linux系统上的。所以权限管理就变得非常重要。如果不考虑特殊权限的,文件和目录的权限主要分为三种,分别为可读(r)、可写(w)、可执行(x),对应的数字分别为4,2,1。
对于文件,这三个权限比较好理解。那么对于目录呢?
目录可读:你可以查询改目录下的文件名数据,即可以利用ls这个命令将目录下的内容列表显示出来。
目录可写:表示你具有更改该目录结构列表的权限,即在该目录下新建文件和目录;删除已经存在的文件与目录(不论文件的权限如何);将已经存在的文件或目录进行重命名;转移该目录内的文件,目录位置。
目录可执行:目录的x代表用户能否进入该目录成为工作目录的用途。能不能进入某个目录只与该目录的x权限有关。同时如果没有某个目录的x权限,是无法执行该目录下的任何命令。
常用命令
chmod:改变文件权限;chown:改变文件所有者;chgrp:改变文件所属用户组
linux常用目录介绍
在linux中,目录的用途是有具体的规范的,即FHS标准。这个规范的目的就是系统让用户可以了解已安装软件通常放置与哪个目录下。大家在平时的使用过程中最好是遵循这些规范。
FHS主要定义了三层目录,分别如下:
/(root,根目录):与开机系统有关
/usr(UNIX software resource):与软件安装/执行有关,可以看到usr是UNIX软件资源的缩写
/var(variable):与系统运作过程有关
根目录分类
根目录一般情况下会有这些目录,目录的含义如下:
/bin:主要放置在单用户维护模式下还能使用的命令,可以被root和一般用户使用,主要由cat,chmod,chown,date,mv,mkdir,cp,bash等
/boot:开机会用到的文件,包括内核文件和开机的配置文件
/dev:因为linux中所有的内容都是文件,而任何设备和接口设备都是以文件的形式存在于这个目录中。
/etc:系统主要的配置文件。例如用户的账户密码,各种服务的起始文件等。
/home:系统默认的用户主文件夹
/lib:开机时会用到的函数库,以及在/bin,/sbin下面的命令会调用的函数库。
/media:可删除的设备,包括软盘,光盘,DVD等
/mnt:如果暂时挂载某些额外的设备,一般建议放置在这个目录中
/opt:给第三方软件放置的目录
/root:系统管理员的主文件夹
/sbin:主要是开机过程中需要的,包括开机、修复、还原系统所需要的命令
/srv(service的缩写):一些网络服务启动之后,这些网络服务需要取用数据的目录。如WWW服务需要的网页数据就可以放置在/srv/www中
/tmp:放置临时文件的目录,重要一般不建议放在这个目录里,因为这个目录会定时清理
/proc:这个目录下的数据都在内存中,如系统的内核,进程,外部设备,网络状态等。
/usr下目录
/usr/bin/:绝大部分的用户可使用命令
/usr/include/:C/C++等程序语言的头文件与包含文件放置处。
/usr/lib/:包含应用软件的函数库、目标文件以及不被一般用户惯用的执行文件或脚本
/usr/local/:系统管理员在本机自行安装自己下载的软件,一般安装在这个目录下
/usr/sbin/:非系统正常运行所需要的系统命令
/usr/share/:放置共享文件的地方
/usr/src/:一般源码放置在这个目录下,而内核源码一般放在/usr/src/linux下
/var 下目录
/var/cache/:应用程序本身运行过程中会产生的一些暂存文件
/var/lib/:程序本身执行的过程中,需要使用到的数据文件放置的目录,比如Mysql数据库放置在/var/lib/mysql,rpm数据库主要放到/var/lib/rpm下
/var/log/:登录文件放置的目录,如/var/log/wtmp(记录登录者的信息)
/var/mail/:放置个人邮箱的目录
你有时候看到的linux系统目录可能不仅仅包括这些或者不存在其中的某些目录,这是因为linux系统版本,同时这也是个规范,有些linux开发厂商会依据这些规范做些修改。所以不一样也没有关系。
总结:因为linux系统包括的内容太多了,这里我仅仅提到了linux系统下的冰山一角。比如如何关机,系统的等级,如何在线安装软件,如何离线安装软件,如何创建用户和用户组,SELinux等等内容。大家都可以通过这本书学到。