计算机硬件软件体系
冯 诺依曼体系结构
计算机处理的数据和指令一律用二进制数表示
顺序执行程序
计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
计算机硬件组成
输入设备
输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式
常见的有键盘,鼠标等
输出设备
输出设备可以将机器运算结果转换为人们熟悉的信息形式
打印机输出,显示器输出等
存储器
存储器用来存放数据和程序
RAM(random access memory)即随机存储 内存:
速度快,容量小
掉电易失
逻辑IO
ROM(Read-Onboy Memory)即只读内存 硬盘:
容量大,速度相对较慢
长久保存
物理IO
CPU(中央处理器)
控制器
控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果
运算器
运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
硬盘的分类
硬盘按照存储介质的不同可以分为如下两种
机械硬盘(Hard Disk Driver, HDD)
机械硬盘采用磁性碟片来存储数据
用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化
凸起的地方代表数字1(磁化为1),凹的地方代表数字0。
硬盘可以以二进制来存储表示文字、图片等信息。
硬盘可以根据转速来判断硬盘的好坏 7200转/分 100-200M/s
固态硬盘(Solid State Disk, SSD)
固态硬盘通过闪存颗粒(固态电子存储芯片阵列)来存储数据
读写速度的区别
固态硬盘的读取速度普遍可以达到400M/s,写入速度也可以达到130M/s以上,
其读写速度是普通机械硬盘的3-5倍。
机械硬盘的数据读写
主流的硬盘半机械半电子硬盘(机械硬盘)
硬盘的转速(转速越快读取越快)
寻道时间
数据传输时间
顺序读写与随机读写
网络连接概念
IP地址IPADDR
IP地址是一种逻辑地址,用来标识网络中一个个主机
IP地址=网络地址+主机地址
IP地址是一个 4 * 8bit(1字节)由 0/1 组成的数字串(IP4协议)
子网掩码NETMASK
子网掩码只有一个功能,就是将IP地址划分为网络地址和主机地址两部分。
子网掩码用来判断任意两台计算机的IP地址是否在同一个子网中的根据
A 192.168.7.111 B 192.168.8.222
255.255.0.0(255代表不可改,0代表可以随机,可以改变)
默认网关GATEWAY
连接两个不同的网络的设备都可以叫网关设备;网关的作用就是实现两个网络之间进行通讯与控制。
网关地址就是网关设备的IP地址
域名服务器DNS
DNS是域名服务器,用来解析域名的(域名和IP之间的解析)。
如果没有这东西,登陆某个网站时就必须输入该网站的IP地址,有了DNS就可以直接输入网址。
C:\Windows\System32\drivers\etc\hosts
网络连接模式
host-onboy(主机模式)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用hostonboy模式。
在host-onboy模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
在host-onboy模式下,虚拟系统的TCP/IP配置信息都是由VMnet1(host-onboy)虚拟网络的DHCP服务器来动态分配的
bridged(桥接模式)
VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机
器。
使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。
当前主机IP 为 192.168.8.100 虚拟机 192.168.8.xxx
学习期间为了防止IP冲突,所以不选择这种模式
NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的
虚 拟系统也就无法和本局域网中的其他真实主机进行通讯
软件分类
应用软件
就是为了实现某些业务功能
应用软件要基于对应的系统软件
系统软件
就是为了和硬件打交道
屏蔽应用软件与硬件的差异
系统软件的分类
Window
用户量全球最大
收费,不开源,民用较多
各种软件比较齐全
Mac
只限定于某些苹果的品牌机
ios--自成一家
GNU/Linux
GNU是一个开源软件组织,世界上所有的软件都应该开源免费
GNU Is Not Unix
GCC++
托瓦兹 林纳斯 Linus -- Linux(Linux is not unix)
Logo是企鹅
Linux分支
RedHat(收费)
CentOS
完全开源免费
不要使用最新版的CentOS
主要用于服务器版本
Linux下载
虚拟机安装与配置
创建虚拟主机
安装操作系统
配置常见参数
网络
查看自己虚拟网卡地址
编辑-->虚拟机网络编辑器-->vmnet8
vi编辑器简单使用
操作文档
光标位置
dd 删除一行
i 将文档变成可修改模式
esc 退出编辑
:wq 保存并退出
修改网络信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33
--修改
ONBOOT=yes
BOOTPROTO=static //静态网络IP dhcp 动态获取网络IP
--添加
IPADDR=192.168.58.100
NETMASK=255.255.255.0 --子网掩码,为了对IP地址进行标识,区分网络和主机
GATEWAY=192.168.58.2 --网关
DNS1=114.114.114.114
删除------
UUID
重启网卡重新加载配置文件
(ip addr)
systemctl restart network.service
ping www.baidu.com
ctrl+c 终止命令的执行
防火墙
保护本机的端口不被别人访问(防火墙会监测端口)
如果端口需要被别人访问到,需要添加端口到防火墙
systemctl status firewalld(查看防火墙状态)
关闭防火墙
本次开机状态下防火墙关闭
systemctl stop firewalld (本次服务内关闭防火墙)
服务器重启后防火墙禁用
systemctl disable firewalld(禁用防火墙服务)
reboot重启虚拟机
软件安装限制
操作系统对未知软件的安装有可能拒绝或者警告,我们需要禁用这个功能
vi /etc/selinux/config
SELINUX=disabled
快照与克隆
拍摄快照(一定要关机)
记录当前虚拟机的状态
转到回到某一个历史快照的节点
克隆
复制某一个历史快照节点
克隆的方式
链接克隆
当前节点文件夹只存储差异性数据
相同数据存放在原始节点上
优点:节省硬盘空间 缺点:耦合性大
完整克隆
就是基于原始节点完全拷贝到新节点的文件夹中
优点:耦合性抵 缺点:硬盘空间使用大
推荐使用完整克隆
修改主机名
vi /etc/hostname 修改完成后需要重启生效
hostname bd16 本次启动中有效,重启虚拟机还是使用原来的名字
连接Linux服务器
Xshell:负责向虚拟机输入命令
XFtp:如则向虚拟机传输文件
Linux的命令
命令Linux和Windows互传
yum install -y lrzsz
rz --上传到linux
ls --查看目录
rz anaconda-ks.cfg --下载到windows
XFtp
阿里云
云左科技(毕业购买服务器便宜)http://www.cloudleft.com/
命令学习法
find -name java (命令 -参数 值)
return 没反应,说明没有java这个文件
[root@node1 ~]# ll
total 8
-rw-------. 1 root root 1532 Mar 2 01:25 anaconda-ks.cfg
-rw-r--r--. 1 root root 1343 Feb 6 22:39 firefox.lnk
[root@node1 ~]# LL
-bash: LL: command not found
Linux命令是区分大小写的
如果输入了错误的命令
-bash: LL: command not found
命令敲错了
命令未安装
第一位文件类型
- 普通文件 , d 目录文件,I 链接文件,p 管理文件, b 块设备文件, c 字符设备文件, s 套接字文件
type 命令的类型
[root@node1 ~]# type cd
return cd is a shell builtin(cd是shell内置命令)
[root@node1 ~]# type ping
ping is /usr/bin/ping(ping 在/usr/bin/目录下)
[root@node1 ~]# type ll
ll is aliased to `ls -l --color=auto'
“ll”是“ls -l”命令的别名,ls命令用于显示指定工作目录下之内容,ll会显示创建时间和名字,ls只显示名字
[root@node1 ~]# ls -l
total 12
-rw-------. 1 root root 1532 Mar 10 07:49 111111
-rw-r--r--. 1 root root 1343 Feb 6 22:39 11111111
-rw-------. 1 root root 1532 Mar 2 01:25 anaconda-ks.cfg
[root@node1 ~]# ll
total 12
-rw-------. 1 root root 1532 Mar 10 07:49 111111
-rw-r--r--. 1 root root 1343 Feb 6 22:39 11111111
-rw-------. 1 root root 1532 Mar 2 01:25 anaconda-ks.cfg
[root@node1 ~]# type for
for is a shell keyword
命令的帮助文档
help:内置命令的帮助文档(help echo)
man:外部命令的帮助文档(man ping)
因为当前系统为minimal的,very basic 没有man包
需要手动安装man: yum install man man-pages -y
常用的命令
whereis 查询命令文件的位置
[root@node1 ~]# whereis profile
profile: /etc/profile /etc/profile.d
[root@node1 /]# find -name profile(find当前目录下)
./etc/lvm/profile
./etc/profile
file 查看文件的类型
[root@node1 ~]# file 111111(file 文件名)
111111: ASCII text
在linux中运行文件或者脚本必须是utf-8 wmod 格式,ASCII 格式运行百分百报错
windows下的格式为bos,linux下的格式为unix
who 查看当前在线的用户
[root@node1 /]# who
root pts/0 2023-03-10 04:08 (192.168.111.1)
whoami 我是谁
[root@node1 ~]# whoami
root
pwd 我在那
[root@node1 ~]# pwd
/root
uname -a 查看内核信息
[root@node1 ~]# uname -a
Linux node1 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
echo 类似于 sout syso ,打印语句echo $val打印值
[root@node1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@node1 ~]# echo a
a
[root@node1 ~]# a=10
[root@node1 ~]# echo $a
10
clear 清屏
history 历史,显示所有的操作
[root@node1 ~]# ls -sarln (显示所有文件包括隐藏文件,带.为隐藏文件)
total 232
4 -rw-r--r--. 1 0 0 129 Dec 29 2013 .tcshrc
4 -rw-------. 1 0 0 1532 Mar 2 01:25 anaconda-ks.cfg
......
[root@node1 ~]# cp anaconda-ks.cfg 2(copy文件 anaconda-ks.cfg 命名为2)
[root@node1 ~]# mv anaconda-ks.cfg 3(copy文件 anaconda-ks.cfg 命名为3)
rm -rf:无提示地强制递归删除文件(rm -rf test.sh)
-rw-------. 1 root root 1532 Mar 10 07:49 111111
[root@node1 ~]# ln -s 111111 222222(创建快捷键:link files,为某一个文件在另外一个位置建立一个同步的链接)
lrwxrwxrwx. 1 root root 6 Mar 10 09:12 222222 -> 111111
特殊字符
.点:如果文件的开始是.说明当前文件是一个隐藏文件
. 指向当前目录
..指向当前目录的上级目录
$:说明这是一个变量
$PATH Linux的环境变量
*星号:通配符
~:当前用户的家目录
每个用户的家目录是不同的
root用户家目录在系统根目录下
其他用户的家目录在/home/用户名为家目录
空格:Linux的命令与参数用空格隔开
/:整个Linux的文件根目录
命令的参数
如果是单词 一般加--
如果是字母或者缩写 一般加 -
修改Xshell字体颜色
PS1='\[\e[36;40m\][\u@\h \W]\[\e[0m\]\\$ '
echo "PS1='\[\e[36;40m\][\u@\h \W]\[\e[0m\]\\$ '" >> ~/.bashrc
source ~/.bashrc (永久改变)
[root@node1 ~]# ls ~/* (查看)
/root/111111 /root/11111111 /root/2 /root/222222 /root/3
Linux的文件系统
万事万物皆文件
文件系统:操作系统如何管理文件,内部定义了一些规则或者定义
所以在Linux中所有的东西都是以文件的方式进行操作,没有分区,没有磁盘,只有文件
在Linux中,文件的访问不和Window的一样。window依靠的是通过盘符进行访问
Linux维护着一个树状结构的文件模型
只有一个根节点 ,他的名字叫做 /
一个节点上可以有多个子节点
查找文件的方式
相对路径(“ . ”代表当前目录,“ .. ”代表该目录的父目录(上一层目录))
以当前路径为基准点,查找其他资源
vi ../etc/sysconfig/network
绝对路径(配置文件尽量写绝对路径)
以根目录为基准点,查找其他资源
vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@node1 ~]# cd /etc/
[root@node1 etc]# cat hostname(相对路径)
node1
[root@node1 etc]# cat /etc/hostname(绝对路径)
node1
可以随意的挂载磁盘(存储到其他磁盘)
mount /dev/disk1 /usr/download
disk1 1T
mount /dev/disk2 /usr/upload
disk2 100T
mount /dev/disk3 /usr/upload/photo
disk3 1P
Linux二级文件目录
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,
比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件
系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的
program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
Linux的文件操作
cat [可选参数] 文件路径 [其他文件路径]
cat -n a.txt (number加上行号): 查看文本文件内容,且附加行号
cat -s a.txt > b.txt (squeeze,将重复的空行压缩为一个空行):合并文本文件中的重复空行,并输出到另一个文本文件
cat a.txt b.txt > c.txt 合并多个文件到一个文件
cd /opt/ /*进入opt*/
mkdir bdp /*创建目录bdp*/
rmdir bdp /*删除目录bdp*/
mkdir -p bdp/hadoop (-p:会自动创建文件父目录)
rz:上传文件
rm -rf hadoop/ /*删除目录bdp*/
cp /root/111111 ./ /*copy 111111,放到 ./ 当前目录下*/
cp -r /root/ ./ /*copy root整个文件夹,放到 ./ 当前目录下*/
cp -d /root/222222 ./ /*复制链接文件 222222 -> 111111时使用cp -d命令;*/
mv 111111_bak /root/ /*删除root中文件111111_bak */
ls -sarln //显示所有文件,包括隐藏文件
rm -f 222222 //强制删除222222文件
[root@node1 ~]# rm -f /opt/bdp/
rm: cannot remove ‘/opt/bdp/’: Is a directory
rm -rf 222222 //删除文件夹
mv file4.txt dir1 //移动file4.txt 到目录dir1
mv a abcd //修改文件名称,a文件改为abcd文件
touch testttt.sh(创建unix格式的testttt.sh文件,如果没有就创建一个文件,如果该文件已经存在,修改文件的三个时间,将三个时间改为当前时间)
vi test.sh(创建bos格式的test.sh文件,存在则修改内容)
ls -sarln / (查看文件,包括链接文件和隐藏文件)
stat test.sh(查看文件的状态)
Inode 当前文件在文件系统的唯一标识,类似于ID
时间
access 访问时间
modify 修改文件内容时间
change 修改文件元数据信息时间
文件大小 ,文件所有者 ,文件权限
对于文件的描述信息
ln -s test.sh / (创建文件的链接,-s软(符号)连接,软连接和原始文件不是同一个文件)
ln test.sh(硬链接和原始文件使用文件系统中的同一个文件,
如果你害怕一个文件被别人误删,你可以使用硬链接保护这个文件
软硬链接在链接文件的时候,推荐使用文件的绝对路径,否则有可能会出现问题)
读取文件信息
[root@node1 ~]# sh /root/test.sh(执行test.sh文件)
111111
mv /test.sh /ttt.sh (将test.sh 文件改名为 ttt.sh)
ls -sarln /root/test.sh(显示test.sh文件)
cat /root/test.sh(显示文件内容echo '111111',将整个文档加载到内存中,并进行一次性显示)
[root@node1 /]# cat -n /root/test.sh(-n显示序号)
1 echo '111111'
[root@node1 /]# cat -E /etc/profile(结尾都显示$符号)
# /etc/profile$
$
# System wide environment and startup programs, for login setup$
tac:将整个文档加载到内存中,并进行一次性按行逆序显示
tac /etc/profile(将profile文件进行逆序显示)
head 10 /etc/profile (显示文件profile前10条信息)
head -c 10 /etc/profile (显示文件profile前10字节信息 /etc/pro)
tail:从文章末尾读取N行
head -3 profile | tail -1
如果f:
tail -f /root/test.sh(实时显示test.sh内容,-f删除新建,失效)
它会监听指定inode的文件数据变化,但是当文件被删除后
即使创新创建,inode也会发生变化,于是监听失败
如果F
tail -F /root/test.sh(实时显示test.sh内容,-F删除新建,进行监听)
他会监听指定名字的文件,如果文件被删除后,重新创建
他会重新监听新文件的数据变化,监听不受影响
find:查找指定的文件
[root@node1 /]# find -name profile
./etc/lvm/profile
./etc/profile
[root@node1 /]# find -name 'java'
./etc/pki/ca-trust/extracted/java
./etc/pki/java
[root@node1 /]# find -name java
./etc/pki/ca-trust/extracted/java
./etc/pki/java
VI和VIM编辑器
打开文件
cp /etc/profile profile //copy profile文件命名为profile
正常打开
vi profile
打开文件,并将光标置于第8行
vi +8 profile
打开最后一行
vi + profile
按n查找下一个,按N查找上一个
打开指定搜索单词的位置
vi +/if profile
三种模式
编辑模式:编辑模式中,每一个按键都有其他的功能
输入模式:每一个按键按下什么,就像文本中数据输入什么
末行(命令)模式:我们可以直接在VI中输入特定的命令
三种模式切换
i编辑在前(当前位置),I 行首, a编辑在后,A句末尾编辑 ,o下一行编辑,O上一行编辑,输入任意一个,命令模式->输入模式
输入模式-->编辑模式(按下ESC)
编辑模式-->末行模式(:)
末行模式-->编辑模式(按下ESC)
编辑模式
G最后一行
gg 跳转到第一行
数字gg 跳转到第数字行 (18gg 跳到第18行)
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
搜索指定的字符串
/usr n向下查找 N逆向查找
:s/p1/p2/g //将当前行p1替换字符串p2
g 替换当前行所有 否则只替换当前行第一个
查找指定行
:3,8s/abc/lucky/g(将3,8行abc替换为lucky)
替换全文
:g/abc/s//lucky/g (全文abc替换为lucky)
计算机间的数据传输
Window–Linux
lrzsz
需要手动安装
yum install lrzsz -y
rz 回车选择文件上传
将文件从window上传到Linux
sz 文件名字
将文件从Linux传输到Window
xftp
较为通用的文件传输方式
Linux–Linux
vi /etc/sysconfig/network-scripts/ifcfg-ens33 (将ip地址最后一位100->99即可)
systemctl restart network.service 重启网络
vi /etc/hostname 修改主机名
reboot 重启 或者 logout 注销 或者 exit更加常用
公司需要加入root@(用户名)
scp 源数据地址(source) 目标数据地址(target)
scp apache-tomcat-7.0.61.tar.gz root@192.168.31.44:/opt(...gz地址文件传输到用户root@192.168.31.44:目录/opt下)
scp root@192.168.31.44:/opt/apache-tomcat-7.0.61.tar.gz ./ (...gz拷贝到./当前位置)
scp -r apache-tomcat-7.0.61 root@192.168.31.44:/opt (拷贝文件夹apache-tomcat-7.0.61到用户root@192.168.31.44:目录/opt下)
[root@node1 ~]# scp /usr 192.168.111.99:/root (将目录 /usr 传到192.168.111.99:目录/root下,文件夹必须加-r)
/usr: not a regular file
[root@node1 ~]# scp -r /usr 192.168.111.99:/root (将目录 /usr 传到192.168.111.99:目录/root下)
[root@node1 ~]# scp test.sh 192.168.111.99:/root/test.sh ./ (copy test.sh文件从192.168.111.99:/root/test.sh保存到./当前目录)
文件大小
[root@node1 ~]# df -h / (显示数据使用情况,分区信息)
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 48G 1.2G 47G 3% /
du f / (分布式存储系统,计算文件大小)
[root@node1 ~]# du -h --max-depth=1 profile (指定文件目录大小)
8.0K profile
文件压缩
tar
v代表过程 -C解压到指定目录
cf压缩
主要针对的文件是 lucky.tar.gz
解压缩
tar -zxvf apache-tomcat-8.5.47.tar.gz(v可以看到解压过程)
[root@node1 ~]# tar -zxf apache-tomcat-8.5.47.tar.gz(看不到解压过程)
tar -zxf apache-tomcat-8.5.47.tar.gz -C /opt/ (-C 指定解压目录,即解压到哪里, 解压到目录/opt/)
tar -zx(解压)v(过程)f(文件) lucky.tar.gz
压缩
tar -cf apache-tomcat-8.5.47.tar.gz apache-tomcat-8.5.47(压缩apache-tomcat-8.5.47命名为apache-tomcat-8.5.47.tar.gz -cf为压缩文件)
tar -zc(压缩)f(文件) tomcat.tar.gz(压缩后的名字) apache-tomcat-7.0.61(源文件)
zip和unzip
安装
yum install zip unzip -y
压缩
zip -r tomcat.zip apache-tomcat-7.0.61
zip -r xshell_5.0.0553.exe
解压缩
unzip tomcat.zip
unzip xshell_5.0.0553.zip
Linux的网络信息
主机名称
临时修改
hostname school
cat /etc/hostname 查看域名
长久修改
vi /etc/hostname
DNS解析
vi /etc/hosts
ping www.baidu.com 等价于 ping 192.168.111.99 (ping检查网络是否连通)
touch tt.sh (新建tt.sh文件)
scp tt.sh www.baidu.com:/root(复制tt.sh文件到192.168.111.99:目录/root下)
ens33为网卡
域名解析服务(域名和ip地址的映射关系)
可以将域名转换为IP地址
DNS域名劫持
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.111.100 basiscs
192.168.111.99 node2
网络相关命令
ifconfig
查看当前网卡的配置信息
这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包
yum install -y net-tools
netstat
查看当前网络的状态信息
一个机器默认有65536个端口号[0,65535]
这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
一个端口只能被一个程序所监听, 端口已经被占用
netstat -anp
netstat -r 核心路由表 == route
netstat -ntulp | grep 9090
netstat(查看端口)
ping
查看与目标IP地址是否能够连通
telnet
查看与目标IP的指定端口是否能够连通(连通后能在目标端口写数据)
yum install telnet -y
telnet 192.168.31.44 22
[root@basiscs ~]# telnet 192.168.31.44 22
Trying 192.168.31.44...
telnet: connect to address 192.168.31.44: Connection refused
curl
vi /etc/hosts(修改dns,删除192.168.111.99 www.baidu.com映射关系)
restful 我们所有的资源在网络上中都有唯一的定位
那么我们可以通过这个唯一定位标识指定的资源
http://localhost:8080/lucky/user.action/666
curl -X GET http://www.baidu.com
加密算法
不可逆加密算法
百度 md5解密 在线
可以通过数据计算加密后的结果,但是通过结果无法计算出加密数据
应用场景
Hash算法常用在不可还原的密码存储、信息完整性校验。
文档、音视频文件、软件安装包等用新老摘要对比是否一样(接收到的文件是否被修改)
用户名或者密码加密后数据库存储(数据库大多数不会存储关键信息的明文,就像很多登录功能的忘记密码不能找回,只能重置)
案例
123456
e10adc3949ba59abbe56e057f20f883e
md5(md5(123456))-----md5(654321)
对称加密算法
Symmetric Key Encryption
代表性算法叫做 DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES
特点
加密和解密使用相同的秘钥(二者之间知道是什么意思,一对一的关系)
优点
生成密钥的算法公开、计算量小、加密速度快、加密效率高、密钥较短
缺点
双方共同的密钥,有一方密钥被窃取,双方都影响
如果为每个客户都生成不同密钥,则密钥数量巨大,密钥管理有压力
应用场景
登录信息用户名和密码加密、传输加密、指令加密
案例:
原文:今晚八点学校小树林见
密钥: love
7gjM6FhIc89ACoel+jJ3VM26XGAdSlaHTj5NYg4VkKA=
非对称加密算法
RSA算法
产生公钥和私钥,拿着公钥去找私钥
Asymmetric Key Encryption
非对称加密算法需要一对密钥(两个密钥):
公开密钥(publickey)和私有密钥(privatekey)(简称公钥,私钥)。
公开密钥与私有密钥生成时是一对
用公钥加密只能是对应的私钥解密,同理用私钥加密只能用对应的公钥解密。
代表性算法叫做 RSA、ECC、Diffie-Hellman、El Gamal、DSA(数字签名用)
优点:
安全高(几乎很难破解)
缺点
加解密相对速度慢、密钥长、计算量大、效率低
应用场景
HTTPS(ssl)证书里制作、CRS请求证书、金融通信加密、蓝牙等硬件信息加密配对传输、关键
的登录信息验证。
RSA http://tool.chacuo.net/cryptrsaprikey
主机间的相互免秘钥
服务器和服务器之间不用再输入密码,在集群和集群之间如果不做免密,它百分百启动的时候会提示警告,还有可能由于集群和集群之间免密没做,它登录不上
生成秘钥(会产生私钥和公钥,私钥在 ~/.ssh/id_rsa文件,公钥在~/.ssh/id_rsa.pub文件,公钥给对方)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa (ssh-keygen生成密钥 rsa算法 -f指定一个文件 ~/.ssh/id_rsa生成私钥到文件中)
cat ~/.ssh/id_rsa (查看私钥)
cat ~/.ssh/id_rsa.pub (查看公钥)
ssh 192.168.111.99 (登录其他linux)
如果你想免秘钥登录谁,只需要把自己的公钥传递给对方主机即可私钥属于自己,公钥与私钥配对即可免登录
这个秘钥要放在 ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.100 (拷贝公钥到root@192.168.111.100)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.99 (拷贝公钥到root@192.168.111.99)
所有主机互相免密
[root@node001 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa(生成秘钥(会产生私钥和公钥,私钥在 ~/.ssh/id_rsa文件,公钥在~/.ssh/id_rsa.pub文件,公钥给对方))
[root@node001 ~]# touch ~/.ssh/authorized_keys (创建密钥存储文件)
[root@node001 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (node001公钥写入authorized_keys中)
[root@node002 ~]# scp ~/.ssh/id_rsa.pub root@node001:~/.ssh/node002.id_rsa.pub (node002公钥传给node001)
[root@node003 ~]# scp ~/.ssh/id_rsa.pub root@node001:~/.ssh/node003.id_rsa.pub (node003公钥传给node001)
[root@node001 ~]# cat ~/.ssh/node002.id_rsa.pub >> ~/.ssh/authorized_keys (node002公钥写入authorized_keys中)
[root@node001 ~]# cat ~/.ssh/node003.id_rsa.pub >> ~/.ssh/authorized_keys (authorized_keys文件中已经有了node001、node002、node003公钥)
[root@node001 ~]# scp ~/.ssh/authorized_keys root@node002:~/.ssh/ (authorized_keys传给node002)
[root@node001 ~]# scp ~/.ssh/authorized_keys root@node003:~/.ssh/ (authorized_keys传给node003)
[root@node001 ~]# chmod 700 ~/.ssh (授权)
[root@node001 ~]# chmod 600 ~/.ssh/authorized_keys (授权)
单台主机免密登录其他主机
[root@node001 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa(生成秘钥(会产生私钥和公钥,私钥在 ~/.ssh/id_rsa文件,公钥在~/.ssh/id_rsa.pub文件,公钥给对方))
[root@node001 ~]# touch ~/.ssh/authorized_keys
[root@node001 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys(公钥写入authorized_keys中)
[root@node001 ~]# chmod 700 ~/.ssh (授权)
[root@node001 ~]# chmod 600 ~/.ssh/authorized_keys (授权)
[root@node001 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.102(将公钥传给需要免密登录的主机)
[root@node001 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.111.103(将公钥传给需要免密登录的主机)
相互面秘钥工作流程
主机名与Host校验
错误原因:
Cannot determine realm for numeric host
解决方案1--本次
ssh -v -o GSSAPIAuthentication=no root@192.168.189.201
解决方案2--所有
vi /etc/ssh/ssh_config (修改文件的配置)
最后面添加:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null变为UserKnownHostsFile ~/.ssh/known_hosts
日期与时间
时间命令
[root@basiscs ~]# date (查看当前时间)
Tue Mar 14 08:09:07 CST 2023
[root@basiscs ~]# date -s 11:11:11 (修改时间)
Tue Mar 14 11:11:11 CST 2023
[root@basiscs ~]# date -s '2019-11-11 11:11:11' (修改时间)
Mon Nov 11 11:11:11 CST 2019
[root@basiscs ~]# date
Mon Nov 11 11:11:16 CST 2019
[root@basiscs ~]# clock w (保存修改的时间)
日期自动同步
yum install ntp -y
ntpdate cn.ntp.org.cn
[root@basiscs ~]# date
Mon Mar 13 20:28:05 CST 2023
命令执行时间统计
[root@basiscs ~]# touch update.sh
[root@basiscs ~]# vi update.sh
复制下面```
[root@basiscs ~]# sh update.sh (执行update.sh脚本)
0 seconds.
#!/bin/bash
start=$(date +%s)
nmap man.linux.net &> /dev/null
end=$(date +%s)
difference=$(( end-start ))
echo $difference seconds.
~
用户-组-权限
用户
useradd bdp (添加用户)
passwd bdp (给bdp用户添加密码)
usermod -l qqqq bdp (bdp改名为qqqq)
cat /etc/shadow (查看用户名和密码)
root:$6$oM7eLu7t75CAmLCB (root用户,6为密码,后面为加密后的密码)
yum install -y vim (安装vim)
useradd test (添加用户test)
cat /etc/passwd (查看用户名,编号,组编号,家目录,命令,目录)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
vim /etc/passwd(修改权限不足问题/sbin/nologin改为/bin/bash)
passwd test (设置密码)
su lp (登录用户lp)
exit (注销)
passwd bdp (给bdp用户添加密码),然后点击用户身份验证,输入用户名和密码进行连接
组
[root@basiscs ~]# groupadd test
groupadd: group 'test' already exists
[root@basiscs ~]# groupadd www (创建组)
groupdel bdp (删除组)
groups(查看当前组)
groups test (查看用户test当前组)
groupmod -n aaa test (把test组修改为aaa组)
[root@basiscs ~]# groups test
test : aaa (用户名 : 组名)
权限
三组权限,每组3个字母
r :读取权限
w :写入权限
x :执行权限
-:没有权限
root :所属用户(属主)
root:所属的组(属组)
权限的UGO模型(user groups others)
三组权限
属主的权限:属组的权限:其他的权限
修改文件所属 chown test tt.sh (修改文件所属用户)
修改文件的rwx chmod 777 11111111 (修改权限,777代表-rwxrwxrwx权限)
ll(查看当前文件)
total 88380
-rw-r--r--. 1 root root 1343 Feb 6 22:39 11111111
-rw-r--r-- 1 root root 0 Mar 12 08:58 tt.sh
-rw-r--r-- 1 root root 133 Mar 13 20:41 update.sh
[root@basiscs ~]# cat /etc/passwd (查看用户名,编号,组编号,家目录,命令,目录)
test:x:1000:1001::/home/test:/bin/bash
chown test tt.sh (修改文件所属用户)
-rw-r--r-- 1 test root 0 Mar 12 08:58 tt.sh
groups test (查看用户test组)
test : aaa
chown test:aaa tt.sh (修改test用户所属组用户)
-rw-r--r-- 1 test aaa 0 Mar 12 08:58 tt.sh
chmod 777 11111111 (修改权限,777代表-rwxrwxrwx权限)
ll
-rwxrwxrwx. 1 root root 1343 Feb 6 22:39 11111111
chmod o+w update.sh(追加写权限update.sh)
-rw-r--rw- 1 root root 133 Mar 13 20:41 update.sh
chmod o+x update.sh(继续追加执行权限update.sh)
-rw-r--rwx 1 root root 133 Mar 13 20:41 update.sh
mkdir test (创建文件夹)
[root@basiscs ~]# ll
drwxr-xr-x 2 root root 6 Mar 13 23:30 test
chmod 777 test/(给予test文件最高权限)
drwxrwxrwx 2 root root 6 Mar 13 23:30 test
chmod -R 777 /usr (-R代表文件夹 /usr文件夹以及里面所有文件或文件夹权限改为777 )
drwxrwxrwx. 13 root root 155 Mar 2 01:21 usr
[root@basiscs /]# cd /usr
[root@basiscs usr]# ll
total 88
drwxrwxrwx. 2 root root 20480 Mar 13 22:29 bin
drwxrwxrwx. 2 root root 6 Apr 11 2018 etc
chmod 774 tt.sh(7代表rwx 4代表只读r,2代表写w,1代表执行x)
-rwxrwxr-- 1 test aaa 0 Mar 12 08:58 tt.sh
chmod 771 tt.sh(1代表执行x)
-rwxrwx--x 1 test aaa 0 Mar 12 08:58 tt.sh
权限赋予
我们可以将管理用的权限分配给普通用户
文件位置在 vim /etc/sudoers
su test(登录test用户)
[test@basiscs root]$ vim /etc/profile (test不是root用户,$符号,并且test权限不足,不能修改profile文件,root用户#符号)
[test@basiscs root]$ ll /etc/profile
-rw-r--r--. 1 root root 1819 Oct 31 2018 /etc/profile
[test@basiscs root]$ usermod -g root test(修改test权限为root)
usermod: Permission denied.
[test@basiscs root]$ exit
[root@basiscs ~]# usermod -g root test (修改test权限为root)
[root@basiscs ~]# groups test (查看test用户组)
test : root
[root@basiscs ~]# su test (登录test用户)
[root@basiscs ~]# chmod 777 /etc/profile (修改profile文件权限为777)
[test@basiscs root]$ vim /etc/profile (即可修改profile文件)
管道与重定向
管道
将前面命令的结果作为参数传递给后面的命令
cp /etc/profile ./ppp (拷贝profile文件./当前目录,命名为ppp)
cat ppp | grep if (cat ppp显示文件内容 管道grep if显示有if的字符串)
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
......
cat -n ppp 显示ppp文件的序号
cat ppp | grep -c if (符号条件的行数)
8
ps -ef | grep postfix(ps -ef查看进程信息,管道查找进程postfix信息)
tail -F tt.sh (实时查看文件tt.sh信息)
grep -C 4 if /etc/profile (查看/etc/profile中if信息以及下四行)
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
重定向
> 替换 >> 追加
改变数据输出的位置,方向
2>是用来重定向标准错误,因为标准错误在描述符表中的fd就是2,
标准输出也可以表示为1>,不过一般简写为>。
标准错误和标准输出可以重定向到同一个地方,比如指令中的&1表示的就是标准输出,
2>&1标准错误输出重定向到标准输出
ping www.baidu.com > /root/tt.sh (数据输出到tt.sh
文件中,覆盖)
[root@basiscs ~]# ping wan > /root/tt.sh
ping: wan: Name or service not known
[root@basiscs ~]# ping wan 2> /root/tt.sh(2隐藏错误信息,必须cat才显示)
[root@basiscs ~]# cat /root/tt.sh
ping: wan: Name or service not known
[root@basiscs ~]# ping wan 1> /root/tt.sh(默认为1直接显示)
ping: wan: Name or service not known
[root@basiscs ~]# ping www.baidu.com >> /root/tt.sh & (追加搭配tt.sh文件, &表示在后台运行)
[1] 7492
[root@basiscs ~]# ping wan >> /root/tt.sh 2>&1 &(信息黑洞,见不到执行过程)
[2] 7494
[root@basiscs ~]#
[2]+ Exit 2 ping wan >> /root/tt.sh 2>&1
Linux的系统进程
进程信息
ps(pid 端口号 tty所在平台 time时间 cmd命令)
PID TTY TIME CMD
7094 pts/0 00:00:00 bash
ps -ef(显示进程信息)
UID PID PPID C STIME TTY TIME CMD
UID 所属用户
PID 当前进程编号
PPID 当前进程编号的父进程编号
ps -ef | grep redis(显示redis进程信息)
ps -aux(显示所有进程信息)
ps -aux --sort -pcpu (显示所有信息排序,字段名)
top(当前服务器内存使用率)
后台进程
ping www.baidu.com >> baidu & (& 符号代表后台运行)
jobs -l(可以查看当前的后台进程,但是只有当前用户界面可以获取到)
nohup 可以防止后台进程被挂起
nohup ping www.baidu.com >> baidu 2>&1 &
杀死进程
kill -9 PID(或者PPID)
kill -9 7492 7530 7543(-9代表强制杀,一般不加)
Linux的软件安装
vim /etc/profile
环境变量
修改文件变量文件
vim /etc/profile
vim /root/.bash_profile
当我们执行一个命令的时候,默认从当前路径开始查找
如果当前路径找不到对应的命令文件,从环境变量$PATH查找
$PATH的配置文件在 /etc/profile
window 路径与路径之间用;(分号)连接
Linux路径与路径之间用:(冒号)连接
Linux每次修改完成之后,需要重新加载文件 source /etc/profile
软件的安装方式
解压就可以使用
使用安装包安装(window-exe Linux-rpm)
自己下载安装包
使用统一的软件帮助我们安装
通过源码安装
RPM安装和压缩包解压安装
[root@basiscs ~]# ll (查看当前目录文件)
[root@basiscs ~]# rm -rf * (删除所有文件)
[root@basiscs ~]# rz (上传文件jdk-8u231-linux-x64.rpm到linux)
rpm -ivh jdk-8u231-linux-x64.rpm (安装jdk-8u231-linux-x64.rpm)
cd / (cd到根目录)
[root@basiscs /]# find -name java (找java文件)
./usr/java/jdk1.8.0_231-amd64/bin/java (java的安装目录)
./usr/java/jdk1.8.0_231-amd64/jre/bin/java
......
[root@basiscs /]# ./usr/java/jdk1.8.0_231-amd64/bin/java -version (运行java)
[root@basiscs /]# java -version (也可直接运行,自动配置环境变量)
java version "1.8.0_231"
[root@basiscs ~]# rz (上传apache-tomcat-8.5.47.tar.gz)
[root@basiscs ~]# rm -rf jdk-8u231-linux-x64.rpm (删除jdk-8u231-linux-x64.rpm安装包)
[root@basiscs ~]# cd /opt/ (进入opt目录,经常安装软件目录)
[root@basiscs opt]# mv /root/apache-tomcat-8.5.47.tar.gz ./ (将root下的安装包移到当前目录)
[root@basiscs opt]# tar -zxvf apache-tomcat-8.5.47.tar.gz (对安装包进行解压)
[root@basiscs opt]# rm -rf apache-tomcat-8.5.47.tar.gz (删除压缩包)
[root@basiscs bin]# cd /opt/apache-tomcat-8.5.47/bin/
[root@basiscs bin]# ll
[root@basiscs bin]# sh startup.sh (运行startup.sh)
浏览器中输入192.168.111.100:8080/(ip地址+端口号)
[root@basiscs bin]# sh shutdown.sh (关闭Tomcat)
[root@basiscs bin]# cd
[root@basiscs ~]# sh startup.sh (不能使用sh,直接startup.sh,由于没有配置环境变量,不能运行)
sh: startup.sh: No such file or directory
[root@basiscs ~]# vim /etc/profile (修改配置文件,最后一行加入)
第一种
export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
export PATH=$JAVA_HOME/bin:$PATH
export TOMCAT_HOME=/opt/apache-tomcat-8.5.47
export PATH=$TOMCAT_HOME/bin:$PATH
第二种
export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
export TOMCAT_HOME=/opt/apache-tomcat-8.5.47
export PATH=$JAVA_HOME:$TOMCAT_HOME/bin:$PATH
[root@basiscs ~]# source /etc/profile (修改配置文件,一定要运行加载)
[root@basiscs ~]# sh startup.sh
Cannot find ./catalina.sh
The file is absent or does not have execute permission
This file is needed to run this program
1.没在bin目录下,直接输入startup.sh,而不是sh startup.sh
2.修改权限
[root@basiscs ~]# cd /opt/apache-tomcat-8.5.47/bin/
chmod +x *.sh (增加可执行权限)
[root@basiscs ~]# chmod 222 /opt/apache-tomcat-8.5.47/bin/startup.sh (修改为只写权限)
[root@basiscs ~]# chmod 777 /opt/apache-tomcat-8.5.47/bin/startup.sh (给与满权限rwx)
[root@basiscs ~]# ll /opt/apache-tomcat-8.5.47/bin/
-rwxrwxrwx 1 root root 1904 Oct 7 21:31 startup.sh
[root@basiscs ~]# vim /etc/profile (环境变量修改错误)
[root@basiscs ~]# source /etc/profile
[root@basiscs ~]# java -version
-bash: java: command not found
[root@basiscs ~]# ll
-bash: ls: command not found
......
[root@basiscs ~]# source /etc/profile
/usr/libexec/grepconf.sh: line 5: grep: command not found
[root@basiscs ~]# reboot (只能重新启动)
[root@basiscs ~]# ll
total 0
YUM安装
yum的作用
可以帮我们管理RPM包
可以帮我们安装软件,
如果软件有其他依赖,会帮我们安装依赖后在安装软件
类似于Maven
yum命令
[root@basiscs ~]# yum search java (搜索和java相关的软件)
[root@basiscs ~]# yum search jdk (搜索jdk相关的安装包或软件)
[root@basiscs ~]# yum search mysql (搜索mysql相关的安装包)
[root@basiscs ~]# yum list (查询安装的rpm包,或者只查询某一周)
[root@basiscs ~]# yum install git (下载安装git,-y 代表yes,没写会让你确认是否继续)
[root@basiscs ~]# yum install mysql (没指认版本,下载安装默认版本)
[root@basiscs ~]# systemctl start mysqld (这样安装的mysql有带你问题,先不管)
Failed to start mysqld.service: Unit not found.
更换yum源
yum install wget -y (安装wget,wget用于网络下载资源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup(将系统原始配置文件失效)
使用Wget获取阿里yum源配置文件(二个都运行)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清空以前yum源的缓存
yum clean all
获取阿里云的缓存
yum makecache
安装Mysql数据库
[root@basiscs ~]# yum install perl net-tools -y (安装Mysql依赖【perl net-tools】)
[root@basiscs ~]# cd /opt/
[root@basiscs opt]# rz (上传mysql安装包mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar)
[root@basiscs opt]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar (解压mysql安装包)
[root@basiscs opt]# ll
[root@basiscs opt]# rm -rf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar (删除MySQL安装包)
[root@basiscs opt]# rpm -qa | grep mariadb (rpm -qa显示rpm相关信息,grep mariadb查找mariadb信息)
mariadb-5.5.68-1.el7.x86_64
mariadb-libs-5.5.68-1.el7.x86_64
#----------卸载mariadb
[root@basiscs opt]# rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64
[root@basiscs opt]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
[root@basiscs opt]# rpm -qa | grep mariadb (查看)
#----------安装mysql
版本号不对应显示错误
[root@basiscs opt]# rpm -ivh mysql-community-common-5.7.8-1.el7.x86_64.rpm
error: open of mysql-community-common-5.7.8-1.el7.x86_64.rpm failed: No such file or directory
[root@basiscs opt]# rpm -ivh mysql-community-libs-5.7.8-1.el7.x86_64.rpm
error: open of mysql-community-libs-5.7.8-1.el7.x86_64.rpm failed: No such file or directory
[root@basiscs opt]# rpm -ivh mysql-community-client-5.7.8-1.el7.x86_64.rpm
error: open of mysql-community-client-5.7.8-1.el7.x86_64.rpm failed: No such file or directory
[root@basiscs opt]# rpm -ivh mysql-community-common-5.7.8-1.el7.x86_64.rpm
error: open of mysql-community-common-5.7.8-1.el7.x86_64.rpm failed: No such file or directory
改为对应版本号
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
[root@basiscs opt]# systemctl start mysqld (启动mysql)
[root@basiscs opt]# systemctl status mysqld (查看mysql状态)
[root@basiscs opt]# cat /var/log/mysqld.log | grep password (查看密码aoV+;*qY43Aq,复制该密码)
2019-11-14T00:30:21.483073Z 1 [Note] A temporary password is generated for root@localhost:aoV+;*qY43Aq
[root@basiscs opt]# mysql -u root -p (改为uroot)
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@basiscs opt]# mysql -uroot -p
Enter password: (粘贴密码)
mysql> 执行下面命令
#----------修改Mysql密码 5.7版本输入命令:
set global validate_password_policy=LOW;
set global validate_password_length=6
alter user root@localhost identified by '123456';
#----------修改Mysql密码 8.0版本输入命令:
set global validate_password.policy=LOW;
set global validate_password.length=6;
#更改加密方式
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
#更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新权限
FLUSH PRIVILEGES; 或者mysql> flush;
#----------修改Mysql链接地址
use mysql;
update user set host='%' where user = 'root';(%代表可以使用其他工具连接mysql,不限制任何IP地址有时候ip地址连接报错)
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)
commit;
mysql> quit;(或者exit;)
Bye
[root@basiscs opt]# systemctl restart mysqld;
[root@basiscs opt]# mysql -uroot -p123456
#----------使用Navicat连接Mysql
Linux的三剑客
普通剑客
cut
用指定的规则来切分文本
[root@basiscs opt]# cut -d ':' -f1 /etc/profile (cut切割 -d代表自定义分隔符':'分隔符 -f1第一列 passwd文件)
[root@basiscs opt]# cut -d ':' -f1 /etc/passwd
root
bin
[root@basiscs opt]# cut -d ':' -f1,2 /etc/passwd
root:x
bin:x
[root@basiscs opt]# cut -d ':' -f1,2,3 /etc/passwd
root:x:0
bin:x:1
sort
对文本中的行进行排序
[root@basiscs ~]# sort /etc/passwd (显示结果进行排序)
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
wc
wc(word count)统计单词的数量
[root@basiscs ~]# wc /etc/profile
82 259 1959 /etc/profile
-l line 82 行数
-w word 以空格来分割单词 259 字数
-c char 1959 字节数
剑客1号:grep
[root@basiscs ~]# grep adm /etc/passwd(查找adm在/etc/passwd文件中)
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@basiscs ~]# cp /etc/passwd ./ (复制passwd到当前目录)
[root@basiscs ~]# grep adm /etc/passwd passwd (在多个文件中查找/etc/passwd passwd)
/etc/passwd:adm:x:3:4:adm:/var/adm:/sbin/nologin
passwd:adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@basiscs ~]# grep -n adm /etc/passwd passwd (-n显示行号)
/etc/passwd:4:adm:x:3:4:adm:/var/adm:/sbin/nologin
passwd:4:adm:x:3:4:adm:/var/adm:/sbin/nologin (-n显示行号,bash所在行号)
[root@basiscs ~]# grep -n bash /etc/passwd passwd
/etc/passwd:1:root:x:0:0:root:/root:/bin/bash
/etc/passwd:5:lp:x:4:7:lp:/var/spool/lpd:/bin/bash
[root@basiscs ~]# grep -E "[1-9]+" passwd --color=auto(正则表达式匹配1-9)
bin:x:1:1:bin:/bin:/sbin/nologin
剑客2号:sed
sed 是Stream Editor(字符流编辑器)的缩写,简称流编辑器
sed主要用于自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
shell sed命令自动获取ip脚本之家
[root@basiscs ~]# sed '2,5a ttttttttt' passwd (passwd文件2到5行 a后面添加ttttttttt)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
ttttttttt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ttttttttt
...
[root@basiscs ~]# nl /etc/passwd | sed '2,5d' (nl /etc/passwd显示行号,sed '2,5d'删除2到5行)
1 root:x:0:0:root:/root:/bin/bash
6 sync:x:5:0:sync:/sbin:/bin/sync
[root@basiscs ~]# sed '2i luckyisgood' passwd (i:insert,第二行插入luckyisgood)
root:x:0:0:root:/root:/bin/bash
luckyisgood
bin:x:1:1:bin:/bin:/sbin/nologin
[root@basiscs ~]# cat passwd (passwd内容不变,需要加-i进行保存)
[root@basiscs ~]# sed -i '2a luckyisgood' passwd
[root@basiscs ~]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
luckyisgood
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@basiscs ~]# sed '2,3a asdsds' passwd (2,3行下面添加asdsds)
[root@basiscs ~]# sed -i '2,3a asdsds' passwd (确认添加,保存添加)
[root@basiscs ~]# cat passwd
[root@basiscs ~]# sed '3~1c hehehe' passwd (第3行开始,每1行换为hehehe)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hehehe
hehehe
[root@basiscs ~]# sed '3~2c hehehe' passwd (第3行开始,间隔1行换为hehehe)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hehehe
luckyisgood
hehehe
[root@basiscs ~]# sed '3~3c hehehe' passwd (第3行开始,间隔2行换为hehehe)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
hehehe
luckyisgood
asdsds
hehehe
https://www.cnblogs.com/chensiqiqi/p/6382080.html
剑客3号:awk
https://www.cnblogs.com/chensiqiqi/p/6481647.html
模式与动作
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,$1}NR==2{print NR,$NF}' /etc/passwd