计算机组成

硬件

主机

CPU

(1)主频:代表CPU处理速度,单位Hz;
(2)外频:代表系统总线的工作频率,CPU与外部(系统芯片组)交换指令、数据的工作时钟频率;
(3)倍频:CPU主频 与 外频 相差的倍数;主频=倍频 x 外频;
(4)高速缓存(cache):CPU缓存分为三级,为L1,L2,L3;
(5)内存总线速度(Memory-Bus Speed):一般等同于CPU的外频,指CPU与L2缓存和内存之间的通信速度;
(6)地址总线宽度:决定了CPU可以访问的物理地址空间;
lscpu:显示CPU的指标信息

内存(RAM、ROM)

(1)内存断电后数据丢失,外存不会丢失;
(2)内存带宽:即 内存 与 北桥芯片 之间的数据传输率;
(3)内存带宽 = 内存总线频率 X 数据总线数/8 ( X 2 若为DDR内存) (单通道内存总线频率一般都是64-bit)

外部设备

外部存储设备

硬盘
(1)转速:硬盘盘片每分钟转动的圈数,单位为rpm;
(2)传输速率 Data Transfer Rate:指硬盘读写数据的速度,单位为MB/s;
(3)缓存:为了解决系统前后级读写速度不匹配的问题,以提高硬盘的读写速度;
(4)接口类型:
        IDE接口 :硬盘接口规范,采用ATA技术规范;
        SCSI接口:应用于小型机上的高速数据传输技术;
        SATA接口:Serial ATA,提高传输速率,支持热拔插;
        SAS接口 :Serial Attached SCSI,兼容SATA;
(5)种类:SATA、SAS、SSD
        SSD(Solid State Disk) 采用NAND Flash组成的固态硬盘,无机械结构,以区块写入和抹除的方式读写
(6)参数:尺寸、容量、转速、接口速度、平均无故障时间MTBF、是否支持热拔插Hot Swap
存储网络
(1)DAS(Direct Attached Storage) 直接连接存储  
        大致可以理解为本地机器上的磁盘,存储设备与主机紧密相联
(2)NAS(Network Attached Storage) 网络连接存储 
        用户有使用权但无管理权,磁盘不在本地;通过局域网实现多个文件服务器互联,基于NFS、SMB/CIFS协议
(3)SAN(Storage Area Networks) 存储区域网络
        用户有使用和管理权,磁盘不在本地,利用高速光纤连接,基于SCSI,IP,ATM等多种高级协议
输入/出设备 ……

软件

系统软件

操作系统Operating System

【开发接口标准】    
ABI(Application Binary Interface)         :描述应用程序 与 OS 之间的底层接口;    
API(Application Programming Interface)    :定义源代码 和 库 之间的接口;    
POSIX(Portable Operating System Interface):IEEE在操作系统上定义的一系列API标准;

数据库管理系统…

应用软件…

服务器分类

  • 用途:Web服务器、日志服务器、文件服务器、邮件服务器、代码服务器、数据库服务器、中间件服务器等

  • 外形:塔式Tower、机架式Rack、刀片式Blade

开源Open Source

常用的开源许可证大概如下: p_w_picpath

wKiom1eV23qQNPgxAAOWA3XLy68186.png

Linux哲学思想

(1)一切都是一个文件 (包括硬件)
(2)小型,单一用途的程序
(3)链接程序,共同完成复杂的任务
(4)避免令人困惑的用户界面
(5)配置数据存储在文本中

Linux 文件系统

Linux系统 分为 目录 和 文件,成倒树状结构。

Linux 目录

/boot   :系统启动相关的文件,如 内核、initrd/initramfs,以及grub(bootloader引导器)
/dev    :硬件设备文件(没有大小,ls出现的数字用逗号隔开,分别是主次设备号)
    /dev/hd*    :IDE(最多接四块硬盘)
    /dev/hdc    :IDE(光盘)
    /dev/sd*    :SCSI/SATA/SAS/usb 设备文件
    /dev/console:物理终端 文件路径,直接接入本机的显示器和键盘设备
    /dev/tty*   :虚拟终端 设备文件路径,附加在物理终端之上的以软件方式虚拟实现的终端
    /dev/pts/*  :模拟终端的设备文件,即图形界面打开的命令行及基于SSH或telnet协议等远程打开的界面
/etc    :配置文件
    /etc/redhat-release:CentOS版本信息(链接文件,指向/etc/centos-release)
    /etc/centos-release:CentOS版本信息
    /etc/shells:当前系统使用的所有shell
    /etc/DIR_COLORS:定义颜色的配置文件
/home   :用户的家目录,通常默认为/home/USERNAME/root   :管理员的家目录
/lib64  :程序库
/lib    :库文件( 静态库.a, 动态库.dll, .so(shared object) )和内核模块文件
    /lib/modules:内核模块文件/media  :挂载点目录,主要针对移动设备
/mnt    :多用于挂载额外的临时文件系统
/misc   :杂项
/opt    :可选目录,第三方程序的安装目录(但目前已通常放在/usr/local)
/proc   :伪文件系统,存放内核映射文件,内核各种属性及运行数据(调优目录),即内存数据
         (不在硬盘上,不占用磁盘空间)
    /proc/meminfo   :内存使用情况
    /proc/partitions:分区信息
/sys    :伪文件系统,跟硬件设备相关的属性映射文件,实现硬件管理,跟内核相关(调优目录)
         (如修改磁盘IO调度队列)
/tmp    :临时文件
/var    :可变换的文件(即可变数据)
/bin    :可执行文件,存放用户命令(多与系统启动有关,给普通用户用)
/sbin   :可执行文件,存放管理命令(多与系统启动有关,给管理员使用)
/usr    :shared, read-only 类似于微软的 Program Files
    /usr/bin    :(多与系统启动后,提供基本功能有关)
    /usr/sbin   :(多与系统启动后,提供基本功能有关)
    /usr/lib    :(多与系统启动后,提供基本功能有关)
    /usr/local  :   跟第三方软件有关,非系统关键性程序
        /usr/local/bin
        /usr/local/sbin
        /usr/local/lib
    /usr/share/man  : 存方帮助文档压缩包
    /usr/share/doc  : 本地帮助文档

用户

root uid=0(仅0表示系统管理员用户,其他均为普通用户)

id -u:查看当前用户的id号 id -u liang:查看liang帐号的id值(6是从500开始编号,7是从1000开始编号)

terminal 终端

单用户模式

物理终端:直接接入本机的显示器和键盘设备(/dev/console)

模拟终端

模拟终端 ,即图形界面打开的命令行及基于SSH协议或telnet协议等远程打开的界面ls /dev/pts/*

虚拟终端

echo $SHELL :查看当前shell类型
echo $PS1:查看命令提示符格式,默认为:[\u@\h \w]\$
PS1=GGG:重新定义提示符格式,临时有效;若要永久修改,则需修改配置文件

cat /etc/shells:系统支持的shell类型(/sbin/nologin会导致用户无法登录,多用于系统用户,
                                    无需登录来启用某些服务)
getent passwd liang:显示用户liang的passwd信息

命令

命令执行顺序


别名--> 内部命令 --> 缓存 --> 外部命令

(1)若缓存已加载,但命令位置已改变,命令解析器会根据缓存记录去原位置执行,导致报错而不是继续查找;
(2)若存在同名的命令,一定要执行后者,则可指定路径执行具体命令;
(3)若命令放到了当前目录(如 cp /usr/bin/yes y,将命令改名并复制到root用户的当前文件夹下),
     依旧无法执行,因为命令加载不包含当前文件夹;
ctrl + c    :取消终端命令执行  
ctrl + d    : 结束终端命令执行  
hash        :查看已经加载如内存的外部命令(hits:命中率)
hash -d 命令:清除缓存中加载的指定命令
hash -r     :清楚以缓存的所有命令
echo $PATH  :查看命令程序所在的文件夹;(若存在命令同名但在不同的文件里的情况下,会执行最先找到的)

命令行历史

* 用户登录shell时,会读取命令历史文件(~/.bash_history)记录下的命令
* 登录之后执行的命令只会记录在缓存中,当用户退出时“追加”至命令历史文件中

命令类型

type 命令:查看命令为内部命令还是外部命令,及外部命令的文件位置

内部命令

操作系统自带,机器启动时即加载入内存,不表现为文件(实际也有相应文件)

help   命令 :获取内部命令的帮助enable -n cd:暂时禁用内部命令cd;enable cd   :启用内部命令cd;

外部命令

对应硬盘上的独立文件,仅当用户使用命令时,才加载入内存进行执行

which 外部命令:只能查外部命令的文件位置;
命令名 --help :获取外部命令的帮助(适用于大多数,非全部)

命令别名

alias   cp=‘cp -i’  :定义别名
unalias ls          :取消别名

若一定要使用原始命令而非别名,可以使用完整路径(/usr/bin/ls)、使用反斜线(\ls)、使用单引号(‘ls’)

命令格式

COMMAND [ OPTIONS… ] [ arguments… ]<必选>,[可选],...可出现多次,| 多选一,{}分组

(1)取消和结束命令执行:ctrl+c,ctrl+d (2)多个命令可以用;分开 (3)一个命令可以用 \ 分为多行,注意不要忘了加入空格

大括号作用

touch     file{1,2,3,4,5}.txt
rm    -f  file{1,2,3,4,5}
touch     f{1,2,3}.{paf,log}:笛卡尔积

时间/日期命令

date 显示/修改系统时间

date -u:显示当前格林尼治时间date MMDDhhmiyyyy.ss:设置系统日期date +%F

clock 显示硬件时间

clock -w,- -systohc:以系统时间稳准,调整硬件时间
clock -s,- -hctosys:以硬件时间为准,调整系统时间

cal 显示当月日历

cal 2016    :查看指定年度的日历
cal 9 1752  :查看指定年度(1752年)月度(9月)的日历

回显 echo

echo -n "aaa bbb ccc"   :打印后不换行(-n)
echo "echo $USER"       :变量引用
echo 'echo $USER'       :字符串引用
echo `echo $USER`       :反引号为命令引用,先执行反引号 `` 内的命令,将结果给外层的命令使用
echo $(echo $USER)      :$()效果等同于反向单引号,先执行$()内的命令,将结果给外层的命令使用
echo -e “aaa\c”         :\c在-e的参数配合下,表示压缩掉回车换行
echo -e “aaa\a”         :\a在-e的参数配合下,表示执行命令时发出声音
echo -e "$USER\bdef"    :\b为退格,可用于删除字符,结果为(roodef)
echo -e "$USER\n"       :\n为换行
echo -e '\0101'         :\0后跟8进制数据,可以用于打印特殊字符等
echo -e "\033[43;31mred\033[0m":43表示×××背景,31表示红色字体,\033[表示开始,\033[0m表示结束;
cat /etc/DIR_COLORS     :定义颜色的配置文件

共同协作 screen

screen -S [ sessionName ]            :打开新的screen
screen -x [ sessionName / sessionID ]:加入会话
exit                                 :退出并关闭screen
ctrl+a,d                            :剥离当前screen
screen -ls                           :显示所有已经打开的screen
screen -r [ sessionName / sessionID ]:恢复某screen

获得命令使用帮助

使用方法

type    命令        :查看命令是内部命令/外部命令
whatis  命令        :显示命令摘要及出现章节号,该命令依赖于数据库,系统初装通常没有,
                     可用makewhatis(v6)或mandb(v7)来生成数据库,效果与 man -f rm 作用相同
help    内部命令    :查看内置命令的相关帮助
外部命令 --help     :查看外部命令的帮助(适用于大多数,非全部)
man [章节号] 命令名 :查看命令手册(几乎所有命令都带有命令手册manual,但多用于外部命令)
                    (/usr/share/man 存放帮助文档)
info    命令        :查看在线文档

命令手册说明

章节号说明

1. 用户命令(/bin, /usr/bin, /usr/local/bin)
2. 系统调用
3. 库调用
4. 特殊文件(设备文件)
5. 文件格式(解释配置文件的语法,如 man 5 passwd)
6. 游戏
7. 杂项(Miscellaneous)
8. 管理命令(/sbin, /usr/sbin, /usr/local/sbin)(只有管理员能用,会修改系统或硬件参数)

章节段落说明:

1. NAME         : 命令名称及功能简要说明
2. SYNOPSIS     :用法说明纲要,包括可用的选项
3. DESCRIPTION  :命令功能的相近说明,可能包括每一个选项的意义
4. OPTIONS      :说明每一个选项的意义
5. FILES        :此命令相关的配置文件
6. BUGS
7. Examples     :使用示例
8. SEE ALSO     :另外参照
9. NOTES        :注意事项
10.COLOPHON     :版本信息

翻屏快捷键:

向后翻一屏  :space
向前翻一屏  :b
向后翻一行  :enter
向前翻一行  :k

查找:

/KEYWORD:向后搜索
?KEYWORD:向前搜索
n       :下一个
N       :前一个
退出    :q

其他帮助

  • 本地帮助文档 /usr/share/doc/

  • 官网在线文档

  • Red Hat documentation

  • 其他网站和搜索

命令小结

who             :查看所有登陆用户、登录终端、登录时间
whoami          :查看当前登录用户名称
who am i        :查看当前登录用户名称、登录终端、登录时间
tty             :查看当前的终端设备
poweroff        :系统断电关机
halt            :系统退出,不断电
halt -p         :退出并断电
lsb_release -a  :查看系统版本 (lsb = Linux standard basic)
hostname        :显示完整的主机名
uname -r        :看内核版本 
free            :看内存 
df              :查看分区利用率、挂载关系 
ifconfig        :查看当前网络联通情况 
lscpu           :查看cpu信息  
echo ${SHELL}   :显示当前使用的shell  
echo $PS1}      :显示提示符格式(管理员#,普通用户$) cp source target:拷贝  
which 外部命令  :只能查外部命令的文件位置 
whereis 命令    :列出命令的文件位置 及 帮助文档位置 
命令 --help     :查看命令帮助   
reset           :重置  
startx          :在直接使用服务器的命令行模式(如ctrl+alt+f5)时,启用界面 
chvt 2          :切换至字符图形2窗口(change virtual terminal)
                 (图形界面下,若为普通用户登录,则不能通过该命令切换)(不支持远程切换)  
init 3          :在图形终端界面的terminal中输入后,会进入字符终端,常与init 5配合使用
init 5          :在字符终端输入后,会进入图形终端界面,常与init 3配合使用 
convert e: /fs:ntfs 将FAT分区转换为NTFS分区,不可逆(WINDOWS命令)

作业

(1)使用echo 打印倒三角形,闪烁,下划线,颜色
(1)方式一:(\033的效果等同于\e)
    (下述命令在命令终端v7时失效,但在界面终端执行有效,在其他机器上的命令终端v7也有效)    
    echo -e "\033[0;33;1;4;5m*****\n\e[0m \e[0;33;1;4;5m***\n\e[0m  \e[0;33;1;4;5m*\033[0m"
    
(2)方式二:(未成功!无法闪烁,尚不知原因;本来意图是先循环拼好字符串,之后一次性打印出来,
            但字符串的拼接尝试暂未成功!)
        #!/bin/bash
        maxLine=7
        for ((line=1; line<=$maxLine; line++))
        do
	    for ((space=1;space<line;space++))	
	    do
		echo -n " "
	    done
	    echo -ne "\033[0;33;4;5m"
	    for ((star=1;star<=(2*($maxLine-line)+1);star++))	
	    do	
		echo -n "*"
	    done
	    echo -e "\033[0m"
	done
(2)进行screen实验
    【实验目的】: 测试并验证screen命令的使用
    【实验步骤】:
  1. 启动 4个 远程终端,均使用root连接,其中终端1~3均各自发起screen_1, screen_2, screen_3;

    p_w_picpathwKioL1eV3iWTEa_KAAAPcJ0ugGM435.png

  2. 终端4 查看 当前screen状态;

    p_w_picpathwKioL1eV3j2A5dGkAAAPl2RbGk0183.png

  3. 终端4 加入screen_1 进行 lscpu 操作,终端1 可看到 终端4 的操作;

    p_w_picpathwKioL1eV3lPi3sE6AABKgrnzCf0162.png

  4. 终端1、2、4 分别 查看当前screen状态;

    p_w_picpathwKiom1eV3miyy2VUAAAPl2RbGk0521.png

  5. 终端4 离开 screen_1,查看当前screen状态后,加入 screen_2;

    p_w_picpathwKiom1eV3nry4S6iAAAlgwrf8fA133.png

  6. 终端4、终端2 均离开 screen_2,终端4 查看当前screen状态,恢复 screen_2;

    p_w_picpathwKioL1eV3pTgXBI5AAAj21A4BsM111.png

  7. 终端4、终端2 在 加入 screen_2 后,在其中继续加入 screen_3,并进行df操作,终端2、3、4均能看到;

    p_w_picpathwKioL1eV3rHA5r9MAAA8j2IvRyI832.png

  8. 终端3 或 终端2 或 终端4 结束 screen_3,终端4 查看当前screen状态,终端2 和 终端4 退回到 screen_2;

    p_w_picpathwKiom1eV3s3hzOrjAAAYmXNK1eg146.png

    【实验结论】
    (1)screen 可以嵌套使用,嵌套路径中的所有终端 都可以看到最后加入嵌套链的screen的所有操作;
    (2)嵌套链中的所有终端都相当于加入了最后一个screen,在任何一个终端exit,
         都将退至倒数第二个screen;
    (3)screen 只有在没有任何连接时,才可用screen -r screenName来恢复,
         否则均只能用screen -x screenName重新加入;

    (3)显示前十天的年月日、显示后二十天的年月日

(1) 脚本一:echoDate.sh

start=-10end=20while [ $start -le $end ]do 
	date -d "$start days" +"%C%y-%m-%d"
	start=$[$start+1]
done

(2) 脚本二:testDate.sh
for loop in -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
	if [ $loop -lt 0 ]
	then 
		echo -en `expr 0 - $loop ` "days ago: "
	elif [ $loop -eq 0 ]
	then 
		echo -en "today\t: "
	else 
		echo -n "$loop days later: " 
	fi
	date -d "$loop days" +"%C%y-%m-%d"
done
(4)编写脚本,录入学员生日,并在其生日前三天发出提醒
    待完成!(脚本暂不会,思路:当前日期+3在生日名单文件中存在,即向该学员发出邮件或信息提醒)