linux系统学习(一)
Linux历史
20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机
1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了
1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
1979年,Unix发布System V,用于个人计算机
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学
1984年,Stallman开始GNU(GNU's Not Unix)项目,创办FSF(Free Software Foundation)基金会
1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明
1988年,MIT为了开发GUI,成立了XFree86的组织
1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核
1994年,Torvalds发布Linux-v1.0
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅
开源共享精神
用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高
开源软件重要特性:
低风险
高品质
低成本
更透明
如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。
GNU GPL(GNU General Public License,GNU通用公共许可证,4大特点:
复制自由
传播自由
收费传播
修改自由
BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议,满足以下条件才能商业使用:
如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议
如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议
不允许用原始软件的名字、作者名字或机构名称进行市场推广
Apache许可证版本(Apache License Version)许可协议,满足以下条件才能商业使用:
该软件及其衍生品必须继续使用Apache许可协议
如果修改了程序源代码,需要在文档中进行声明
若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息
如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议
MPL(Mozilla Public License,Mozilla公共许可)许可协议:相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。
MIT(Massachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
安装CentOS操作系统
版本: 7.4
安装选择:
1. 个人机
2. 双系统
3. 虚拟机(*)
虚拟机:
Vritualbox -- Oracle
Vmware Workstation(*) -- Vmware
KVM -- Linux内核
Xen
....
虚拟机的功能:
计算资源
存储资源
网络资源
将以上资源进行虚拟化
CPU虚拟化 内存虚拟化 硬盘虚拟化 网络虚拟化等等
Vmware workstation 网络虚拟化:
网络类型:
1. 桥接模式(Bridge)
2. 仅主机模式(Only - Host)
3. Nat模式
仅主机模式:
Nat模式: + Nat虚拟设备
Nat: 网络地址转化
192.168.10.10 ---> 122.1.1.1
PC上的关于nat网络模型的虚拟网卡设备:只影响 pc 和 vm之间通信;并不影响 vm 能不能上网问题
VM连通外部网络: 通过虚拟NAT设备
桥接模式:
让虚拟机处于真实的物理网络环境下
CentOS系统安装:
SSH远程连接:
1.?安装centos系统?
输入用户名/密码登录成功
2.?根据【虚拟网络类型】配置IP地址
Nat网络类型:
输入命令: ip a 检查 ip 地址
[root@test ~]# ip a | grep glo
inet 172.16.128.0/16 brd 172.16.255.255 scope global noprefixroute dynamic ens32
配置IP地址:使用DHCP方式获取
[root@test ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32
输入 a 或者 i
ONBOOT=no --> ONBOOT=yes
使用 Shift + : (进入末行模式)
输入 wq --> 保存退出
w 保存
q 退出 q!
输入命令: ifdown ens32 -- ifup ens32
ip a 命令 查看该网卡是否获取到ip地址
172.16.128.0
测试: ping 114.114.114.114 表示VM能够访问外部网络
3.?关闭防火墙?
输入命令: systemctl stop firewalld && systemctl disable firewalld
4.?检查sshd服务和22端口?
systemctl status sshd
ss -tanl | grep 22
5.?输入正确的信息进行远程连接
IP
用户名
密码
修改主机名称并生效:
设置: hostnamectl set-hostname [Test]
生效: bash 或者 进行远程连接
CentOS系统安装:
SSH远程连接:
1.?安装centos系统?
输入用户名/密码登录成功
2.?根据【虚拟网络类型】配置IP地址
Nat网络类型:
输入命令: ip a 检查 ip 地址
[root@test ~]# ip a | grep glo
inet 172.16.128.0/16 brd 172.16.255.255 scope global noprefixroute dynamic ens32
配置IP地址:使用DHCP方式获取
[root@test ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32
输入 a
ONBOOT=no --> ONBOOT=yes
使用 Shift + : (进入末行模式)
输入 wq --> 保存退出
w 保存
q 退出 q!
输入命令: ifdown ens32 -- ifup ens32
ip a 命令 查看该网卡是否获取到ip地址
172.16.128.0
测试: ping 114.114.114.114 表示VM能够访问外部网络
3.?关闭防火墙?
输入命令: systemctl stop firewalld && systemctl disable firewalld
4.?检查sshd服务和22端口?
systemctl status sshd
ss -tanl | grep 22
5.?输入正确的信息进行远程连接
IP
用户名
密码
修改主机名称并生效:
设置: hostnamectl set-hostname [Test]
生效: bash 或者 进行远程连接
Linux文件系统介绍
文件系统:
Window:C:\Users\Zhaohao\Desktop\寒假系统线上课程
Linux: /etc/sysconfig/network-scripts/
文件 = Metadata + Data
Metadata: 元数据: 描述文件属性等信息
Data: 数据: 文本本身的信息
文件名称命名规则:
1. 严格区分大小写 file File
2. 可以使用除/以外的任意字符,避免使用一些特殊字符( * . ? )
3. 不超过255个字符
4. 以. 开头的文件为隐藏文件
命令使用规则:
<command> [options] [obj]
options:
长选项 -- ()
短选项 - 短选项可以组合使用(-aild)
一般来说: 短选项的使用放在长选项之前
obj 肯定是文件
注意: 空格
ls命令
[root@test ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
OPTIONS:
-a : 显示所有文件(包括隐藏文件)
-l :显示列表中文件的详细信息
-i : 显示文件的inode号
-d :查看目录文件的信息
文件路径
绝对路径: 从/位置开始(从根位置开始)
相对路径:从.位置开始 (从当前位置开始)
表示方式:
/sysconfig/network-scripts/ -> 绝对路径
./network-scripts/ -> 相对路径
network-scripts/ -> 相对路径
../ -> 相对路径 (从上一个目录作为当前目录)
pwd命令: 显示当前路径
[root@test tmp]# pwd
/tmp
cd命令 : 切换目录
cd命令默认是切换到各自的家目录下:/root/
[root@test tmp]# cd /etc/sysconfig/network-scripts/
[root@test network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@test ~]# cd test/
[root@test test]# cd
[root@test ~]# cd ./test/
[root@test test]# cd
[root@test test2]# pwd
/root/test/test2
[root@test test2]# cd .. # 返回上层目录
[root@test test]# ls
test2
[root@test test2]# cd - # 返回上次所在的目录
cd ..
cd
文件类型
- 普通文件 [-]
- 目录文件 [d]
- 块设备文件 [b]
- 字符设备文件 [c]
- 套接字文件 [s]
- 管道文件 [p]
- 链接文件 [l]
如何去查看文件类型:
1. ls -l 命令 (ll)
2. file命令
3. stat命令
[root@test ~]# ll
total 4
-rw-------. 1 root root 1260 Feb 5 2020 anaconda-ks.cfg
drwxr-xr-x. 3 root root 19 Feb 5 06:57 test
[root@test ~]# ll /dev/sda
brw-rw----. 1 root disk 8, 0 Feb 5 2020 /dev/sda
[root@test ~]# ll /dev/zero
crw-rw-rw-. 1 root root 1, 5 Feb 5 2020 /dev/zero
[root@test ~]# ll /var/spool/postfix/public/showq
srw-rw-rw-. 1 postfix postfix 0 Feb 5 2020 /var/spool/postfix/public/showq
[root@test ~]# ll /run/dmeventd-client
prw-------. 1 root root 0 Feb 5 2020 /run/dmeventd-client
lrwxrwxrwx. 1 root root 11 Feb 5 2020 ifdown-isdn -> ifdown-ippp
[root@test ~]# file test/
test/: directory
[root@test ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@test ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1260 Blocks: 8 IO Block: 4096 regular file
[root@test ~]# stat test/
File: ‘test/’
Size: 19 Blocks: 0 IO Block: 4096 directory
目录结构:
注意:介绍/下的第1级目录
bin: Binary缩写; 存放着经常使用的命令
boot: 启动Linux需要的部分核心文件
dev: Device缩写; Linux外部设备(磁盘等)
etc: 系统管理所需要的配置文件和子目录
home: 用户的家目录
lib: 程序运行时所依赖的库文件(包括内核模块)
lib64: 专用于x86_64系统上的辅助共享库文件存放位置
media: 自动识别的设备存放位置
mnt: 用户临时挂载别的文件系统
opt: 安装额外软件的存放位置
proc: 虚拟目录;访问该目录可以获取系统相关信息
root: 超级管理员家目录
run: 存储系统运行以来的所有信息
sbin: 超级管理员所使用的命令
srv: 服务启动后需要的数据
sys:子文件系统;映射内核信息 (针对内核做调整的话)
tmp: 临时文件目录
usr: 用户的应用程序和相关文件
var: 经常被修改的文件存储位置(日志: /var/log/...)
面试题:
如何去看服务器(centos7)的cpu核数?
/prco/cpuinfo配置文件,详解
【】#vi /proc/cpuinfo
processor : 0 #系统中逻辑处理核的编号,逻辑cpu个数1个
vendor_id : GenuineIntel #cpu制造商 英特尔原厂
cpu family : 6 #cpu产品系列代号
model : 158 #cpu属于其系列中的哪一代的代号
model name : Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
stepping : 10 #cpu属于制作更新版本
microcode : 0xaa
cpu MHz : 2592.006 #cpu的实际使用主频
cache size : 12288 KB #cpu二级缓存大小
physical id : 0 #单个cpu的标号
siblings : 1 #单个cpu逻辑物理核数
core id : 0 #当前物理核在其处在cpu中的编号,这个不一定连续
cpu cores : 1 #该逻辑核处在cpu的物理核数
apicid : 0 #用来区分不同逻辑的编号,系统中每个逻辑核的此编号必然不同
Top命令也可以的