计算机组成
硬件
主机
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
常用的开源许可证大概如下:
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}.txtrm -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 ] :打开新的screenscreen -x [ sessionName / sessionID ]:加入会话exit :退出并关闭screenctrl+a,d :剥离当前screenscreen -ls :显示所有已经打开的screenscreen -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. BUGS7. 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
(2)进行screen实验 【实验目的】: 测试并验证screen命令的使用 【实验步骤】:
启动 4个 远程终端,均使用root连接,其中终端1~3均各自发起screen_1, screen_2, screen_3;
终端4 查看 当前screen状态;
终端4 加入screen_1 进行 lscpu 操作,终端1 可看到 终端4 的操作;
终端1、2、4 分别 查看当前screen状态;
终端4 离开 screen_1,查看当前screen状态后,加入 screen_2;
终端4、终端2 均离开 screen_2,终端4 查看当前screen状态,恢复 screen_2;
终端4、终端2 在 加入 screen_2 后,在其中继续加入 screen_3,并进行df操作,终端2、3、4均能看到;
终端3 或 终端2 或 终端4 结束 screen_3,终端4 查看当前screen状态,终端2 和 终端4 退回到 screen_2;
【实验结论】(1)screen 可以嵌套使用,嵌套路径中的所有终端 都可以看到最后加入嵌套链的screen的所有操作;(2)嵌套链中的所有终端都相当于加入了最后一个screen,在任何一个终端exit, 都将退至倒数第二个screen;(3)screen 只有在没有任何连接时,才可用screen -r screenName来恢复, 否则均只能用screen -x screenName重新加入;
(3)显示前十天的年月日、显示后二十天的年月日
(1) 脚本一:echoDate.shstart=-10end=20while [ $start -le $end ]do date -d "$start days" +"%C%y-%m-%d" start=$[$start+1]done(2) 脚本二:testDate.shfor 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 20do 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在生日名单文件中存在,即向该学员发出邮件或信息提醒)