N25 – 第一周博客作业

 

1. 描述计算机的组成及其功能
2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别
3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述
4. 说明Linux系统上命令的使用格式;详细介绍ifconfig,echo,tty,startx,export,pwd,history,shutdown,poweroff,reboot,hwclock,date命令的使用,并配合相应的示例来阐述。
5. 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
6. 请罗列Linux发行版的基础目录名称命名法则及功能规定

 

那么,下面,我们开始,黑喂狗

 

描述计算机的组成及其功能

CPU
 运算器:算数运算,逻辑运算等各种运算
 控制器:控制总线使用权限,寻址,读访问,写访问
 寄存器/缓存:

存储器:内存/RAM, 随机访问存储器
 内存分为很多存储单元,每一个存储单元可以存储8位字节数据,8bits = 1Byte
CPU+存储器 = 计算机核心部件

 

输入设备:下指令,提供数据等
输出设备:输出数据加工后的结果

 

2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系和区别
 a. Slackware家族
  Slackware: 致力于成为Unix那样的Linux系统,没有软件包管理工具,所有软件都是tgz(tar/zip) 格式文件和安装脚`                   本,Slackware一罐坚持KISS原则”Keep It Simple Stupid)
  SUSE Linux(SLES): 基于RPM包管理工具的著名发行版rpm/zipper
  OpenSUSE: SUSE的社区版
   
 b. Debian家族:
  Debian: 分为Testing/Unstable/Stable三个分支,最遵循GNU规范的Linux系统,至今由社区支持,无商业化公司,使用优秀的dpkg(deb包)/apt-get包管理方式
  Ubuntu:基于Debian的Unstable分支出现, 所有系统命令必须使用sudo实现,无法使用root login系统
  Mint: 基于Ubuntu的另一个Linux 桌面版本

 c. Redhat家族
  RHEL: 基于RPM/YUM软件包管理方式,最流行的Linux发现版本,RPM/Yum->dnf
      Fedora:早先为Rebhat的免费产品,后来停止更新后捐赠给了Fedora。Fedora相对于RHEL相当激进,所有的新软件,新版本都会在Fedora上看到,可以说Fedora担当相当一部分RHEL试验田的角色。
  CentOS: 完全基于RHEL的社区版本,RHEL的免费替代品
  Oracle Enterprise: Oracle根据RHEL自行开发的运行Oracle的Linux服务器系统

 d. Gentoo: 滚动发行版,软件包括kernel均为下载的源码在本地编译而得,整个安装过程都需要边安装边编译
 
 e. Arch: 滚动发行版,软件是下载的可执行文件,直接安装即可,使用port包管理工具
 
 f. LFS: Linux From Scratch(从0构建Linux),一切都需要从头开始…

 
3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述
 a. 一切皆文件
 Linux中,所有的一切都是以文件的形式存在于Linux系统中的,字符设备,块设备,目录,管道,命令等等。Linux系统的根体现了Linux必须把一切作为文件存在于系统中。/是一个文件系统,是整个Linux系统的元,一切从/开始,/是一个目录也是一个文件系统,那么存在于这个文件系统中的,也只能是文件了。
  
 b. 一个程序只做一件事并把它做好/多个小程序完成复杂任务
 这句话是对的,但是我并不认为这是Linux独有的哲学思想。这应该算是匠人精神,匠人精神最出名的日本,有很多人都是遵循这种精神来生活的,22岁毕业开始画一部漫画,一直就是几十年,直到画到退休,一生全部奉献给了这部漫画。三星米其林餐馆的老板,专注天妇罗50年,从始至终就只是炸天妇罗,50年所想的就是如何把天妇罗炸的更好。同样,一个程序只做一件事并把它做好,这样就会造就无数的专注,精致,优秀的小程序。无数的专注的优质的小程序就撑起了整个Linux世界
 
 c. 尽量避免捕获用户交互接口
 不捕捉用户交互接口,就可以比较容易以编程的方式实现自动化任务

 cd 文本文件保存配置信息
 使用文本文件保存配置信息有一个好处,使用一款文本编辑器工具就可以完成大部分配置信息

 *. Freedom & Share
  相比上面几个,我觉得自由与分享才是Linux的哲学思想,上面的可以称之为Linux系统设计的哲学思想,虽然我没办法给出一个哲学的确切定义或者解释清楚什么是哲学。但是作为存在的根本,我觉得Freedom& Share才是Linux的根基,从无到有,从小到大,从未流行到今天的蓬勃发展,一直离不开自由与分享,所以学习Linux,使用Linux都需要抱着这样一种哲学思想或者精神吧。

  
4. Linux系统上命令的使用格式;详细介绍ifconfig,echo,tty,startx,export,pwd,history,shutdown,poweroff,reboot,hwclock,date命令的使用,并配合相应的示例来阐述。
Linux系统的CLI使用格式
CLI模式下输入的左边为 [login_name@hostname working_directory]prompt 
解释一下 login_是登录到当前shell的用户账户
               hostname是当前主机的计算机名
               working_directory是当前所在的目录的目录名
               prompt是命令提示符,分为#和$, #为管理员的命令提示符,只有root账户才使用#提示符,除了root以外的所有账户,命令提示符都为$
       

CLI模式左边已经介绍完了,下面看看在CLI模式下输入命令有什么格式
    [root@CenOS ~]# COMMAND [OPTION]…[AGRUMENT]…
   

     COMMAND 即要输入的命令的命令名,例如ls,   

     [option]… 很多命令都是有选项的,选项的作用是使用同一个命令执行不同的操作,就需要使用不同的选项,选项分为两种,一种为短选项,使用一个"-"带上选项名,一种为长选项,短选项可以合并在一起,例如ls -l -d, 可以写成 ls -ld. 另一种为长选项,使用两个"–"在选项名前,长选项不能合并。
    注意“并不是所有的命令都是有选项的,具体需要看是什么命令,哪些命令有什么选项,可以参考man手册来学习研究
    

    [AGRUMENT]为参数,即命令要作用的对象,命令不同,参数的类型也不一样,例如ls命令的参数对象是文件或者目录,而cd命令的参数只能为目录
    
好了,linux系统上的CLI模式下的命令使用格式介绍完了。下面介绍几个命令的使用方法。

   ifconfig

   …

   …

   …

    此处未完成,待补全     

   echo: 回显命令
     $VAR:将变量的值输出到屏幕上
     -n: 不显示换行符
     -e: 使转译符生效
     -E: 使转译符失效(default是-E)
    …

    …

    …

    此处未完成,待补全    
        
   tty :显示当前terminal 连到的文件名
    -s 参数: 不显示任何内容,只返回状态值
    
    例如:使用root通过putty ssh来登录到主机执行tty命令, 显示为0号伪终端pts
    [root@dhcp-10-129-6-166 ~]# tty
    /dev/pts/0

 

   startx : 启动windows界面,用不上!!!
   
   export : 将变量传递给子shell
      ~]# export [-p|n] [$variable = word]
       不带参数或使用-p, 默认会输出所有变量信息,如果后面有变量名,只变量的信息,并将变量传递给子shell
       如果变量后面有 =word, 那么将word的值赋予前面的变量
       
       例如: 将变量A的值设置为Friday,之后显示$A的值,再将$A的值改为Monday,再次显示$A的值
       [root@dhcp-10-129-6-166 ~]# export A=Fridy
       [root@dhcp-10-129-6-166 ~]# echo $A
       Fridy
       [root@dhcp-10-129-6-166 ~]# export A=Mondy
       [root@dhcp-10-129-6-166 ~]# echo $A
       Mondy

 

   pwd: 用户显示当前的工作目录,也叫current directory,
     -L: 使用变量PWD中的值,即使包含符号链接
     -P: 避免所有符号链接
     
     例如: ls -l /bin,显示/bin为/usr/bin的符号链接,cd进/bin目录,使用pwd,显示pwd为/bin,而使用pwd -P就显示了真实的目录,即为/usr/bin
     [root@dhcp-10-129-6-166 bin]# ls -l /bin
     lrwxrwxrwx. 1 root root 7 Dec  1 21:51 /bin -> usr/bin
     [root@dhcp-10-129-6-166 bin]# cd /bin
     [root@dhcp-10-129-6-166 bin]# pwd
     /bin
     [root@dhcp-10-129-6-166 bin]# pwd -P
     /usr/bin
   
   history
     no option:显示当前用户使用过的命令
     -c: 清除用户命令使用记录
     -a: 将当前session的history中的命令记录存放到history file中
     
     例如:显示最近10行history记录,history 10,之后使用history -c清除,再使用history查看
     [root@dhcp-10-129-6-166 bin]# history 10
     114  pwd
     115  pwd -P
     116  clear
     117  history
     118  clear
     119  history -10
     120  history 10
     121  hitstory 20
     122  history 20
     123  history 10
     [root@dhcp-10-129-6-166 bin]# history -c
     [root@dhcp-10-129-6-166 bin]# history  
     1  history
  
   shutdown/poweroff /reboot:shutdown/poweroff和reboot命令放在一起说明,因为他们是同一类命令
       -H, –halt /暂停主机运行
       -P, –poweroff /关机命令,shutown的默认选项
       -r, –reboot /重启主机,
       -h /等于–poweroff, 除非使用了–halt
       -k /不执行任何操作,只是输出 wall massage
       –no-wall /在重启,关机或halt前,不输出wall massage
       -c /取消关机,重启动作

    在shutdown/poweroff/reboot命令中,我们可以在后面加上时间来定义在何时执行操作,例如 +5,5分钟后执行,也可以使用自然语言时间,例如 reboot now,表示立刻重启

    

   date /date命令用来显示当前系统日期或设置系统日期

    …

    …

    …

    此处未完出,待补全
     
    hwclock: hwclock是用来查看和设置当前系统时钟或硬件时钟的。Linux上时钟分为硬件时钟和系统时钟两种。硬件时钟是在硬件上维护的时钟,也就是BOIS里面设置的那个时钟。而系统时钟是靠Kernel来维护的,当系统开机时,系统时钟读取硬件时钟,之后系统时钟独立于硬件时钟运行。

    下面来介绍一下hwclock的简单用法:
    -r, –show /读取硬件时钟并显示出来,这个时间永远是本地时间

    -s, –hctosys /将硬件时钟同步到系统时钟,即硬件时钟写入系统时钟  

    -w, –systohc /将系统时钟同步到硬件时钟,即系统时钟写入硬件时钟
 

            
5. 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。   
 

无论是Linux新手如我,还是Linux的高手,谁都无法面面俱到,记住所有的命令,对所有的命令的使用都了如指掌,那是不可能的。所以,谁都有需要求助旁人的时候。Linux的程序设计者们都意识到这点,所以在Linux系统里面提供了非常丰富详细的说明文档,以便在使用者遇到困难时可以自行查阅。
 
Linux中获取帮助的地方有以下几处,分别简单介绍一下

man文档
man文档是在linux系统中经常需要使用的帮助信息 ,它里面包括了非常详细的帮助信息,不光有命令的,还有对于库调用的,C库调用的,配置文档的帮助信息。每一篇man文档都分为8个段落。介绍一下这8个段落
    NAME: 即当前man文档的名字

    SYNPSIS: 当前man文档的简要说明

    DISCRIPTION: 当前Man文档的说明

    OPTIONS: 命令的选项介绍

    EXAMPLE: 一些使用的例子

    AUTHOR: 作者

    BUGS: 提交发现BUG的方法

    SEE ALSO: 提供一些相关的文档链接

我们说了,man文档对于很多文件都提供了帮助信息。所以Linux也对man文档进行了一些归类,以便我们方便的查看man文档。

man文档分为了8类。

 

man1: 普通用户可以使用的命令的帮助文档

man2: 系统库调用的帮助文档

man3: C库调用的帮助文档

man4: 设备文件和特殊文件的帮助文档

man5: 配置文件的帮助文档

man6: 系统内置游戏的帮助文档

man7: 一些无法分类的帮助文档,也叫杂项

man8: 系统命令的帮助文档,只有管理员可以使用的命令

Man文档靠的是一个数据库来维护的,如果没有及时更新,那么有一些man文档是没法查到的。我们可以使用一个简单的名字来手动更新man文档的数据库。 makewhatis命令可以手动更新man文档的数据库。

简单再说一下什么是whatis命令。
  
 –help|help 一对好人
很多时候,可能我们并不需要man手册这样丰富的帮助文档,我们只是偶尔一个选项或者参数想不起如何使用了,如果每每这个时候都需要man COMMAND,那未必有点杀鸡用牛刀了,所以Linux系统中还有另外一种比较简便的方法来让我们获取命令的帮助信息。那就是 –help和help这对好人。我们都知道,Linux系统中命令分来两种,一种为shell的bulitit命令,这些命令都是集成在shell内的,可以使用help COMMAND来查看简单的帮助信息,而对于另一种命令,独立的命令,可以使用COMMAND –help来查看简单的命令帮助。
  
 info – man的补充
 最后,我们再介绍最后一种Linux帮忙信息info. info可以简单的作为man的补充,绝大部分的帮助信息我们都可以用man来完成,而info基本就会做为man的补充而存在,里面的内容比man更详细,包括每个版本的更新的内容,都在里面有说明。
 

6. 请罗列Linux发行版的基础目录名称命名法则及功能规定
 首先,我们使用ls -l / 来看看/目录下有哪些基础目录以及他们的功能都是什么
  此处以CentOS 7为例
  
[root@dhcp-10-129-6-166 ~]# ls -l /
total 32
lrwxrwxrwx. 1 root root 7 Dec  1  21:51 bin -> usr/bin
 #在CentOS7之前的版本中,/bin和/usr/bin是两个目录,里面都存放了所有用户可使用的普通命令,但是在7中,/bin成了/usr/bin的符号链接了,也难怪使用echo $PATH的时候,发现里面没有/bin和/sbin了。
dr-xr-xr-x.  4 root root 4096 Dec 1  22:09 boot
#boot目录中存放的是引导程序, kernel, grub等等都存放在/boot目录中 ,一般此目录都单独分区
drwxr-xr-x. 20 root root 3160 Dec  2  22:14 dev
#dev目录下存放的是各种设备文件,设备文件即是把硬件抽象成文件存放在这里
drwxr-xr-x. 76 root root 8192 Dec  2  22:14 etc
#etc目录里面存放着的是配置文件,全部为文本格式的文件
drwxr-xr-x. 3 root root 22 Dec  2  00:41 home
#home目录下有和所有系统上的用户同名的文件夹,即所有用户的私人家目录都在/home目录下,家目录只有用户自己才可以访问,是受法律保护的私人空间。但,root除外
lrwxrwxrwx. 1 root root 7 Dec  1  21:51 lib -> usr/lib
#和/bin一样,在centOS7之前,/lib和/usr/lib是单独两个文件夹,也是在CentOS7中lib作为/usr/lib的符号链接存在了,这样做的目的不知道是不是为了简化目录结构,但是这样一样/usr就不能单独分区了,/lib中存放的是动态库文件,即share object
lrwxrwxrwx. 1 root root 9 Dec  1  21:51 lib64 -> usr/lib64
#同/lib,不过这里面放的是64位的SO
drwxr-xr-x. 2 root root 6 Aug  12 2015  media
#media挂载的是可移除的媒体设备(例如U盘和CO-ROM)
drwxr-xr-x. 2 root root 6 Aug  12 2015  mnt
#mnt是临时挂载目录,用于我们临时挂载其他的文件系统时,可以挂载到此目录下
drwxr-xr-x. 2 root root 6 Aug  12 2015  opt
#opt的全称是optional,即可选的,一些不是系统必须的软件包都可以安装到此目录下
dr-xr-xr-x. 352 root root 0 Dec  2  22:14 proc
#proc的全称是processing,这是一个伪文件系统,它并不是一个真正的文件目录,它把当前系统上运行的进程都抽象成了文本文件,我们可以通过这个目录来查看当前系统上运行的进程,所以这个目录并不真正存在于硬盘上,而且是内存中。在linux中, /proc对应的是procfs格式挂载
dr-xr-x—.  5 root root 4096 Dec  2  00:49 root
#root目录是管理员root的家目录
drwxr-xr-x. 21 root root 620 Dec 2  22:14 run
#run用于替代/var/run目录。/var/run记录自最后一次启动以来运行中的系统信息,包括当前登录的用户和运行中的守护进程等。
lrwxrwxrwx. 1 root root 8 Dec  1  21:51 sbin -> usr/sbin
#/sbin和/usr/sbin里面存放的是管理员可以使用的管理命令
drwxr-xr-x. 2 root root 6 Aug  12 2015  srv
#某些服务启动后,需要访问的一些数据,都存放在这个目录下
dr-xr-xr-x.  13 root root 0 Dec  2  22:14 sys
#在kernel2.6之后,将procfs中的大量非进程相关的系统信息移到了一个专门的伪文件系统中,即sysfs, sysfs即挂载到/sys目录下,也就是说,可以这样简单理解,此目录是从/proc中生成出来
drwxrwxrwt. 7 root root 4096 Dec  2  22:14 tmp
#顾名思义,tmp里面存放的是临时文件
drwxr-xr-x. 13 root root 4096 Dec  1  21:51 usr
#usr的全称是Unix Share Resource,即Unix共享资源,用于存放只读的用户数据的第二层次
drwxr-xr-x. 19 root root 4096 Dec  2  22:14 var
#var的全称是variable, 即可变的文件都存放在这里,例如,日志文件和用户的mailbox等等,有些时候,/var会是单独的一个分区

 

原创文章,作者:JL,如若转载,请注明出处:http://www.178linux.com/61176