权当开篇——Linux学习之路(一)

   以第一篇博文大概总结一下通过预习第三期课程学到的Linux基本知识,但是都放在一块的话估计字数会太多,感觉差不多了就重开一篇。总结之前先来扯扯淡。作为一个资深的细桶假狗屎,不懂点基本的Linux操作似乎有点说不过去,开发完成以后不能独立操作服务器更新版本什么的简直naive。最重要的是,我还听说了一个有点玄乎的结论,那就是有博客并且坚持写博客的假狗屎||攻城狮||程序猿要比没有博客或者不能坚持写博客的工资水平要高出不少(多希望在这不不是博客而是微博,么么哒)。好了,淡也扯了,言归正传,走起~

1.系统分区一般规则:

   /boot   200M

   swap   实际内存的2倍,但不超过8G

   /     剩余全部空间

   当然,这只是最基本的一种分区策略,实际应用中可以分出/data,专门存放各种数据,或者给用户家目录单独分区存放用户数据,具体情况根据实际需求进行调整。

   可以通过以下命令来查看分区情况:

   [root@localhost~ ]# fdisk -l


2.链接文件--硬链接和软连接:

   [root@localhost ~]# ln 被链接文件 链接文件     --> 硬链接

   [root@localhost ~]# ln -s 被链接文件 链接文件   --> 软链接

   注:如果链接文件不存在,自动生成;如果链接文件存在,提示链接失败,解决办法是使用 -f 参数,强制链接,覆盖可能存在的链接文件。

   ★两者区别:

   (1)硬链接后链接文件和被链接文件的 inode 相同,软连接则不同。

   (2)硬链接后,链接文件为普通文件(即通过 stat, file, ll 等命令查看链接文件时为regular file),而软链接后,链接文件为symbolic link类型,ll时也会指向其链接的文件。

   (3)硬链接后,删除被链接文件,链接文件照常使用。软连接后,删除被链接文件,链接文件不能使用。

   (4)硬链接只能用于链接普通文件,链接目录文件时报错:

ln: `link/‘: hard link not allowed for directory

软连接没有这种限制,可以用来链接目录。这里还要特别说明一点,将目录做软连接后,删除时需要注意,比如:

   [root@localhost learn]# ln -s ./link/ test   //这里不能是test/这种目录形式

   [root@localhost learn]# rm -rf test       //这里不能是test/这种目录形式

如果将以上的test写为test/这种形式会报错。原因大概是因为链接文件test的文件类型是symbolic link,而不是directory。

   (5)硬链接不能跨分区链接,比如想要将/boot分区下的文件链接到/根分区下,会报错:

ln: creating hard link `/test‘ => `/boot/test‘: Invalid cross-device link

软连接无此限制,可以跨分区链接。

   注:可以简单的将硬链接理解为一种cp,只是该cp会将inode的值一并cp过来。同时使用这种cp会增加链接文件和被链接文件的节点数(即通过 ll 命令查看时的第二列数值)。


3.Linux系统分层及RAID:

   用户

   ↑

   文件系统

   ↑

   RAID

   ↑

   物理硬盘1 物理硬盘2 ……


   其中,RAID分为以下几种,作用不同;

   RAID 0 -- 增加写入速度

   RAID 1 -- 镜像,为了安全

   RAID 3 -- 最少需要三块物理硬盘,是RAID 5的过度版本

   RAID 5 -- 最少需要三块物理硬盘

   在做完RAID后,几块物理硬盘看起来就是一块硬盘一样

   

   RAID 0 假如有两块100G的物理硬盘做成,则该RAID 0可使用空间为200G

   RAID 1 假如有两块100G的物理硬盘做成,则该RAID 1可使用空间为100G(镜像)

   RAID 5 假如有三块100G的物理硬盘做成,则该RAID 5可使用空间为200G(一块物理硬盘拿出去做奇偶校验)

   注:这里说的RAID是物理RAID,而非系统在分区时的逻辑RAID。逻辑RAID不推荐使用,物理RAID一般由硬件提供商做好,这一块知识了解一下就行。


4.Linux系统添加硬盘及使用硬盘:

   为Linux虚拟机添加新硬盘时:

   (1)硬盘类型选择IDE,则Linux中路径为/dev/hda(hdb, hdc...顺序排列)

   (2)硬盘类型选择SCSI,则Linux中路径为/dev/sda(sdb, sdc...顺序排列)

   注:经过实验发现,CentOS 6.6中不管是IDE硬盘还是SSCI硬盘,在Linux中都是/dev/sd*这种形式,而非视频中所说的IDE为/dev/hd*,可能是因为在CentOS6.6或者更早的版本中已经取消了SSCI和IDE在命名上的区别。在为虚拟机添加新的硬盘后,SSCI排在IDE前面,如,开始时有两块IDE硬盘,分别为/dev/sda和/dev/sdb,之后添加一块SSCI硬盘,此时三块硬盘为/dev/sda(SSCI),/dev/sdb(IDE), /dev/sdc(IDE)。

   使用新添加的硬盘(又称裸设备)需要三步:分区 --> 格式化 --> 挂载

   (1)分区:

   [root@localhost ~]# fdisk /dev/sdb

   根据提示信息进行分区, n --> 新建

   p --> 主分区   83 Linux

   e --> 扩展分区  5 Extended

   p + e 个数 <= 4, 编号从1-4

   扩展分区可以再分区,分为l --> 逻辑分区 83 Linux,逻辑分区编号从5-more。分区完成后,在Command中,p查看该硬盘分区情况,q不保存退出,w保存退出。

   (2)格式化:

   [root@localhost ~]# mkfs.ext4 /dev/sdb1 //将/dev/sdb硬盘下的/sdb1分区格式化为ext4文件系统,文件系统有ext1,ext2,ext3,ext4版本,版本越高越稳定,现在一般使用的文件系统都为ext4。

   (3)挂载:

   [root@localhost ~]# mkdir /data

   [root@localhost ~]# mount /dev/sdb1 /data

   即可完成挂载,通过

   [root@localhost ~]# df -hT

   命令可以看到分区的挂载信息和使用情况,此时/dev/sdb1分区已挂载在/data目录下。注意,这样挂载只是暂时的,系统重启后会失效。解决方法有两种。第一种:

   [root@localhost ~]# vim /etc/fstab

   修改该文件,添加新的一行:

   /dev/sdb1  /data  ext4  defaults  0 0

   保存退出即可。第二种:

   [root@localhost ~]# vim /etc/rc.d/rc.local  //或者 vim /etc/rc.local,这两个文件为软连接,/etc/rc.local为链接文件,/etc/rc.d/rc.local为被链接文件。添加新的一行:

   mount /dev/sdb1 /data

   保存退出即可。补充一点,/etc/rc.local文件是系统启动时最后执行的文件,想让系统启动后帮你做的事都可以写到该文件中。另外,

   [root@localhost ~]# fdisk -l

   [root@localhost ~]# df -Th

两条命令都可以查看分区,其中,fdisk -l查看的主要是分区表信息,而df -Th侧重的是已经格式化并挂载后的文件系统,包括容量大小、使用情况、挂载点及文件系统类型等。(df -Th查看不到swap交换分区,查看交换分区需要使用fdisk -l,如下:

Device     Boot   Start  End   Blocks   ID  System

/dev/sda2        26    287   2097152  82  Linux swap / Solaris


5.强大的find命令:

   在介绍 find 命令之前先来看一看 stat 命令:

   [root@localhost ~]# stat /tmp/learn/test.log

   该命令用来查看文件的详细信息(不特别说明的话,Linux中的文件都是指广义上的文件,既包括普通文件,又包括目录文件),包括文件类型、inode值、权限、所属用户、Uid、所属用户组、Gid、文件大小、最后访问时间atime,最后修改时间mtime,最后改变时间ctime等 ,这三个时间经常配合find命令对文件进行操作,那么什么是atime,mtime和ctime,又有什么命令会影响他们呢?

   atime --> 访问时间  vi vim cat head tail more less

   mtime --> 修改时间  echo vi、vim(保存退出操作,即便没有修改任何内容)

   ctime --> 改变时间  echo vi、vim(同上) chmod chown chgrp

这里注意,使用echo进行输出重定向或者追加内容时,并没有访问文件,所不会改变atime。你是否想到,ls -l 命令查看文件详情时也有一个时间,那里所列出的时间是mtime。

   说完了stat 命令和三个时间,该find 命令登场了,不用过多介绍,来看几个例子先:

   (1)请查找/目录下文件名为test.log的文件:

   [root@localhost ~]# find / -name test.log

   (2)请查找/tmp目录下inode号为261132的文件,并将其删除:

   [root@localhost ~]# find /tmp -inum 261132 -exec rm -rf {} \;

   (3)请查找/root目录下三天前修改的所有文件,且文件名为test的文件:

   [root@localhost ~]# find /root -mtime +3 -name test   //或者,更宽泛一点

   [root@localhost ~]# find /root -mtime +3 | grep test

   (4)请查找/var目录下10分钟内被访问过的文件:

   [root@localhost ~]# find /var -amin -10

   (5)请查找/dev目录下文件类型为块设备的文件:

   [root@localhost ~]# find /dev -type b  //f,d,b,s,c,p,l,D <-- 文件类型

   上面几个例子列出来find命令比较常用的一些查询条件,比如文件名称,inode值,atime,amin,ctime,cmin,mtime,mmin,文件类型,这些条件能够组合使用,对查询结果进行操作使用-exec,格式为-exec 操作命令 {} \; 。


   第一篇写了不少了,不过也只总结了一小部分,下一遍咱们继续总结,see you~~~

   

本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1619923

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。