Liunx入门如何做到不放弃

一本不错的linux书籍【Linux From Scratch】

小序:

    跟服务器接触的或者是相关开发人员必须要了解Linux,才能更好的利用它。下面是笔者的学习笔记,大家可以参考一下这里面所涉及的小知识点。

    服务器领域redhat要多于ubuntu,ubuntu的图形界面优势要强于redhad,但服务器恰好不需要图形界面,ubuntu适合公司内部的开发人员的使用。由于redhat有些功能属于售后服务,需要付费,然而CentOS又与redhat功能性一样,还免费的,所以现在更多的使用CentOS。

关于开源软件:
比如:Apache, Nginx, python, mysql,php,samba,mongoDB,Ruby,Sphinx ... ...
开源软件不一定免费。
特点: 使用自由,研究自由,散布及改良自由。

www.netcraft.com (这是一个国外综合网站,可以在这查询指定域名后面的运行服务器种类及相关信息)

QuickSSHd手机软件(将手机变成linux服务器,可通过ssh远程访问,Adriod 版,阉割版的linux)

学习Linux前要熟悉Linux 的基本思想
严格区分大小写,一切皆文件。
linux中本身不靠扩展名区分文件类型,但有一些约定熟成的扩展名,以标识文件类型,方便用户操作。

windows中的程序不能直接在linux中安装和运行(除非依赖模拟器)
好处: 木马病毒不能传染到linux中。

正文:

虚拟机的安装(VMware)
删除虚拟机不是个非常容易的事情,最好从网上下载一个专用软件(删除不干净会留垃圾并且下次安装就安不上了): VMware_Install_Cleaner

上图中箭头所指选项如果勾选,则虚拟机会占用主机CPU真实性能,适合虚拟机中跑大量数据。如果没有这种需求最好不要勾选。

然后就是桥接,nat,仅主机的联网模式的介绍(这个博客里有介绍,这里需要给个链接)


相关知识点预热
关于硬盘分区:
家中的柜子分一格一格的,硬盘也同理,需要分区。
有一定的规矩:
主分区: 最多只能有4个(由硬盘结构决定的,硬盘把它整个结构分为一个一个等大小的扇区,每个扇区512个字节(其中446个字节是来记录启动信息的,64个字节用来进行分区表示,每16个字节表示一个分区,所以最多只能表示4个分区))
扩展分区(只有一个功能:就是拿出N个(N<=3)主分区装N个逻辑分区):
最多只能有1个。
主分区加扩展分区最多有4个。
不能写入数据,只能包含逻辑分区。
逻辑分区

关于 格式化
格式化不是清空数据,初始化。而是为了写入文件系统(如FAT16,FAT32,NTFS |  EXT2, ETX3, ETX4 等,前半是windows,后半是liunx的),每个文件系统都有各自的属性,详情请见 。。。。在磁盘中写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
另外,只有含文件系统的设备/分区才能挂载。
格式化的作用将整个分区等分成N个块(block),在分区列表里面建立了一个二维表格(里面记录了每个文件的ID,修改时间,权限,文件保存位置),一般我们把文件ID号不称为ID号,而是称之为I(Inode的简写)节点,格式化确实能够把数据清空,但是格式化的目的绝不是为了这个。就比如给一间柜子重新打格子,必须把里面的衣物取出来才可以。

因为linux中一切皆文件的概念:
硬件设备都视作文件,那么硬件设备文件存放在哪呢? 存放在/dev/**路径下。
linux主要文件/路径介绍请参见:.......

分区设备文件名
/dev/hda1 (IDE硬盘接口, a代表第一块硬盘,1代表第一个分区,这个接口比较老了)
/DEV/sda1 (SCSI硬盘接口、 SATA硬盘接口)

分区表示
这里需要一张图片:
逻辑分区一定是从5开始的,1~4留个主分区。a,b,c.....是硬盘编号使用。

盘符是Windows下的概念,在linux中对应的叫挂载点,并且不是用A,B。。。作为盘符,而是将目录作为盘符(任何一个目录都可以作为盘符,手动新建的都可以,但部分目录必须跟根目录在同一个分区,不然系统起不来)。

挂载(把盘符和分区联系在一起的机制):
必须分区:
/ (根分区)
swap分区 (交换分区,内存分区2倍,不超过2GB)
     生产环境:
推荐分区:
/boot (启动分区,建议单独分出来,200M即可,如果不分,跟根分区在同一路径下,如果根分区满了就会影响系统的启动)

接下来就要装系统了。
前提是虚拟机中的以及配置好了一台机器(硬件环境),就是在WMware中新建然后选箭头指向的选项,如果选择第二个则大部分工作虚拟机代替你做了,起不到恨到的学习作用。

然后打开虚拟机电源,按F2进入BIOS界面。
然后调节boot(启动项)栏中的CD-ROM Drive 的优先级(将光标移动到它上面,然后按+号向上移动,移动到最上面)
如果通过CD-ROM Drive将系统安装完毕后还需要再进入BIOS界面将 Hard Drive优先级调到最高。
但是VMware虚拟机很智能,不修改以上的优先级时,系统启动发现本地硬盘是空的立即自动切换到光盘启动,然后第二次启动时又会按原来的顺序,这就省去设置环节了。
接下来进入CentOS的安装欢迎界面:


选第一个。安装流程见:
首先进入这个选项,提示是否需要遍历印象文件的完整性,选跳过。

然后选忽略:


然后进入 自定义分区linux安装时至少划分根分区和SWAP分区才能正常安装使用):
先建一个swap分区(必须的,且不是给用户使用的,大小在用户内存的两倍即可)
然后再创建ext4标准分区(用户使用)
     将/boot 单独分区(大小不用太大200M即可)
     给 /home分一个(根据需求比如服务器用于上传下载的就可以给这个单独分)
     最后必须给/分一个,剩余的全给他(是为了充分利用磁盘空间)。

然后进入 软件包的选择,服务器应该选择Minimal, 普通用户选择Desktop, 教学模式(基本模式)选择 :Basic Server (基本服务器)
一台服务器安装完毕后,在/root/路径下会生成安装日志,如果需要批量安装服务器,可以利用下面的anaconda-ks.cfg文件进行自动批量安装。

正式进入linux学习:

首先熟悉一下 Linux中常见目录的解释/作用,详情请参见 【点击】

然后熟悉 Linux常用命令
$ ls -l  或者 $ ll
查看文件的权限基本信息,下图第一位表示文件的类型:-表示普通文件,d表示目录文件,l表示链接文件
另外还有四个系统特殊文件(不用用户去操作的):块设备文件,字符设备文件,套接字文件,管道文件. 。(比如/dev/路径下面的硬件设备文件文件)

除了第一位,剩余9位分成3组(分别表示u所有者,g所属组,o其他人 三种用户身份的r读w写x执行权限),权限后面的三个表示对应拥有权限的对象,第一个数字形式的表示引用计数。


设计隐藏文件的初衷是表示这个文件是系统文件,除非特殊需要否者不要去动它。而不是单纯的把文件隐藏起来。
ls -i 显示该路径下所有文件的inode节点信息,系统查找指定文件是就是通过inode信息查找定位的。
mkdir -p japan/duola   (递归创建目录)
cd -   (回到上次所在目录)
ctrl + l   等同于 clear 
绝对路径和相对路径。
rmdir只能删除空目录
cp -a  。。。相当于 cp -pdr ...   (表示将目录的属相链接属性都复制,目标文件和源文件一模一样)

ln -s 源文件  目标文件  创建软链接, 不加-s选项则创建硬链接
硬链接的特征:
     1、拥有相同的i节点和存储block块(block块是格式化后形成的等份最小存储单元,如果一个文件未能装满一个单元那么这个单元不能够再装其他文件,但是可以自定义block的大小),可以看作是同一个文件
     2、可通过i节点识别
     3、不能跨分区
     4、不能针对目录使用
通俗的来说就如果两个文件是硬链接关系,那么他们拥有相同的Inode ID号。
软链接的特征:
     1、类似Windows快捷方式
     2、软链接拥有自己的I节点和Block块,但是数据块中只保存源文件的文件名和I节点号,并没有实际的文件数据
     3、lrwxrwxrwx    l 表软链接, 软链接的权限都是这个,但是执行起来还要看源文件的权限
     4、修改任意一个文件,另外一个文件都改变
     5、删除原文件,软链接不能使用
软链接跟windows中的快捷方式完全一样。
软链接或者硬链接修改任意一个的内容,另外一个都会随之同步,因为他们本质上存放源文件的block是一样的。
注意: 创建软链接一定要写绝对路径,因为这是编写这个功能命令时的创建软链接映射机制时,查找路径使用的是命令的传入参数路径。

文件搜索命令 $ locate 文件名  (返回文件以及其路径)
新建的文件不能立即搜索到,原因是locate命令的搜索范围和find不一样,它遍历的是后台数据库(/var/lib/mlocate/mlocate.db) 中准备好的数据
如果想立即搜索到未入库的数据,可以使用 $ sudo updatedb 更新一下数据库,然后再搜索。
提示:不同的版本的linux可能路径及数据名称会不一样。
locate配置文件(控制locate数据的内容,第一句写yes表示同意一下规则,n则表示关掉不启用):


查看可执行文件的位置 $ whereis (只能查看可执行文件相关):

上图中前面是可执行文件的位置,后面是帮助文档的位置,选项-b : 只看可执行文件位置。-m : 只看帮助文档。
which 看到命令所在位置,以及其别名,没有就看不到其别名



在系统中搜索符合命令的文件 $ find
查找文件,find命令还是很强大的,但是通常比较消耗系统资源。
find / -name install.log  (这是在根目录下查找,也就是所有文件都要遍历一下)

linux中的通配符(模糊查询):
*(匹配任意内容)  ?(匹配任意一个字符) [](匹配任意一个中括号内的字符) 注意使用时加引号。
find /root -iname "*.log"  (查找/root路径下后缀名为.log的文件,忽略大小写)
find /root -user root   (按照所有者搜索)
find /root -nouser   (查找没有所有者的文件,可用于清理垃圾)
find /var/log/ -mtime +10    (查找十天前的文件, -10十天内修改的,10十天当前修改的文件。atime文件访问时间,改变文件属性,修改文件内容)
find . -size 25k    (查找文件大小是25KB的文件,-25k小于25KB的文件,25k等于25KB的文件,+25k大于25KB的文件。不加单位它的默认单位是硬盘扇区大小:512B, 不是格式化分成的块大小)
find / -inum 262422  (在/路径下查找i节点是262422 的文件, 使用ls -i 查看文件的i节点)
综合一点的:
find /etc -size +20k -a -size -50k   (-a and的意思,左右两边条件都需满足, -o or的意思)
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
find /etc -size +20k -a -size -50k  | ls -lh
上面两条命令的执行效果是一样的,-exec 和 | 都有管道的意思。

grep: 在文件中搜索符合要求的字符串,也可模糊查找符合命令的文件名
grep -i 忽略大小写 (-v取指定字符串的补集,包含匹配,可使用正则表达式) 

帮助命令:
man 命令 (查看命令的帮助文档)
man -f ls  (查看ls命令拥有的帮助级别,相当于wahtis)

上面说到的whereis ls就可以查看提供的帮助文件的等级。
然后就可以:
man 4 null
# 查看和命令相关的所有帮助
man -k  相当于 apropos
例 $ apropos passwd  (查找所有含有passwd关键字的可查帮助文档信息,包括帮助级别信息)
然后就可以使用man 级别号 关键词  的形式查看指定帮助文档信息。
另外还可以使用$ 命令 --help选项查看帮助文件

怎样判断这个命令是shell自带的?
直接使用whereis,找不到可执行文件即为shell自带。也可以使用$ help 命令  来查看,只有shell内部命令才能使用这个命令查看帮助
info 命令也可以查看(一次查看所有的帮助文档,不太常用,不方便)

关于 解/ 压缩命令
查看详情请参见 【点击】

关机和重启命令
注意服务器不能远程关机,重启也不能轻易重启,因为访问的人过多,CPU高速运转的状态下断电容易损坏硬盘。
定时关机:
shutdown -r 5:30 &  (&的意思是让命令在后台执行。)
此时倒计时关机命令在后台执行,如果想中断则执行 $ shutdown -c  取消(-h关机, -r重启)
注意:另外其他关机命令比如:halt,poweroff,init 0等都不要轻易使用。
          其他的重启命令,reboot相对比较安全, init 6 (最好不要去使用)
     上面的init 6 或init 0 这里的数字表示的是系统的运行级别:(0:关机;1:单用户;2:不完全多用户,不含NFS服务;3:完全多用户;4:未分配;5:图形界面;6:重启), init 0 的意思就是调用关机级别,机关机。可以使用runlevel 查看当前系统运行级别(会返回两个参数,第一个参数是上一个运行级别,第二个参数是表示当前的)。
查看系统启动默认运行级别$ cat /etc/inittab  
注: 一般规律linux中的大写X指代的都是图形界面。
     另外一点 非常重要的是: 使用远程登录服务器时需要退出登录时,请使用 $ logout 命令, 而不是直接X掉!

其他常用命令:
挂载命令,所谓挂载就是分配盘符。
mount (显示所有的盘符,挂载点,使用 $sudo fdisk -l 也可查看分区简要信息)  红框中表示的信息为sd表示sata接口硬盘,a表示第一块硬盘,1表示1号分区,如果>=5,则表示为逻辑分区的编号。
然后后面文件系统是ext4 , 权限是读写。

mount -a (将/etc/fstab文件中写的自动挂载一遍)
/etc/fstab文件 : 开机自动挂载配置文件。
注意: 这个文件中不能轻易挂载外置设备(含文件系统的硬件设备),因为如果你设置自动挂载之后,你哪天哪个外置设备弹出系统,那你的系统就打不开啦!因为系统感情很脆弱,它认为你欺骗了它的感情,然后就崩溃了。

接下来介绍一下带选项的mount命令操作:


做个实验,重新挂载(使用remount参数 )一个分区改变其权限:
先使用上面的mount查看你的系统已经挂载了那些分区。
命令 $ mount -o remount,noexec /home  (这里的/home是你已经挂载过的分区盘符)
执行完上面的命令后,你在对应/home路径下新建一个shell脚本然后使用chmod 755 file_name.sh 给予权限,然后在执行,你会发现还是没有执行权限,就算你换成root用户都不可以。这就是效果。
做完实验后千万记得修改回来 $ mount -o remount,exec /home
上面mount的选项参数默认的都是正常的,不要随意更改,否则可能造成系统异常。

挂载光盘
  1. 放入光盘,箭头处记得打钩,否则就相当于未通电。


     2、建立挂载点 $ mkdir /mnt/cdrom/
     3、挂载光盘:
          $ mount -t isop660 /dev/cdrom /mnt/cdrom  (标红的可以省略,系统默认就是这个,可以挂到系统分配的/media上,也可以自己创建到mnt下,然后前面的参数是源硬件设备文件,这个文件是/dev/sr0的软链接文件,他们两可以任意互换使用,默认权限是读写),但光盘默认是只读,所以执行此命令时会返回提示,系统自动将权限转成只读权限。

使用完后为了保证数据的安全及完整性,必须卸载
卸载命令 $ umount 设备文件名或挂载点  即 $ umount /mnt/cdrom (或者/dev/sr0, 但是不要去卸载两次)

挂载U盘
$ sudo fdisk -l    (先查看一下对应USB的设备文件名)
$ mount -t vfat /dev/ sdb1 /mnt /usb/  (sdb1为查看得知的设备文件名,/mnt/usb/目录为自己自定义创建的挂载点, 另外vfat 指的是fat32文件系统)
注意 : Linux默认是不支持NTFS文件系统的!也就是说挂载移动硬盘是不能成功读取的,那么怎么办?有两个方案。方案一 : 重新编译linux内核,然后指定linux可识别NTFS文件系统; 方案二 : 下载ntfs-3g安装。
相对而言,方案二更为靠谱,但是解决了NTFS文件系统的识别,也只能跟光盘一样只有 权限(默认是读写,系统发现不能获取写权限,只能降级)。

用户登录查看命令
$ w    ($ who 命令为简化查询)

上面是本地登录显示的登录信息,下面的是远程登录: tty1表示本地终端,pts/1表示远程终端的第二个用户。FROM表示来源IP,-bash表示啥都没做。

做运维的可以写个远程实时监控脚本来监控目标服务器的这套数据。

查看当前登录和过去登录的用户信息
这里可以对服务器进行监控,看看是不是自己允许的用户登录。
其实last查看的是系统运行日志文件之一:/var/log/wtmp 下的内容,这个文件十个二进制文件,所以一般不会直接查看此文件,这样做的目的很简单,防止人为修改这个文件的内容。

查看所有用户的最后一次登录时间



日常开发常用命令参见 【点击】 # 因为写在一个文档中太长不方便日常查找,所以将本人日常开发使用频率较高的命令另行整理成一个文档。

好了linux基础到此告一段落,接下来即将讲shell基础知识,请参见【点击】





猜你喜欢

转载自blog.csdn.net/wys578/article/details/80689106