第一周博客作业-N31-初识Linux

本篇文章主要围绕计算机的组成及其功能以及Linux的基础命令、目录等进行相关阐述

1、计算机的组成及其功能

计算机,通俗简易的来说,称为电脑,在大多数人眼中,电脑的功能是办公,休闲、娱乐。而有那么一群人不仅仅满足于使用它们,更深入的去研究它们,从而衍生了一类人,IT工作者。

计算机,其组成主要由硬件(hardware)和软件(software)两部分组成。其中,硬件主要由CPU(运算器和控制器)、存储器、输入设备(Input)、输出设备(Output)几大部分组成,软件则由内核(Kernel)和应用(Application)两大部分组成。

  1. CPU用于接收外来指令并解析。
  2. 存储器用于存储各类信息。
  3. 输入设备,顾名思义,输入信息的设备,如键盘。
  4. 输出设备,顾名思义,输出信息的设备,如显示器。
  5. 内核,由于CPU只能处理二进制信息,故有一群大牛研发出一套工具将人们通过输入设备输入的信息自动转换成CPU可以解读的二进制数据。
  6. 应用,最终人们可以用来处理事务的软件。

2、Linux的发行版

Linux主要有三大主流发行版:Debian、Slackware、RedHat,而其中Debian之后又衍生出两个主流版本Ubuntu、Knopix,Slackware衍生出S.u.S.E后又衍生出OpenSUSE,RedHat则衍生出Fedora、CentOS两个主流版本,除此之外还有Gentoo、Archlinux等等上百种LInux的发行版,而这些发行版之间有联系却也有不同之处。以下盗了两站图对以上内容进行阐述。

linux发行版图集linux发行版之间的联系和区别

3、Linux的哲学思想

每件事物都可以上升到一个哲学境界,Linux自然也有它的哲学思想。

1、一切皆文件,把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;其实这样相当于把复杂的事情简单化,更易于操作,漏洞更少。

2、由众多功能单一的程序组成;一个程序只做一件事,并且做好;组合小程序完成复杂任务;这个道理就和做事情一样,将一件事情分成若干个步骤来完成,这样每个步骤都能相对简单轻松,出错更少,更好的完成,直到最后完成整件事情。磨刀不误砍柴工,就是这么个道理。

3、尽量避免跟用户交互;目标:易于以编程的方式实现自动化任务;用户就是上帝,很多的用户业务能力很强,但是计算机专业能力却很差,如果不能将复杂的代码转换成简洁易懂的程序,那么这个产品就是失败的。

4、使用文本文件保存配置信息;说实话,我不知道这个算啥哲学思想,合理的利用资源达到最好的效果,嗯,大概是这么个意思。

4、Linux系统命令

命令的通用格式为 # COMMAND OPTION ARGUMENTS(以下内容为摘抄)

COMMAND:
发起一命令:请求内核将某个二进制程序运行为一个进程;
程序 –> 进程
静态 –> 动态(有生命周期)

命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/bin
管理命令:/sbin, /usr/sbin, /usr/local/sbin
共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
32bits的库:/lib, /usr/lib, /usr/local/lib
64bits的库:/lib64, /usr/lib64, /usr/local/lib64

注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件

命令必须遵循特定格式规范:exe, msi, ELF(Linux)
~]# file /bin/ls

命令分为两类:
由shell程序的自带的命令:内置命令(builtin)
独立的可执行程序文件,文件名即命令名:外部命令

shell程序是独特的程序,负责解析用户提供的命令;
环境变量:
PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件;
~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

查找次序:自左而右;

查看命令类型:
type COMMAND

OPTIONS:
指定命令的运行特性;

选项有两种表现形式:
短选项:-C, 例如-l, -d
注意:有些命令的选项没有-;
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项:–word, 例如–help, –human-readable
注意:长选项不能合并;

注意:有些选项可以带参数,此称为选项参数;

ARGUMENTS:
命令的作用对象;命令对什么生效;

注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;

例如:ls -ld /var /etc(摘抄完毕)

下面将详解阐述本人对一些命令的理解

  •     ifconfig

此命令为必记(不得不记、想忘也忘不掉)命令,查询配置当前计算机的网络配置。

ifconfig

如上图所示,该计算机网络地址(IPADDR)为192.169.10.20,子网掩码(NETMASK)为255.255.255.0。

  •     echo

回显命令,显示输入内容的结果,如输入“echo $SHELL”返回的为/bin/bash,输入“echo  “hello everyone” ”,实例如下图所示。

echo

 

  •     tty

显示连接标准输入的终端的文件名,如在SecureCRT上输入“tty”,得到的结果为“/dev/pts/2”,在虚拟机上输入“tty”,得到的结果为“/dev/pts/1”,实例如下图所示。

tty1tty2

  • startx

初始化一个X会话

  • export

所提供的名称被标记为自动导出到随后执行的命令的环境中。

  • pwd(print working derictory)

显示工作目录

  • history

可查询当前用户下使用过的命令历史

bash的基础特性之一:

命令历史:shell进程会其会话中保存此前用户提交执行过的命令;
~]# history
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
.bash_history
HISTFILESIZE:命令历史文件的大小;

命令用法:
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 参数 [参数…]

-c: 清空命令历史;
-d offset:删除指定命令历史
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
history #:显示最近的#条命令;

调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令;
!!:再一次执行上一条命令;
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

注意:命令的重复执行有时候需要依赖于幂等性;

调用上一条命令的最后一个参数:
快捷键:ESC, .
字符串:!$

控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令;
ignorespace:忽略以空白字符开头的命令;
ignoreboth:以上两者同时生效;

修改变量的值:
NAME=’VALUE’

  • shutdown

关机操作,可结合相关参数进行定时关机,关机通知等操作

  • poweroff

关机操作,可结合相关参数进行定时关机,关机通知等操作

  • reboot

重启功能,可结合相关参数进行定时重启,重启通知等操作

  • hwclock

hwclock, clock:硬件时钟
显示或设定硬件时钟
-s, –hctosys:以硬件为准,把系统调整为与硬件时间相同;
-w, –systohc:以系统为准,把硬件时间调整为与系统时钟相同;

  • date

date:系统时钟
显示日期时间:date [OPTION]… [+FORMAT]
FORMAT:格式符
%F
%T
%Y
%m
%d
%H
%M
%S
%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;

设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]

 

5、如何在Linux系统上获取命令的帮助信息

获取命令的使用帮助:
内部命令:
help COMMAND
外部命令:
(1) 命令自带简要格式的使用帮助
# COMMAND –help
(2) 使用手册:manual
位置:/usr/share/man
# man COMMAND

SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:使用示例
AUTHOR: 作者
BUGS: 报告程序bug的方式
SEE ALSO: 参考

SYNOPSIS:
[]:可选内容;
<>:必须提供的内容;
a|b|c:多选一;
…:同类内容可出现多个;

使用手册:压缩格式的文件,有章节之分;
/usr/share/man
man1, man2, …

1:用户命令;
2:系统调用;
3:C库调用;
4:设备文件及特殊文件;
5:文件格式;(配置文件格式)
6:游戏使用帮助;
7:杂项;
8:管理工具及守护进行;

~]# man CHAPTER COMMAND

注意:并非每个COMMAND在所有章节下都有手册;
查看:
~]# whatis COMMAND

注意:其执行过程是查询数据库进行的;
手动更新数据库:
~]# makewhatis

man命令打开手册以后的操作方法:
翻屏:
空格键:向文件尾翻一屏;
b: 向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
回车键:向文件尾部翻一行;
k: 向文件首部翻一行;
G:跳转至最后一行;
#G: 跳转至指定行;
1G:跳转至文件首部;

文本搜索:
/keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
?keyword:从文件尾部向文件首部依次查找;
n: 与查找命令方向相同;
N: 与查找命令方向相反;

退出:
q: quit

选项:
-M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之;

练习:获取useradd命令的用法
(1) 添加用户gentoo;
# useradd gentoo
# id gentoo
(2) 添加用户slackware,要求指定其所用的shell为/bin/tcsh;
# useradd -s /bin/tcsh slackware
# tail -1 /etc/passwd

(3) info COMMAND
获取命令的在线文档;

(4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
README:程序的相关的信息;
INSTALL: 安装帮助;
CHANGES:版本迭代时的改动信息;

(5) 主流发行版官方文档
http://www.redhat.com/doc

(6) 程序官方的文档:
官方站点上的“Document”

(7) 搜索引擎
google

keyword filetype:pdf
keyword site:domain.tld

书籍的出版社:
O’Reiley
Wrox
机械工业、电子工业、人邮、清华大学、水利水电

6、罗列Linux发行版的基础目录名称命名法则及功用规定

Linux文件系统:

Linux:glibc

程序编译方式:
动态链接
静态编译

进程的类型:
终端:硬件设备,关联一个用户接口

与终端相关:通过终端启动
与终端无关:操作引导启动过程当中自动启动

操作系统的组成:
静态:kernel, application

文件系统:层级结构

FHS:
Filesystem Hierarchy Standard
/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库;
ld*:运行时链接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录;
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots

/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;

参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/

Linux系统上的文件类型:
-:常规文件;即f;
d: directory,目录文件;
b: block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备文件,支持以“character”为单位进行线性访问
major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
minor number:次设备号,用于标识同一类型中的不同的设备;
8位二进制:0-255
l:symbolic link,符号链接文件;
p: pipe,命名管道;
s: socket,套接字文件;

 

以上基础知识由于时间关系全部摘抄于马哥笔记,有时间会再次整理

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102670

(2)
孙
上一篇 2018-07-11
下一篇 2018-07-12

相关推荐

评论列表(3条)

  • 忽然之间
    忽然之间 2018-07-13 15:41

    很好很详细,还通俗易懂,继续加油哦

  • 马哥教育
    马哥教育 2018-09-19 09:21

    总结的还是比较详细的,需要注意的是第1个题:计算机的组成部分按5部分来描述。继续加油。