一、计算机的组成
冯· 诺依曼则提出了计算机体系结构的设想主要分为五个部分:控制器,运算器,存储器,输入设备,输出设备。
1.控制器
是整个计算机的大脑,根据要求进行控制调度数据协调计算机的工作
2.运算器
运算器的功能是对数据进行逻辑计算,进行数据的加工
3.存储器
存储器的功能是存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。
4.输入设备
输入设备是向计算机输入数据和信息的设备,是用户和计算机系统之间进行信息交换的主要装置之一,键盘,鼠标,摄像头,扫描仪,光笔等都属于输入设备。
5.输出设备
是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等,将其回馈给用户
6.操作系统
操作系统运行着程序,统一管理计算机硬件,将用户的操作命令提供给计算机,将计算机的计算结果通过协调硬件反馈给用户,主流操作系统分为linux和windows
二、llinux主流发行版本
服务器:
1.Uubuntu
服务器版旨在充当web服务器,可用来托管文件、网页及相似内容,并带有LAMP,即Linux、Apache、MySQL和PHP的缩写,与个人使用版本核心相同,更方便使用
2.Red Hat
RedHat Linux朴实、简洁、稳定,是作为商业应用,并有着发行商的技术支持
3.CentOs
CentOS 是 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,与redhat一样朴实、简洁、稳定,centos也会为用户创建软甲更新包,但为了避免兼容性额影响一般不会启用,其拥有高度稳定性与可靠性可以长时间安全运行,但是有时无法实现承诺的安全更新一集稳定发布,更没有任何商业支持,centos也不会附上任何商业责任。
个人使用
1.Uubuntu
ubuntu有着非常丰富的应用市场,可以像使用mac一样进行软件的安装与卸载。ubuntu与其他linux的衍生版兼容性好,其应用市场可以安装于其他linux版本中。ubuntu还有这有好的GUI让人更容易使用,并且是默认安装。并且有着良好的开源社区,并有丰富的衍生版本。
2.Debian
早期发行的linux版本之一,非常稳定支持很多的硬件设施,对于系统与软件的整合更加控制品质,不过对于系统版本的更新来说更加漫长
3.kali
kali更像是一个工具而不是一个系统,kali之中包含了很多的网络与系统的安全工具,可以更好地帮助管理员对重要的服务器与网络环境进行安全排查
4.Minit
minit让Linux更加的贴近了普通用户,他有着不断更新的图形工具,新的结构菜单,mintInstall 易用于软件的安装使用,mintUpdate软件的更新,相比ubuntu更加贴合桌面用户。
5.Deepin
是由武汉深之度科技有限公司开发的Linux发行版,专注于个人用户的日常使用,有着高度定制,更加贴合国内人使用windows的习惯,并有有着丰富的扩展功能,如游戏中心、翻译、音乐播放器等自主研发的工具
三、linux的哲学思想
1、一切皆文件:
把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等,例如
物理终端: /dev/console
虚拟终端: /dev/tty*
串行终端: /dev/ttys*
伪终端: /dev/pst/*
2、 由众多功能单一的程序组成;一个程序只做一件事,并且做好
组合小程序完成复杂任务,单个文件占用量小,代码轻量化,高效,易于与其他工具结合实现更多的功能
3、尽量避免跟用户交互,使用命令行效率更高,易于以编程的方式实现自动化任务
4、使用文本文件保存配置信息;因为文本是最易于实现的底层的数据接口表现形式,所以使用文本编辑器,就能完成大多数的程序管理,也便于阅读、理解、编辑。
5.提供机制而非策略,使用户可以更高效自由的使用操作系统。
四、linux上常用的命令以及格式
linux的命令格式通常如
命令 [选项] [参数]
ls -l /etc/shadow
1.ifconfig命令
显示本地网卡的详细配置,配置文件在此路径
/etc/sysconfig/network-scripts/ifcfg-[网卡名]
ifconfig [网络设备] [参数]
临时启动或关闭指定网卡
ifconfig 网卡名 up
ifconfig 网卡名 down
设置ip地址
ifconfig [网卡名] 192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.22
更改网卡mac
ifconfig [网卡名] hw ether 00:11:22:33:44:55
临时开关arp
ifconfig eth1 arp //开启arp
ifconfig eth1 -arp //关闭arp
显示网卡全部信息
ifconfig -a
ifconfig输出结果
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.25 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::b9e8:16a7:3b99:9616 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d3:3e:bc txqueuelen 1000 (Ethernet)
RX packets 93 bytes 13296 (12.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 109 bytes 11583 (11.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//第二行inet为本机IP地址,netmask为子网掩码,broadcast 为本机的广播地址,这些都可以通过命令修改
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:9b:90:44 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
不过现在较高版本的linux ifconfig命令已经被废弃无法使用,需要使用ip命令
使用ip命令
为网卡添加一条ip地址
ip addr add 192.168.1.25/24 dev [网卡名]
查看刚才添加的ip
[root@localhost ~]# ip addr show [网卡名]
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d3:3e:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.25/24 brd 192.168.1.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::b9e8:16a7:3b99:9616/64 scope link noprefixroute
valid_lft forever preferred_lft forever
删除刚才所添加的ip
ip addr del 192.168.1.25/24 dev [网卡名]
关闭网卡(ifdown)
ip link set em1 down
开启网卡(ifup)
ip link set em1 up
查看本机路由
ip route show
查看包的路由来源
[root@localhost ~]# ip route get [所需要查看的ip地址]
8.8.8.8 via 192.168.1.2 dev eth0 src 192.168.1.25
cache
路由表操作
添加:
ip route add 1.1.1.0/24 via 192.168.1.1
删除:
ip route del 1.1.1.0/24 via 192.168.1.1
修改默认路由:
iproute add default via 192.168.1.2
查看本机arp
ip neighbour
由此可看出ip功能相比较于ifconfig更加全面丰富,ifconfig功能将在以后的linux更新中逐渐被淘汰
2.echo 回显命令
echo [SHORT-OPTION]… [STRING]…
echo指令可以将参数输出到标准输出设备上,多个参数之间默认用空格分开,在输出完成后自动添加换行符,多用户shell脚本,也可以显示环境变量如
echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
转义
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
将显示结果定义至文件
echo "It is a test" > myfile
8显示命令执行结果
echo `date`
结果将显示当前日期
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
echo '$SHELL'
引号:弱引用,变量引用会被替换;
echo "$SHELL"
3.tty命令
查看当前连接的设备终端
[root@localhost ~]# tty
/dev/pts/0
/*当前使用虚拟机桌面连接就会显示pst,pst为伪终端
物理终端: /dev/console
虚拟终端: /dev/tty*
串行终端: /dev/ttys*
伪终端: /dev/pst/*
*/
4.startx命令
startx本身为一个shell脚本,驱使xinit进行工作,xinit它是位于/usr/bin下的二进制文件
startx [ [ client ] options … ] [ – [ server ] [ display ] options … ]
关于startx详细见
https://blog.csdn.net/qq_39101111/article/details/78728857
5.export
export命令用于设置或显示环境变量
export [-fnp][变量名称]=[变量设置值]
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量
export name=value
export -p //列出当前的环境变量
6.pwd命令
显示当前所在目录
[root@localhost rpm]# pwd
/etc/rpm
7.history
命令行执行 history 命令后,会显示已执行命令的序号和命令本身,可以使用命令或者快捷键快速查找与使用历史命令。默认情况下,命令历史存储在 ~/.bash_history 文件中,可查看此文件获取。
[root@bogon ~]# history
1 ifconfig
2 sudo
3 ifconfig
4 ifcfg
5 ipdrr
6 ip addr
快速重复执行上一条命令
有 4 种方法可以重复执行上一条命令:
(1)使用上方向键,并回车执行。
(2)按 !! 并回车执行。
(3)输入 !-1 并回车执行。
(4)按Ctrl+P 并回车执行。
(5)输入!6直接执行第6个命令
8.shutdown
关机,shutdown为一种安全的关机方式,所有登录的用户都可得知关闭系统,shutdown还会协调进程进行关闭系统操作,保障系统的稳定性,shutdown会执行/etc/rc0.d/ 下的脚本,通过脚本可以得知shutdown是如何运作
shutdown [options…] [time][wall…]
options :
-h:halt 关机
-r:rebot 重启
-c:cancel 取消关机或者重启
time
now
hh:mm 几点几分
+m 几分钟以后
wall:向每个登陆的终端发送信息
shutdown会给所有登陆的终端发送wall信息,可以自定义
shutdown -r +5 "xxxxx"
9.poweroff
切断系统电源
用于关闭计算机,与shutdown不同,poweroff使用时会立即杀死进程,关闭系统,并且通知电源切断,可能造成系统的不稳定。
10.reboot
重启命令
reboot [OPTIONS]
参数:
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
11.hwclock
hwclock [参数]… [+格式]
显示与设定硬件时钟
在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
显示硬件时钟
[root@bogon ~]# hwclock
-s:以硬件为准,把系统调整为与硬件时间相同;
-w:以系统为准,把硬件时间调整为与系统时钟相同;
12.date
date 可以用来显示或设定系统的日期与时间
手动设置当前时间为2019年9月9日 11点11分11秒
-s "20190909 11:11:11"
安年月日格式显示时间
[root@localhost ~]# date "+当前时间为:%Y-%m-%d %H:%M:%S"
--help:在线帮助
--version:显示版本信息
FORMAT:格式符
%H 小时(以00-23来表示)。
%I 小时(以01-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P AM或PM。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)。
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)。
%Z 市区。
%a 星期的缩写。
%A 星期的完整名称。
%b 月份英文名的缩写。
%B 月份的完整英文名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%j 该年中的第几天。
%m 月份(以01-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,异词类推。
%x 日期(以本地的惯用法来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)
五、Linux系统上获取命令的帮助信息
获取命令的使用帮助:
内部命令:
help COMMAND
外部命令:
(1) 命令自带简要格式的使用帮助
# COMMAND --help
(2) 使用手册:manual
位置:/usr/share/man
# man COMMAND
SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXIT STATUS:退出状态码
NOTES:额外的提示
SEE ALSO:额外可以参考的信息
EXAMPLES:使用示例
AUTHOR: 作者
BUGS: 报告程序bug的方式
SEE ALSO: 参考
...
SYNOPSIS:
[]:可选内容;
<>:必须提供的内容;
a|b|c:多选一;
...:同类内容可出现多个;
使用手册:压缩格式的文件,有章节之分;
/usr/share/man
man1, man2, ...
1:用户命令;
2:系统调用;
3:C库调用;
4:设备文件及特殊文件;
5:文件格式;(配置文件格式)
6:游戏使用帮助;
7:杂项;
8:管理工具及守护进行;
控制命令
空格,b 前后翻页
回车,k 前后行
ctrl+d,ctrl+u 前后翻半页
#G 跳转到指定行
1G 跳转到第一行
搜索关键词
/关键词
?关键词
n 搜索同方向
N 搜索反方向
六、linux基础目录名称命名法则及功用规定
/bin:供所有用户使用的基本命令文件
/sbin:供系统管理使用的工具程序
/boot:引导加载器必须用到的各静态文件:kernel,initramf(initrd),grub等
/dev:存储特殊文件或设备文件
设备有两种类型:字符设备(线性设备)、块设备(随机设备)
/etc:系统程序的配置文件,只能为静态(复制/etc即可迁移主机服务)
opt 专门为ope目录下程序提供配置文件
x11 专门为图形界面提供配置
sgml 为sgml格式配置文件提供保存路径
xml 为xml提供配置文件保存路径
/home:普通的家目录的集中文职,一般每个用户的家目录摩恩为此目录下与用户名同名的子目录,为完善系统结构而建立(可以不存在)
/lib:为系统启动祸根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
libv.sc.*:动态链接的C库,C程序的头文件
ld*:运行时连接器/加载器
modules:存放内核模块的目录
/lib64:64位系统特有的存放64为共享库的路径
/media:便携式设备挂载点,如光盘、U盘
/mnt:其他文件系统的临时挂载点,如硬盘
/opt:附加应用程序的安装位置,第三方应用程序(可选路径),默认是空的
/srv:当前主机为服务提供的数据
/tmp:为那些会产生临时文件的程序提供用于存储临时文件的目录:可供所有用户执行写入操作,有特殊权限
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache 应用程序缓存数据
lib 应用程序的状态信息
local 为/usr/local的放置经常发生变化数据
lock 锁定文件
log 日志文件和目录
opt 为/opt程序存放可变数据
run 与运行进程相关的数据
spool Application spool data 应用程序假脱机数据
假脱机即SPOOLing。SPOOLing技术是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”,他的核心思想是以联机的方式得到脱机的效果。
tmp 系统重新启动之间保留的临时文件
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息。例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux硬件设备提供一种统一模型的的接口;
Linux下的文件类型大致可分为
- :普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件
p: 管道文件pipe
s: 套接字文件socket