Linux
1、计算机硬件软件体系
冯 诺依曼体系结构
- 计算机处理的数据和指令一律用二进制数表示
- 顺序执行程序
- 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
计算机硬件组成
- 输入设备
- 输出设备
- 存储器
- 控制器
- 控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果
- 运算器
- 运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
硬盘的分类
-
机械硬盘(Hard Disk Driver, HDD)
- 机械硬盘采用磁性碟片来存储数据
- 用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有
- 被磁化
- 凸起的地方代表数字1(磁化为1),凹的地方代表数字0。
- 硬盘可以以二进制来存储表示文字、图片等信息。
- 硬盘可以根据转速来判断硬盘的好坏 7200转/分 100-200M/s
-
固态硬盘(Solid State Disk, SSD)
- 固态硬盘通过闪存颗粒(固态电子存储芯片阵列)来存储数据
- 读写速度的区别
网络连接概念
- IP地址IPADDR
- IP地址是一种逻辑地址,用来标识网络中一个个主机
- IP地址=网络地址+主机地址
- IP地址是一个 4 * 8bit(1字节)由 0/1 组成的数字串(IP4协议)
- 子网掩码NETMASK
- 子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。
- 子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据
- 默认网关GATEWAY
- 网关的作用就是实现两个网络之间进行通讯与控制
- 连接两个不同的网络的设备都可以叫网关设备
- 网关地址就是网关设备的IP地址
- 域名服务器DNS
- DNS是域名服务器,用来解析域名的(域名和IP之间的解析)。
- 如果没有这东西,登陆某个网站时就必须输入该网站的IP地址,有了DNS就可以直接输入网址
- 全国
- 全球
- C:\Windows\System32\drivers\etc\hosts
网络连接模式
- host-onboy(主机模式)
- bridged(桥接模式)
- NAT(网络地址转换模式)
软件分类
- 应用软件
- 就是为了实现某些业务功能
- 应用软件要基于对应的系统软件
- 系统软件
- 就是为了和硬件打交道
- 屏蔽应用软件与硬件的差异
- 分类
- Window
- 用户量全球最大
- 收费,不开源,民用较多
- 各种软件比较齐全
- Mac
- GNU/Linux
- GNU是一个开源软件组织,世界上所有的软件都应该开源免费
Linux分支
-
RedHat(收费)
-
Debain(免费)
-
Ubuntu
- 视窗界面良好的Linux系统
- 一些主流的软件都支持Ubuntu系统
Linux下载
-
官网
-
下载页面
- https://linux.org/pages/download/
-
CentOS7.6下载地址
- http://vault.centos.org/7.6.1810/
-
镜像的分类
- everything
- minimal
- netinstall
2、虚拟机安装与配置
虚拟化技术
创建虚拟主机
安装操作系统
配置常见参数
-
网络
-
查看自己虚拟网卡地址
-
修改网络配置信息
-
修改网络信息
-
重启网卡重新加载配置文件
- ip addr
- systemctl restart network.service
- ping www.baidu.com
- ctrl+c 终止命令的执行
-
软件安装限制
-
防火墙
-
关机
-
halt
-
poweroff
-
shutdown -h now
-
reboot
快照与克隆
-
拍摄快照
-
转到
-
克隆
-
复制某一个历史快照节点
-
克隆的方式
-
链接克隆
- 当前节点文件夹只存储差异性数据
- 相同数据存放在原始节点上
- 优点:节省硬盘空间 缺点:耦合性大
-
完整克隆
- 就是基于原始节点完全拷贝到新节点的文件夹中
- 优点:耦合性抵 缺点:硬盘空间使用大
- 推荐使用完整克
修改克隆机配置
-
网络信息
-
主机名
-
vi /etc/hostname
-
hostname xxxx
连接Linux服务器
3、Linux的命令
命令学习法
-
Linux命令与参数之间必须用空格隔开
-
Linux命令是区分大小写的
-
如果输入了错误的命令
- -bash: abcd: command not found
- 命令敲错了
- 命令未安装
-
type 命令的类型
- cd is a shell builtin
- ping is /bin/ping
- ll is aliased to `ls -l --color=auto’
- for is a shell keyword
-
命令的帮助文档
-
help
-
man
-
将来工作中如果遇到生疏的命令,直接百度
常用的命令
- whereis 查询命令文件的位置
- file 查看文件的类型
- who 查看当前在线的用户
- whoami 我是谁
- pwd 我在那
- uname -a 查看内核信息
- echo 类似于 sout syso ,打印语句
- clear 清屏
- history 历史
特殊字符
4、Linux的文件系统
万事万物皆
- 所以在Linux中所有的东西都是以文件的方式进行操作
- 在Linux中,文件的访问不和Window的一样。window依靠的是通过盘符进行访问
- Linux维护着一个树状结构的文件模型
- 只有一个根节点 ,他的名字叫做 /
- 一个节点上可以有多个子节点
- 查找文件的方式
- 相对路径
- 以当前路径为基准点,查找其他资源
- vi …/etc/sysconfig/network
- 以根目录为基准点,查找其他资源
- vi /etc/sysconfig/network-scripts/ifcfg-ens33
- 日常使用中,只要找到路径即可,但是如果是一些配置文件,尽量写绝对路径
- 可以随意的挂载磁盘
- mount /dev/disk1 /usr/download disk1 1T mount /dev/disk2 /usr/upload disk2 100T mount /dev/disk3 /usr/upload/photo disk3 1P
Linux二级文件目录
- /bin:
- /boot:
- /dev :
- /etc:
- /home:
- /lib:
- /media:
- /mnt:
- /opt:
- /proc:
- /root:
- /sbin:
- /srv
- /sys:
- /tmp:
- /usr:
- /var:
- 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日 志文件。
- /run:
Linux的文件操作
- cd
- ls ll
- l软连接
- -rw-r–r–. 1 root root 3384 Nov 11 23:51 install.log.syslog
- mkdir
- 创建文件目录
- mkdir -p a/b/c/d/e/f 会自动创建文件父目录
- mkdir -p lucky/{1234}ls 一次可以创建多个子目录
- rmdir
- cp
- 拷贝文件或者文件目录
- cp 源文件 目标目录
- cp abcd /opt
- cp /opt/abcd ./
- 拷贝文件夹
- cp -r lucky /opt
- 拷贝文件夹下所有的内容
- cp: omitting directory ‘/root/a1
- mv
- rm
- 删除文件
- rm install.log
- rm -f install.log
- 删除文件夹
- rm -r abcd
- rm -rf abcd 谨慎使用,从删库到跑路
- touch
- 如果没有就创建一个文件
- 如果该文件已经存在,修改文件的三个时间,将三个时间改为当前时间
- stat
- 查看文件的状态
- Inode 当前文件在文件系统的唯一标识,类似于ID
- 时间
-
access 访问时间
-
modify 修改文件内容时间
-
change 修改文件元数据信息时间
- 对于文件的描述信息
- 文件大小 ,文件所有者 ,文件权限
- ln
- 创建文件的链接
- 软(符号)连接
- ln -s lucky01 sl
- 软连接和原始文件不是同一个文件
- rm -rf lucky1
- 硬链接
- ln lucky02 hl
- 硬链接和原始文件使用文件系统中的同一个文件
- 如果你害怕一个文件被别人误删,你可以使用硬链接保护这个文件
- 软硬链接在链接文件的时候,推荐使用文件的绝对路径,否则有可能会出现问题
读取文件信息
- cat
- 将整个文档加载到内存中,并进行一次性显示
- 除非后面使用管道,传递数据
- tac
- more less
- head
- 从文章开始读取N行
- 默认如果超过10行读取10行,否则读取现在行数
- head -5 profile
- tail
- 从文章末尾读取N行
- head -3 profile | tail -1
- 利用管道只读取第N行
- 管道的作用就相当于把前面的结果以参数的方式传递给后面的命令
- 读取新增数据
- ping www.baidu.com >>baidu
- tail -F baidu
- 如果f:
- 它会监听指定inode的文件数据变化,但是当文件被删除后
- 即使创新创建,inode也会发生变化,于是监听失败
- 如果F
- 他会监听指定名字的文件,如果文件被删除后,重新创建
- 他会重新监听新文件的数据变化,监听不受影响
- find
- 查找指定的文件
- find 要查找的范围 -name 名字
- find /etc -name profile
VI和VIM编辑器
-
打开文件
- 正常打开
- 打开文件,并将光标置于第8行
- 打开最后一行
- vi + profile
- 按n查找下一个,按N查找上一个
- 打开指定搜索单词的位置
-
三种模式
-
三种模式切换
-
编辑模式
- G最后一行
- gg 跳转到第一行
- 数字gg 跳转到第数字行
- w 下个单词
- 数字w
- dw 删除一个单词
- 3dw 删除三个单词
- dd 删除一行
- 3dd 删除三行
- u回退到前面的操作
- .回退u执行的操作
- yw 复制一个单词
- 3yw 复制三个单词
- yy 复制一行
- 3yy复制三行
- p粘贴
- 6p 粘贴6次
- x 剪切
- 3x 剪切三个字符
- r 替换,然后输入一个字符替换
- 3r 替换三个
- hjkl 方向键
- ZZ 保存并退出
- ctrl+s 锁屏 ctrl+q 解锁
-
输入模式
-
末行模式
- set nu 设置行号
- set nonu 取消行号
- w 保存
- q 退出
- wq 保存并退出
- q!强制退出,但是不保存
- 如果上次异常退出会保留同名隐藏文件,每次启动会给与提示
- /pattern
- s/p1/p2/g
- 替换字符串
- g 替换当前行所有 否则只替换当前行第一个
- 替换全文
计算机间的数据传输
- Window–Linux
- Linux–Linux
- scp 源数据地址(source) 目标数据地址(target)
- scp apache-tomcat-7.0.61.tar.gz root@192.168.31.44:/opt
- scp root@192.168.31.44:/opt/apache-tomcat-7.0.61.tar.gz ./
- scp -r apache-tomcat-7.0.61 root@192.168.31.44:/opt
文件大小
- 分区信息
- 指定文件目录大小
- du -h --max-depth=1 apache-tomcat-7.0.61
- swap
- 一个特殊分区,以硬盘代替内存
- 当内存使用满的时候,可以将一部分数据写出到swap分区
文件压缩
- tar
- 主要针对的文件是 lucky.tar.gz
- 解压缩
- tar -zx(解压)v(过程)f(文件) lucky.tar.gz
- 压缩
- tar -zc(压缩)f(文件) tomcat.tar.gz(压缩后的名字) apache-tomcat-7.0.61(源文件)
- tar -zxf tomcat.tar.gz -C /opt/
- zip和unzip
- 安装
- 压缩
- zip -r tomcat.zip apache-tomcat-7.0.61
- 解压缩
5、Linux的网络信息
主机名称
DNS解析
-
域名解析服务
-
可以将域名转换为IP地址
-
DNS域名劫持
- window --> C:\Windows\System32\drivers\etc\hosts
- 123.56.138.186 www.baidu.com
- 123.56.138.186 www.taodao.com
-
修改主机域名
- vi /etc/hosts
- 将来我们需要把所有的虚拟机都配置hosts文件
- 192.168.31.101 bd1601
- 192.168.31.102 bd1602
网络相关命令
-
ifconfig
- 查看当前网卡的配置信息
- 这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包
- 所以7的时候需要自己手动安装
- 如果没有ifconfig ,可以使用ip addr 临时代替
-
netstat
-
ping
-
telnet
- 查看与目标IP的指定端口是否能够连通
- yum install telnet -y
- telnet 192.168.31.44 22
-
curl
- restful 我们所有的资源在网络上中都有唯一的定位
- 那么我们可以通过这个唯一定位标识指定的资源
- http://localhost:8080/lucky/user.action/666
- curl -X GET http://www.baidu.com
-
防火墙
- 帮助计算机网络于其内、
外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术 - #查看防火墙状态 systemctl status firewalld.service
- #临时停止firewall systemctl stop firewalld.service
- 开启一个端口的正确操作
-
加密算法
-
不可逆加密算法
- 可以通过数据计算加密后的结果,但是通过结果无法计算出加密数据
- md5
- Hash算法
-
对称加密算法
- 代表性算法叫做 DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
- 特点
-
非对称加密算法
-
主机间的相互免秘钥
-
可以通过ssh命令免秘钥连接到其他的主机
-
如果是第一次建立连接,需要输入yes
- 在 ~/.ssh/known_hosts 文件记录了以前访问地址(ip hostname)的信息
- 在访问地址的时候如果没有收录到known_hosts文件中,就需要输入yes
- 如果以前收录到known_hosts中,直接输入密码即可
-
配置步骤
- 生成秘钥
- ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
- 如果你想免秘钥登录谁,只需要把自己的公钥传递给对方主机即可
- 这个秘钥要放在 ~/.ssh/authorized_keys
- 发送公钥、给需要免秘钥的主机
- ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.58.201
-
相互面秘钥工作流程
-
- 解决方案1–本次
- ssh -v -o GSSAPIAuthentication=no root@192.168.88.201
- 解决方案2–所有
- 修改/etc/ssh/ssh_config文件的配置,以后则不会再出现此问题
- 最后面添加:
- StrictHostKeyChecking no
- UserKnownHostsFile /dev/null
-
用户-组-权限
-
用户
- 新增用户
- useradd luckyboy
- 会创建同名的组和家目录
- 设置密码
- 删除用户
- userdel -r luckyboy
- 级联删除家目录和组
- 修改用户信息
- usermod -l luckyss luckyls 修改用户名
- usermod -L luckyss 锁定用户名
- usermod -U luckyss 解锁用户名
- 常用文件
- cat /etc/shadow
- cat /etc/passwd
- 7.6系统0-999 普通 1000+
- 6.5系统0-499 普通 500+
- 用户名,编号,组编号,家目录,命令,目录
- 切换账户
-
组
-
权限
-
查看文件的权限
- 三组权限,每组3个字母
- r :读取权限
- w :写入权限
- x :执行权限
- -:没有权限
-
权限的UGO模型
- 三组权限
- 属主的权限:属组的权限:其他的权限
- 所有说:将来修改文件的权限 可以从rwx和ugo两个方面进行修改
-
修改文件的权限
-
修改文件所属
- chown n1 /var/lucky1
- chown n1:m1 /var/lucky2
- 修改文件夹时,让子目录迭代修改
- chgrp m2 lucky3
- 当用户的组被修改之后,需要重新登录才能获取新组的权限
-
修改文件的rwx
- chmod o+w lucky4
- chmod ug+rw lucky4
- chmod ugo-rw lucky4
- (权限RWX分别对应数字 4 2 1 5= 4+0+1 r-x)
-
权限赋予
- 我们可以将管理用的权限分配给普通用户
- 文件位置在 vim /etc/sudoers
- 但是修改这个文件需要使用命令
- visudo
- 修改 Line 99
- n1 ALL=(root) /sbin/useradd
- n1 ALL=(root) /sbin/*
- 如何使用
- su n1
- sudo chkconfig iptables off
6、日期与时间
时间命令
- 查看时区
- ll /etc/localtime
- /etc/localtime -> …/usr/share/zoneinfo/America/Los_Angeles
- ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- date
- cal 查看日历
- 修改时间
- date -s 11:11:11
- date -s 2019-11-11
- date -s ‘2019-11-11 11:11:11’
日期自动同步
- 首先安装时间同步的服务
- yum install ntp -y
- 自动同步网络时间中心
- ntpdate cn.ntp.org.cn
- 自动同步网络时间中心本地NTP服务
- NTP服务器
- vi /etc/ntp.conf
- 添加到末尾
#权限控制====
restrict default kod nomodify notrap nopeer noquery 拒绝IPV4用户
restrict -6 default kod nomodify notrap nopeer noquery 拒绝IPV6用户
restrict 210.72.145.44 授权国家授时中心服务器访问本地NTP
restrict 133.100.11.8 授权133.100.11.8访问本地NTP
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.88.2 mask 255.255.255.0 nomodify 本地网段授权访问
#=源服务器===
server cn.ntp.org.cn prefer 指定上级更新时间服务器,优先使用这个地址
#=差异分析===
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys - 开启本地NTP服务器
- systemctl start ntpd.service
- 同步时间
7、管道与重定向
管道
- 将前面命令的结果作为参数传递给后面的命令
- grep
- 强大的文本搜索工具
- cat profile | grep if
- ls / | grep ^t
重定向
- 改变数据输出的位置,方向
-
替换 >> 追加
- 0 in 1 out 2 err
- ls / 1> lucky 标准输出
- ls / > lucky 标准输出
- ls abcd 2>lucky 错误输出
- 结合使用
- ls /etc /abc >> lucky 2>&1
- ls /etc /abc > lucky 2>&1
8、Linux的系统进程
进程信息
-
ps -ef
- UID PID PPID C STIME TTY TIME CMD
- UID 所属用户
- PID 当前进程编号
- PPID 当前进程编号的父进程编号
-
ps -ef | grep redis
-
ps -aux
-
ps -aux --sort -pcpu
-
top
后台进程
- 只需要在命令的后面添加一个 & 符号
- ping www.baidu.com >> baidu &
- jobs -l
- 可以查看当前的后台进程
- 但是只有当前用户界面可以获取到
- nohup 可以防止后台进程被挂起
- nohup ping www.baidu.com >> baidu 2>&1 &
杀死进程
9、Linux的软件安装
环境变量
- 1、如果配置的多个文件夹都包含命令abc,默认执行第一个文件夹中的abc
- 2、环境变量尽量配置一些重要的文件夹目录,减少命令检索的时间
- 3、修改完配置之后需要重新加载配置信息
- Linux环境变量位置
- window 环境变量文件夹用分号;隔开,LInux中用:隔开
软件的安装方式
压缩包安装
YUM安装
-
yum的作用
- 可以帮我们管理RPM包
- 可以帮我们安装软件,
- 如果软件有其他依赖,会帮我们安装依赖后在安装软件
- 类似于Maven
-
yum命令
- search 查询命令或者软件
- info
- 查看包的信息
- list / list jdk
- 查询安装的rpm包,或者只查询某一周
-
更换yum源
-
本次的mysql安装属于yum安装
rpm安装
10、Linux三剑客
普通剑客
-
cut
- 用指定的规则来切分文本
- cut -d’:’ -f1,2,3 passwd | grep bdp
-
sort
-
sort lucky
-
sort -t’ ’ -k2 lucky
-
sort -t’ ’ -k2 -r lucky
-
sort -t’ ’ -k2 -n lucky
-
wc
- 统计单词的数量
- wc lucky
- 4 15 79 lucky
- -l line
- -w word 以空格来分割单词
- -c char
剑客1号:grep
-
可以对文本进行搜索
-
同时搜索多个文件
-
显示匹配的行号
-
显示不匹配的忽略大小写
- grep -nvi root passwd --color=auto
-
使用正则表达式匹配
- grep -E “[1-9]+” passwd --color=auto
剑客2号:sed
剑客3号:awk
-
它不是一个剑客,它是一门语言
-
了解即可
-
模式与动作
- awk -F “:” ‘NR>=2&&NR<=6’ /etc/passwd
- awk -F “:” ‘{print NR,$1}’ /etc/passwd
- awk -F “:” ‘NR>=2&&NR<=6 {print NR,$1}’ /etc/passwd
- awk -F “:” ‘NR==1{print NR,KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲NR==2{print NR,NF}’ /etc/passwd
11、shell编程
作为大数据开发人员,shell编程作了解和基本的知道即可,下面只是一些基础的shell编程知识适合学习和了解。在运维方面的话shell编程会重要的多。
Shell名词解释
-
Kernel
-
Shell
- 命令解释器(command interpreter)
- Shell 是一个用 C 语言编写的程序。Shell 既是一种命令语言,又是一种程序设计语言。
-
shell两大主流:
-
sh:
- Bourne shell(sh) ,Solaris,hpux默认shell
- Bourne again shell(bash) ,Linux系统默认shell
-
csh
- C shell(csh)
- tc shell(tcsh)
-
#! 声明
- 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序
Shell脚本的执行
Shell基础入门
- shell变量
- 变量的类型
- Shell的字符串
- Shell数组
- Shell的注释
- Shell参数传递
Shell高级进阶
- Shell运算符
- Shell流程控制
- echo打印数据
- test 命令
- Shell函数
系统任务设置
-
系统启动流程
-
开机自启动服务
-
rc.local
-
chkconfig
-
创建开机自启动脚本文件
-
给其设置执行权限
- chmod u+x schoolntpdate.sh
-
将脚本拷贝到 /etc/init.d目录下
- cp schoolntpdate.sh /etc/init.d/
-
添加到服务
- chkconfig --add /etc/init.d/schoolntpdate.sh
-
重启服务器
-
定时任务
-
在系统服务中心,crond负责周期任务
- systemctl status crond.service
-
添加任务,编辑当前用户的任务列表
-
编辑任务
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
- */2 * * * /usr/local/etc/rc.d/lighttpd restart
每两小时重启apache - 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache
–(功能描述:显示年月日时分秒)
date “+%Y%m%d%H%M%S”
-
重启crontab,使配置生效
- systemctl restart crond.service
-
通过crontab -l
-
查看任务的历史
-
清除任务
虚拟机初始化脚本
虚拟机相互免秘钥
##三台主机分别生成秘钥
【123】ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
##host验证
【123】vim /etc/ssh/ssh_config 在最后添加
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
##将秘钥分别拷贝给自己和别人
【123】ssh-copy-id -i ~/.ssh/id_rsa.pub root@node01
【123】ssh-copy-id -i ~/.ssh/id_rsa.pub root@node02
【123】ssh-copy-id -i ~/.ssh/id_rsa.pub root@node03
123456
##关闭主机拍摄快照
power off