1、描述计算机的组成及功能。
运维的岗位围绕在计算机上,所以了解计算机是我们基本的能力:例如利用计算机提供的接口写程序,对构建在Linux系统上的应用程序的应用。
冯·诺伊曼提出其体系后,所有计算机都采用相同体系。美国宾西法尼亚大学的第一台计算机ENIARC,也不例外。
冯·诺依曼体系:计算机由五大部分组成
- CPU:运算器、控制器、寄存器、缓存,
- 核心:运算器和控制器
- 运算器:完成算术运算、逻辑运算。
- 控制器:各部件的协调。
- 指令集:CPU支持的指令的集合。分为特权指令和非特权指令。
- 特权指令:内核运行。也被称为“环0指令”
- 非特权指令:用户空间中程序运行。也被称为“环3指令”
- 寄存器、缓存:提高CPU性能。
- 寄存器:指令指针寄存器、数值寄存器。
- 指令指针寄存器:指向下一个指令的位置。
- 数值寄存器:内存中加载的数据暂存的位置。
- 缓存:CPU比内存快提供缓存。缓存大:CPU工艺要求高及体积不变,所以价格高。
- 频率:单位时间内所做的操作。例如:1GHz相当于1s做10亿次操作。
- 字长:数据的存取能力。例如:32bits的cpu一次存取32位二进制数据。
- 主储:RAM(Random Access Memory)随机访问存储,只有不断地往内存中填充电荷才能存储数据,断电后数据消失。
- RAM由多个大小相同的cell组成
- 每个cell是8bits,也叫“最小存储单元”。
- 编址的存储单元,只支持平面编址,例如:从左向右,从上向下对每个cell编号;
- 为什么32bits的系统最大只能支持4G内存?也就是你安装内存条只能安装4G,多了不识别。
- 32bits的CPU只能安装32bits的系统,64bits的CPU可安装32bits或64bits系统。(我们所用的CPU是Intel生产的,也就是80年代出现的PC兼容机)
- 32bits的CPU相当于CPU前有32根线。
- 每根线只有两种状态:通电、断电。通电表示1,断电表示0;
- 一种状态可以对应一个cell(相当于8bits),所以1根线就有2种状态(2^1)。
- 32根线通过排列组合的方式:2^32种变化,即2^32bits=2^2 * 2^10 * 2^10 * 2^10bits=4Gb。(CPU是二进制换算:1KiB=2^10bits,1MiB=2^10KiB,1GiB=2^10MiB,注意MiB相当于mb,KiB相当于kb,GiB相当于gb)
- IO设备:输入设备、输出设备
- 输入设备:输入指令、提供数据;
- 输出设备:输出数据加工后的结果;
冯·诺伊曼 还提出程序是由指令加数据组成
- 指令:二进制指令
- 数据:二进制数据
我们都应该知道
- 程序本身在磁盘中,即指令和数据在磁盘中。
- 当前CPU需要运行程序时,就需要将程序先加载至内存中,即指令和数据在内存中。
- 由CPU加载指令并运行指令,此为取指的过程。
- 其运行过程中需要加载数据时,例如1+2=3,1为数据,2为数据,3为加工后的结果;先将1从内存的某个cell中加载至数值寄存器中(数据没有加载完需要缓存),再加载后一个数据至寄存器中。指令加工数据得到3,将其存回内存中。
- 运行结果后,从指令指针寄存器中得到下一条指令所在内存中的哪个cell的位置,加载至内存中运行。
以上的计算机只能跑单个程序,因为CPU是一个,内存是一个,程序会独占。如果多个程序运行就存在,你使用CPU还是我使用?内存中的数据覆盖。等问题;
- 1964年由MIT, GE, Bell成立一个项目叫Multic;(为了解决一个问题:让计算机可以运行多个程序)
- Multics是一个监控程序,功能:独占内存中一段空间,将剩余空间切割成几个独立的空间即“空间复用”,并将CPU的计算能力切割成相等的时间片,即“时序复用”。
- 1969年Bell实验室Ken在PDP-7主机上研发出Unix;
- 1974年Ken和同事Dennis(C研发者)在《美国计算机通信》杂志上联合发表Unix;
- 1975年Bill Joy成立BSRG小组,在Unix主机上研发TCP/IP协议栈,DARPA给他们的项目。并整合一些程序,命名为BSD(Berkeley System Distribution),BSD主机上实现了TCP/IP。
- 1985年Ritchard Stallman成立GNU组织,宣言是GPL。
- 1991年Linus Torvalds成立Linux项目。
计算机操作系统是GNU/Linux源码,功能:驱动底层硬件、文件系统、网络、安全加密、内存管理、进程管理。
2、按系列罗列Linux的发行版,并描述不同发行版本之间的联系与区别。
- GNU/Linux源码:需要编译成二进制程序方可运行。对于普通用户来讲是困难的。
- 发行版:一些世俗的入流的看到将GNU/Linux源码编译成可执行二进制程序的商机的组织将GNU/Linux源码编译成可在机器上直接运行的二进制程序,有组织比较恋旧、有的比较追求新颖、有的喜欢不同的标识,再加上一些对系统的独有的理解。将Linux程序和GNU程序和这些自己的理解拼凑在一起组成了发行版;
- 发行版都是Linux内核,与不同版本的程序拼凑在一起,组成了不同的发行版本;所以发行版本与程序版本无关。
三大主流的发行版
- RedHat:美国卡罗兰那洲,9.0后将桌面版本捐给Fedora社区并维护为Fedora Core。成立RedHat Enterprise Linux。
- CentOS: 红帽的二次发行版本,是根据红帽开放源代码规定释出的版本;
- Debian:是一个爱妻狂魔命名(他名字和他妻子名字缩写组合)。至今没有任何一个商业组织维护,黑客级玩家使用,限制更少。
- Ubuntu:以桌面应用为主
- Kbuntu:基于Ubuntu的二次发行版;
- Mint:基于Ubuntu的二次发行版;
- Knopix:短小精悍,安全著称;
- Ubuntu:以桌面应用为主
- Slackware:
- SUSE: 以桌面著称,西方多使用;
- OpenSUSE
- SLES:SUSE Linux Enterprise System
- SUSE: 以桌面著称,西方多使用;
不同发行版使用不同包管理器
- 程序的四大组成部分:
- 配置文件:文本格式,xml…
- 二进制程序:可执行;
- 库:二次开发;
- 帮助手册:装水不用说明书,买个智能洗衣机呢?使用说明;
- 包管理器:将程序的组成部分打包成一个或几个程序包。
- 包管理器的分类:
- RedHat: rpm包,rpm,yum
- Debian: deb包,dpkg, apt-get
- SUSE: rpm包,rpm, zypper
- 包管理器的分类:
3、描述Linux的哲学思想,并按照自己的理解对其进行解释性的描述。
- 一切皆文件:即使是设备也模拟成文件,用文件系统接口即可完成操作硬件;
- 由众多单一目的的小程序组成;组合小程序完成复杂任务;
- 避免与用户交互;实现Shell脚本编程;
- 文本信息保存配置;
4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、data命令的使用,并配合相应的示例来阐述。
ifconfig – 查看当前主机的IP地址;
~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:CC:57:46 inet addr:172.16.0.16 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fecc:5746/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:110016 errors:0 dropped:0 overruns:0 frame:0 TX packets:25081 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:50999240 (48.6 MiB) TX bytes:16095842 (15.3 MiB)注意:inet addr行是IP信息;
inet addr:172.16.0.16 Bcast:172.16.255.255 Mask:255.255.0.0172.16.0.16: 是IP地址;
255.255.0.0:是IP地址的掩码;
终端:终端设备和附着在终端设备之上的程序组成
- echo “$SHELL” 显示附着在终端设备的程序;
- tty – 显示终端设备
Xshell连接/图形下的终端:
~]# tty /dev/pts/0
虚拟终端:
~]# tty /dev/tty/0
startx 用于在虚拟终端之上启动图形终端
CentOS 6无论在哪个虚拟终端启动,图形终端都是/dev/tty/7
CentOS 7在哪个虚拟终端启动,此终端即为图形终端/dev/tty/[1-7]
终端切换:Alt+Clt + F#[1-7]
export – 导出变量
控制历史的显示方式相关的环境变量:HISTCONTROL
- ignoredups: 表示忽略重复,连续且相同方为重复;
- ignorespace: 表示忽略空格开头的命令;
- ignoreboth: 以上两者都;
查看变量:
[root@localhost ~]# echo $HISTCONTROL ignoredups
修改变量:
[root@localhost ~]# export HISTCONTROL=ignorespace [root@localhost ~]# echo $HISTCONTROL ignorespace
用户接口: [root@localhost ~]#
root: 当前有效用户
localhost: 简写主机名
~: 工作目录(working directory)或当前目录(current directory), 使用pwd命令即可显示
#:命令提示符
- #: 管理员: 拥有所有权限,可执行管理操作;
- $: 普通用户: 不具有管理权限,不能执行管理操作;
[root@localhost ~]# pwd /root
history 显示或操作历史列表
工作方式
- 用户登陆终端,将HISTFILE定义的文件(历史文件,~/.bash_history)中的历史条目加载至内存历史列表.
- 用户执行命令,将新执行的命令记录于内存中的历史列表中:
- 列表列表的组成: 登陆终端HISTFILE文件的条目、新执行的命令;
- 用户登出终端,将历史列表中的的新执行的命令追加至HISTFILE中;
显示或操作历史列表: history [-c] [-d offset] [n]
- history -d offset :删除指定条目;
- history -c:清空历史列表;
- history :显示历史列表;
- history n:显示最近执行的n条命令;
操作历史文件中的历史列表: history -rw [filename]
- history -r: 将历史中新生成的条目追加至HISTFILE;
- history -w:将HISTFILE中的所有历史列表追加至内存;
验证工作方式:
[root@localhost ~]# echo > $HISTFILE [root@localhost ~]# history -c [root@localhost ~]# logout <--内存中的第一条命令历史记录 [root@localhost ~]# history 1 logout <-- 只记录了上次退出执行的命令 2 history < --- 此刻执行的命令,新执行的命令退出终端,将新执行的命令追加至$HISTFILE:
[root@localhost ~]# logout <-- 新执行的命令 [root@localhost ~]# cat $HISTFILE logout <-- 只记录了上次退出执行的命令 history < --- 此刻执行的命令,新执行的命令 logout <-- 新执行的命令删除指定条目的历史:
[root@localhost ~]# w [root@localhost ~]# whoami [root@localhost ~]# whereis ls [root@localhost ~]# history 1 logout 2 history 3 logout 4 cat $HISTFILE 5 w 6 whoami 7 whereis ls 8 history删除此条历史4 cat $HISTFILE,即为:
[root@localhost ~]# history -d 4 [root@localhost ~]# history 1 logout 2 history 3 logout 4 w <-- 注意没有了 5 whoami 6 whereis ls 7 history 8 history -d 4 9 history清空历史列表:
[root@localhost ~]# history -c [root@localhost ~]# history 1 history <-- 为当前执行的命令显示最近执行n条命令:
[root@localhost ~]# w [root@localhost ~]# which --skip-alias ls [root@localhost ~]# whereis -b ls [root@localhost ~]# history 3 3 which --skip-alias ls 4 whereis -b ls 5 history 3 <-- 最近N条命令包括当前执行的命令;
将历史中新生成的条目追加至HISTFILE;
[root@localhost ~]# logout [root@localhost ~]# who -r [root@localhost ~]# who -l [root@localhost ~]# who -u [root@localhost ~]# who -d [root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout [root@localhost ~]# history -w [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout who -r who -l who -u who -d history cat $HISTFILE history -w 仅是历史列表新生成的被追加至文件中了;将历史文件中的所有条目读到内存中:
[root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history 15 cat $HISTFILE 16 history -w 17 cat $HISTFILE 18 history [root@localhost ~]# history -r [root@localhost ~]# cat $HISTFILE logout history logout history w which --skip-alias ls whereis -b ls history 3 logout who -r who -l who -u who -d history cat $HISTFILE history -w [root@localhost ~]# history 1 logout 2 history 3 logout 4 history 5 w 6 which --skip-alias ls 7 whereis -b ls 8 history 3 9 logout 10 who -r 11 who -l 12 who -u 13 who -d 14 history 15 cat $HISTFILE 16 history -w 17 cat $HISTFILE 18 history 19 history -r 20 logout 21 history 22 logout 23 history 24 w 25 which --skip-alias ls 26 whereis -b ls 27 history 3 28 logout 29 who -r 30 who -l 31 who -u 32 who -d 33 history 34 cat $HISTFILE 35 history -w 36 cat $HISTFILE 37 history
echo 回显命令
echo [SHORT-OPTION]… [STRING]…
-n:不自动进行换行操作;
-e: 让转义符生效;
转义符:
\n 换行符;
\r 回车符;
\t 横向制表;
\v 纵向制表;默认情况:
[root@localhost ~]# echo “how are you?”
how are you?选项-n:
[root@localhost ~]# echo -n “how are you?”
how are you?[root@localhost ~]#选项-e:
[root@localhost ~]# echo -e “how are you?”
how are you?选项-e,加转义符:
[root@localhost ~]# echo -e “how are \nyou?”
how are
you?
[root@localhost ~]# echo -e “how are \byou?”
how areyou?
[root@localhost ~]# echo -e “how are \tyou?”
how are you?
[root@localhost ~]# echo -e “how are \vyou?”
how are
you?
- shutdown, reboot, halt,关机或重启
shutdown [OPTION]... TIME [WALL] OPTION: -h 关机;1分钟后关机; -r 重启 -c cancle -k 狼来了 TIME: hh:mm 具体时间 +m 几分钟后 now在10分钟后关机:
[root@localhost ~]# shutdown -h +10 Broadcast message from root@localhost.localdomain (/dev/pts/0) at 4:01 ... The system is going down for halt in 10 minutes!另起一个终端取消关机:
[root@localhost ~]# shutdown -c立即重启
[root@localhost ~]# reboot Broadcast message from root@localhost.localdomain (/dev/pts/2) at 4:03 ... The system is going down for reboot NOW!立即关机
[root@localhost ~]# shutdown -h
- 系统启动从硬件读取时间,读取后与硬件无关,通过CPU频率计时;
- 系统时间:通过CPU频率计时;
- 硬件时间:主板钮扣电池为硬件供电,让时钟正确;
date命令:系统时间
- 显示时间:date [OPTION]… [+FORMAT]
- FORMAT:(%Y年 %m月 %d日 %H小时 %M分钟 %S秒 %s unix元年至执行命令那一刻经过的时间 )
- 设定时间:date [MMDDhhmm[[CC]YY][.ss]]
显示时间:
[root@localhost ~]# date Wed Nov 29 04:09:36 CST 2017 [root@localhost ~]# date +%Y 2017 [root@localhost ~]# date +%m 11 [root@localhost ~]# date +%d 29 [root@localhost ~]# date +%H 04 [root@localhost ~]# date +%M 09 [root@localhost ~]# date +%S 54 [root@localhost ~]# date +%s 1511899796 [root@localhost ~]# date +%A Wednesday [root@localhost ~]# date +%a Wed [root@localhost ~]# date +%F 2017-11-29 [root@localhost ~]# date +%D 11/29/17 [root@localhost ~]# date +%T 04:10:35设定时间:
设定2012年12月1日11点11分30秒
[root@localhost ~]# date 120111112012.30
Sat Dec 1 11:11:30 CST 2012clock、hwclock命令:硬件时间
- 显示硬件时钟:# hwclock 或 # clock
- 系统与硬件时钟同步:
- 修改系统时间:hwclock -s
- 修改硬件时间:hwclock -w
clock是hwlock的软链接
[root@localhost ~]# which clock /sbin/clock [root@localhost ~]# file /sbin/clock /sbin/clock: symbolic link to `hwclock'显示硬件时钟:
[root@localhost ~]# hwclock Wed 29 Nov 2017 04:13:01 AM CST -0.877406 seconds [root@localhost ~]# clock Wed 29 Nov 2017 04:13:03 AM CST -0.737419 seconds修改系统时钟:
[root@localhost ~]# date Sat Dec 1 11:14:04 CST 2012 [root@localhost ~]# hwclock -s [root@localhost ~]# date Wed Nov 29 04:13:51 CST 2017
5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
内建命令:用户接口内置的命令,在文件系统路径下没有与命令同名的文件;
外部命令:在文件系统上有与命令同名的程序文件
1、获取命令的类型‘
- 内建命令:显示builtin
- 外部命令:显示命令的绝对路径或命令的别名;如果别名同原名,原名会被隐藏,此时要执行原命令: \COMMNAD
[root@localhost ~]# type cd cd is a shell builtin[root@localhost ~]# type grep grep is /bin/grep[root@localhost ~]# type ls ls is aliased to `ls --color=auto'[root@localhost ~]# ls[root@localhost ~]# \ls2、内建命令
[root@localhost ~]# help cd3、外部命令
[root@localhost ~]# ls --help [root@localhost ~]# man ls4、官方文档
5、命令自带文档(/usr/share/doc/app-VERSION/{README,ChangeLog,INSTALL})
- REDME:程序相关信息
- ChangeLog: 版本迭代时的改动信息
- INSTALL: 安装帮助
- COPYING: 版本信息
6、Google
man章节
- 系统调用(man2)
- 库调用(man3)
- 用户命令(man1)
- 管理命令(man8)
- 设备文件(man4)
- 配置文件(man5)
- 杂项(man6)
- 游戏(man7)
获取命令在哪些章节下有帮助:
whatis COMMAND获取命令在指定章节下的帮助
man CHAPTER COMMAND [root@localhost ~]# whatis passwd passwd (1) - update user's authentication tokens passwd (5) - password file passwd [sslpasswd] (1ssl) - compute password hashes [root@localhost ~]# man 5 passwd
6、请罗列Linux发行版本的基础目录名称命名法则及功用规定。
Filesystem Hierarchy Standard http://www.pathname.com/fhs/pub/fhs-2.3.html
/bin
所有用户可用的二进制程序;
/sbin
系统管理员可用的二进制程序;
/boot
引导加载器的静态文件;kernel: vmlinuz, initramfs(initrd), grub等;
/dev
当前系统所识别到的所有硬件设备的设备文件或特殊文件;黑底色黄前景色;
特殊文件:由软件模拟文件为设备文件;
- 设备类型:
- 字符:线性存储,以字符为单位进行交换数据;
- 块: 随机存储,以块为单位进行交换数据;
/etc
纯文本的配置文件,控制程序运行特性,运行哪段代码。多个选项时保存于配置文件中;
/home
用户的家目录,站点特有的目录,任何程序不应该依赖于此目录;
/root
root用户的家目录,可选;管理员不应该登陆系统;
/lib
基本共享库和内核模块;系统启动时/bin, /sbin下的程序所依赖的库;
- libc.so.* 动态链接的C库
- ld* 运行时加载器
- modules: 可装载的内核模块
/lib64
64位系统特有的存放64位共享库的路径;
/media
便携式设备挂载点;
/mnt
文件系统的临时挂载点;
/opt
第三方应用程序的安装位置;logstash, oracle。。
- 类似于Windows中的 Program Files目录;
/src
当前主机为服务提供的数据;
/tmp
为那些会产生临时文件的程序提供的用于存储临时文件的目录,可供所有用户使用,有特殊权限;
/usr
universal share read-only data;只读,任何兼容FHS的发行版彼此间可共用usr目录;
- bin, sbin系统运行过程中附加功能;
- lib 为/usr/{bin,sbin}提供
- include C程序的头文件
- share 架构特有的文件存放路径;
- man 命令手册页
- doc 命令自带文档
- X11R6:x window程序安装位置
- src 程序源码文件的存放位置
/usr/local
第三方应用程序的安装位置,新版本在?usr/local下老版本在/usr下,不能覆盖程序;老版本可能会被其他程序依赖;
- bin, sbin, lib, lib64, etc, share, include, man, share, src, games
/var
var Hierarchy,经常发生变化数据的目录
- cache 缓存数据
- lib 变化状态数据
- local 为/usr/local下提供经常发生变化的数据
- opt 为/opt下提供经常发生变化的数据
- lock 锁文件
- log 日志文件
- run 运行中的进程相关的信息:pid
- spool 暂存
- tmp 重启后留存的数据
虚拟文件系统:基于内存的文件系统,开机存在,关机不存在;
- /proc, proc, 内核及进程信息,内核参数映射;net.ipv4.ip_forward抽象为目录,其存储于/proc/sys目录下,因此完整路径为/proc/sys/net/ipv4/ip_forward;
- /sys sysfs, 内核中硬件设备抽象为统一接口映射;
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89247
评论列表(1条)
赞~命令的使用总结的很详细,继续加油