1 操作

1.1 NAT模式搭建三台能互相ping通的虚拟机

NAT模式的

文档:[和笔记对接]搭建三台能互相ping通的虚…
链接:http://note.youdao.com/noteshare?id=577aae900e9fc4a6de4c4ba109265a49&sub=D49DF6698C4C448E8AF9B5319952EE15

1.1.1 快照功能

创建备份

01.[Linux]基础 - 图1

拍摄快照就相当于 windows操作系统的创建还原点.就是备份一份儿 ,然后写名字和描述信息就完事儿了.

还原备份

http://note.youdao.com/noteshare?id=61d3287b947c027ade011d0fe4182e55&sub=B1A898BB7F45475EA13D46D55E2F9A99

2 Linux常见的文件类型

有七种:

  1. 普通文件(比如一个文本文件);
  2. 目录文件(目录也是一个特殊的文件,它用来存储文件清单,比如/也是一个文件);
  3. 可执行文件(上面的rm就是一个可执行文件);
  4. 管道文件(我们会在 07 课时讨论管道文件);
  5. Socket 文件(我们会在模块七网络部分讨论 Socket 文件);
  6. 软链接文件(相当于指向另一个文件所在路径的符号);
  7. 硬链接文件(相当于指向另一个文件的指针,关于软硬链接我们将在模块六文件系统部分讨论)。

你可以使用 ls -F 查看当前目录下的文件和它的类型:

  • 结尾的是可执行文件;

= 结尾的是 Socket 文件;

@ 结尾的是软链接;

| 结尾的管道文件;

没有符号结尾的是普通文件;

/ 结尾的是目录

2.1 设备文件

Socket 是网络插座,是客户端和服务器之间同步数据的接口。其实,Linux 不只把 Socket 抽象成了文件,设备基本也都被抽象成了文件。因为设备需要不断和操作系统交换数据。而交换方式只有两种——读和写。所以设备是可以抽象成文件的,因为文件也支持这两种操作。

Linux 把所有的设备都抽象成了文件,比如说打印机、USB、显卡等。这让整体的系统设计变得高度统一。

3 系统目录

3.1 目录介绍

在公司linux系统都是没有界面的

Linux文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
01.[Linux]基础 - 图2
常见目录说明:
/ : 根目录

/bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;

/etc: 存放系统管理和配置文件;配置环境变量什么的

/home: 除了ROOT以外,存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;

/usr : 用于存放系统应用程序;

/opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;

/proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;

/root: 超级用户(系统管理员)的主目录(特权阶级^o^);

/sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;

/dev: 用于存放设备文件;

/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;

/boot: 存放用于系统引导时使用的各种文件;

/lib : 存放着和系统运行相关的库文件 ;

/tmp: 用于存放各种临时文件,是公用的临时文件存储点;

/var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

/lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

/media : 挂在目录

3.1.1 文件列表介绍

01.[Linux]基础 - 图3
第一列(文件的属性和权限)
- (横杠) 代表文件(普通的二进制文件) d代表文件夹(directory)
l开头表示是快捷方式

rwx 是权限的意思 (r 是read 读权限 w:write 写权限 x execute 执行权限 如果没有权限就用-表示,表示省略)

linux的中的文件,比如: drwxr-xr-x 可以看做是三个部分( rwx r-x r-x ),分别是文件的所有者 rwx(user)权限. 第二部分 r-x 是所属组的权限
第三部分是其他人权限(r-x)

第二列
代表连接数
第三列
所有者,就是谁创建的
第四列
这个组是谁的
第五列
文件大小,只是参考,不太准确
后面
文件创建修改时间
最后
文件名

4 网络配置

子网掩码

子网掩码(subnet mask)又叫网络掩码地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址主机地址两部分。

网关地址

输入:
route -n 命令查看网关地址,

如果报错bash: route: command not found 就输入以下命令安装工具:

yum install net-tools — 这个命令仅仅限制centos系统.

输入 route -n 之后就能查看
01.[Linux]基础 - 图4
Gateway就是网关

这里有网关的详细解释

https://blog.csdn.net/Miss_Audrey/article/details/78771326

DNS

输入命令:
cat /etc/resolv.conf
就能查看 dns地址了.

4.1 NAT方式固定ip地址

找到下面文件夹
/etc/sysconfig/network-scripts

找到ifcfg-ensXXX类似的文件,先备份一下, 然后再开始准备修改

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 改成static
IPADDR=192.168.192.129 # 改成你需要修改的端口
NETMASK=255.255.255.0 # 子网掩码 一般是固定的
GATEWAY=192.168.192.2 # 网关地址,虚拟机安装的话 通常是 2 ,
DNS1=192.168.192.2 # dns配置 虚拟机安装的话,dns 就和网关一样就行了,
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ce826097-66ce-403d-83d4-388c7bed0718
DEVICE=ens33
ONBOOT=YES

修改完了重启网卡,输入如下命令
service network restart

参考:
https://blog.csdn.net/chianing_han/article/details/81635602

4.1.1 三种网络模式

仅主机模式

Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

桥接模式
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。

在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。

使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。

如果你想利用VMWare在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。

网络地址转换模式
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。

如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。

4.1.2 配置网络

如果有 network is unreachable 说明没有启动网卡

修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0

找到选项ONBOOT
ONBOOT=YES|NO

将ONBOOT设置为YES
ONBOOT=YES

重启
reboot

还原网络设置(VMware)

01.[Linux]基础 - 图5
01.[Linux]基础 - 图6
就会重置网卡了.

修改IP地址(VMware)

编辑 — 虚拟网络编辑器 —DHCP设置
01.[Linux]基础 - 图7
默认租用天数 和 最长租用时间 这里给天数改成最大的时间 ,最大是63天貌似是,
然后你再手动去起始IP地址那里改成原来的IP地址.

使用桥接方式联网

桥接模式是使用真实的网络,此时虚拟机的网段和自己的操作系统的网段是一样的,此时虚拟机需要占用咱们真实路由器的一个IP,这样的话,局域网内别的windows操作系统也能访问你的虚拟机了.

打开VMware找到编辑—虚拟机网络编辑器,上面有一样的,所以就简单点。
01.[Linux]基础 - 图8步骤阅读

2接上一条,怎么查看真实机上的使用什么网卡联网的呢?打开网络和共享中心—在左边点击更改适配器设置
01.[Linux]基础 - 图9步骤阅读
01.[Linux]基础 - 图10步骤阅读
01.[Linux]基础 - 图11步骤阅读
选择虚拟机连接方式
01.[Linux]基础 - 图12步骤阅读
01.[Linux]基础 - 图13步骤阅读
重启网卡和验证
01.[Linux]基础 - 图14步骤阅读

  1. 查看真实机的物理网卡信息,显示虚拟机和真实机在桥接的方式下面处于同一个局域网中

01.[Linux]基础 - 图15步骤阅读
01.[Linux]基础 - 图16步骤阅读
01.[Linux]基础 - 图17步骤阅读

还需要注意一下就是虚拟机ip和本机ip的第三个地址需要一致,如果不一致需要修改一下虚拟机的ip,建议虚拟机的ip进行固定一下
vi /etc/sysconfig/network-scripts/ifcfg-ens33

打开以后可以看到默认的配置就是dhcp,然后onboot=no,表示不会随着系统的启动而启动。我们需要修改这个配置。


01.[Linux]基础 - 图18


01.[Linux]基础 - 图19
如下图所示,将配置修改为:
BOOTPROTO=static
表示使用静态固定IP。
onboot=yes
表示网卡随着系统启动而启动。
同时在最后加上需要配置的IP地址信息。如图中所示


01.[Linux]基础 - 图20

  1. 配置完成后,我们使用命令:
  2. systemctl restart network
  3. 重新启动网卡,然后再使用ifconfig命令查看网卡信息,可以看到IP配置已经生效,然后使用ping命令ping一下百度的网站。可以看到是通的,说明IP地址配置正确。至此,两种方法配置固定IP介绍完毕。

01.[Linux]基础 - 图21


01.[Linux]基础 - 图22

使用桥接方式联网备用2

三台机器宿主机和linux虚拟机能互相ping通并且能互相联网
ens-33配置文件
01.[Linux]基础 - 图23
01.[Linux]基础 - 图24
01.[Linux]基础 - 图25
01.[Linux]基础 - 图26
网卡名字要和上面的网卡对应上

01.[Linux]基础 - 图27
注意这些东西配置问题,
首先ip网段要在一个网段, 然后就是子网掩码固定255.255.255.0 ,默认网关要和ens33配置文件配置的网卡一致,然后就是dns服务器直接就默认写这个就好了

host-only方式在虚拟几种是不能联网的

ens33不显示ip

重新启动网络:
systemctl start network.service

输入这个命令之后即可解决问题.

ens33出现多个inet的情况

看看network-scripts 下的 ifcfg-ens33开头的文件是否有多个,如果有就删除掉其它的.

01.[Linux]基础 - 图28

01.[Linux]基础 - 图29

4.1.3 windows的ip网段变了之后桥接模式修改配置让centos7连接宿主机

https://www.yuque.com/docs/share/ba5ff383-c79a-4979-a653-4f6ffc413ab3?# 《windows的ip网段变了之后桥接模式修改配置让centos7连接宿主机》

5 Linux网络

5.1 远程操作指令

远程操作指令用的最多的是ssh,ssh指令允许远程登录到目标计算机并进行远程操作和管理。还有一个比较常用的远程指令是scp,scp帮助我们远程传送文件。

5.1.1 ssh(Secure Shell)

有一种场景需要远程登录一个 Linux 系统,这时我们会用到ssh指令。比如你想远程登录一台机器,可以使用ssh user@ip的方式

5.1.2 scp

https://blog.csdn.net/qq_41489540/article/details/109081194

往别的服务器传输文件

https://blog.csdn.net/qq_41489540/article/details/109161675

使用 scp
格式:
scp 目录/文件名.文件格式 目标服务器用户名@ip地址:目标服务器目录
scp /home/um/apphome/web/um.war um@目标服务器ip:/home/um/apphome/web
注意:另一台服务器端口最好改成默认的22端口,不然会连接不上另一台服务器(你也可以在命令中加入端口),
然后提示输入密码,此时输入b服务器的ssh密码,然后回车就开始传输了

[root@1111 web]# scp /home/um/apphome/web/um.war um@目标服务器ip:/home/um/apphome/web
The authenticity of host ‘目标服务器ip (目标服务器ip)’ can’t be established.
ECDSA key fingerprint is SHA256:RXIS0zEIcytUBBHWsAOjyJKFhSMMcBHsYyQk1FhvfTo.
ECDSA key fingerprint is MD5:68:d3:c3:7f:cb:c9:6d:fc:f2:cc:53:31:56:50:e7:42.
Are you sure you want to continue connecting (yes/no)? y
Please type ‘yes’ or ‘no’: yes
Warning: Permanently added ‘目标服务器ip’ (ECDSA) to the list of known hosts.
um@目标服务器ip’s password:
Permission denied, please try again.
um@目标服务器ip’s password:
um.war 100% 198MB 5.4MB/s 00:37
[root@1111 web]#

5.2 设置ip地址对应的域名

/etc/hosts这个文件可以设置 IP 地址对应的域名

5.3 netstat

查看网络状态的场景是想看目前本机的网络使用情况,这个时候可以用netstat。

不传任何参数的netstat帮助查询所有的本地 socket,下图是netstat | less的结果。
01.[Linux]基础 - 图30
如上图,我们看到的是 socket 文件。socket 是网络插槽被抽象成了文件,负责在客户端、服务器之间收发数据。当客户端和服务端发生连接时,客户端和服务端会同时各自生成一个 socket 文件,用于管理这个连接。这里,可以用wc -l数一下有多少个socket。

01.[Linux]基础 - 图31

你可以看到一共有 615 个 socket 文件,因为有很多 socket 在解决进程间的通信。就是将两个进程一个想象成客户端,一个想象成服务端。并不是真的有 600 多个连接着互联网的请求。

5.3.1 查看 TCP 连接

如果想看有哪些 TCP 连接,可以使用netstat -t。比如下面我通过netstat -t看tcp协议的网络情况:
01.[Linux]基础 - 图32

这里没有找到连接中的tcp,因为我们这台虚拟机当时没有发生任何的网络连接。因此我们尝试从机器u2(另一台机器)ssh 登录进u1,再看一次:

01.[Linux]基础 - 图33

如上图所示,可以看到有一个 TCP 连接了。

5.3.2 查看端口占用

还有一种非常常见的情形,我们想知道某个端口是哪个应用在占用。如下图所示:
01.[Linux]基础 - 图34
这里我们看到 22 端口被 sshd,也就是远程登录模块被占用了。-n是将一些特殊的端口号用数字显示;-t是指看 TCP 协议,-l是只显示连接中的连接,-p是显示程序名称。

5.4 网络测试

当我们需要测试网络延迟、测试服务是否可用时,可能会用到ping和telnet指令。

5.4.1 ping

想知道本机到某个网站的网络延迟,就可以使用ping指令。如下图所示:
01.[Linux]基础 - 图35
ping一个网站需要使用 ICMP 协议。因此你可以在上图中看到 icmp 序号。 这里的时间time是往返一次的时间。ttl叫作 time to live,是封包的生存时间。就是说,一个封包从发出就开始倒计时,如果途中超过 128ms,这个包就会被丢弃。如果包被丢弃,就会被算进丢包率。
另外ping还可以帮助我们看到一个网址的 IP 地址。 通过网址获得 IP 地址的过程叫作 DNS Lookup(DNS 查询)。ping利用了 DNS 查询,但是没有显示全部的 DNS 查询结果。

5.4.2 telnet

有时候我们想知道本机到某个 IP + 端口的网络是否通畅,也就是想知道对方服务器是否在这个端口上提供了服务。这个时候可以用telnet指令。 如下图所示:01.[Linux]基础 - 图36
telnet 执行后会进入一个交互式的界面,比如这个时候,我们输入下图中的文字就可以发送 HTTP 请求了。
01.[Linux]基础 - 图37

上面GET 和 HOST这两行是我输入的。 拉勾网返回了一个 301 永久跳转。这是因为拉勾网尝试把http协议链接重定向到https。

5.4.3 DNS 查询

我们排查网络故障时想要进行一次 DNS Lookup,想知道一个网址 DNS 的解析过程。这个时候有多个指令可以用。

5.4.4 host

host 就是一个 DNS 查询工具。比如我们查询拉勾网的 DNS,如下图所示:

01.[Linux]基础 - 图38

我们看到拉勾网 www.lagou.com 是一个别名,它的原名是 lgmain 开头的一个域名,这说明拉勾网有可能在用 CDN 分发主页(关于 CDN,我们《计算机网络》课程见)。
上图中,可以找到 3 个域名对应的 IP 地址。
如果想追查某种类型的记录,可以使用host -t。比如下图我们追查拉勾的 AAAA 记录,因为拉勾网还没有部署 IPv6,所以没有找到。

01.[Linux]基础 - 图39

5.4.5 dig

dig指令也是一个做 dns 查询的。不过dig指令显示的内容更详细。下图是dig拉勾网的结果。
01.[Linux]基础 - 图40
从结果可以看到www.lagou.com 有一个别名,用 CNAME 记录定义 lgmain 开头的一个域名,然后有 3 条 A 记录,通常这种情况是为了均衡负载或者分发内容。

5.5 HTTP 相关

5.5.1 curl

如果要在命令行请求一个网页,或者请求一个接口,可以用curl指令。curl支持很多种协议,比如 LDAP、SMTP、FTP、HTTP 等等。
我们可以直接使用 curl 请求一个网址,获取资源,比如我用 curl 直接获取了拉勾网的主页,如下图所示:

01.[Linux]基础 - 图41

如果只想看 HTTP 返回头,可以使用curl -I。

另外curl还可以执行 POST 请求,比如下面这个语句:

shell命令:
curl -d ‘{“x” : 1}’ -H “Content-Type: application/json” -X POST http://localhost:3000/api

curl在向localhost:3000发送 POST 请求。-d后面跟着要发送的数据, -X后面是用到的 HTTP 方法,-H是指定自定义的请求头。

6 软件

6.1 RPM

rpm提供了功能:

  1. 查询是否已经安装了某个软件包;
  2. 查询目前安装了什么软件包;
  3. 给定一个软件包,进行安装;
  4. 删除一个安装好的软件包。

    6.2 yum

yum的全名是 Yellodog Updator,Modified。 看名字就知道它是基于Yellodog Updator这款软件修改而来的一个工具。yum是 Python 开发的,提供的是rpm包,因此只有redhat系的 Linux,比如 Fedora,Centos 支持yum。yum的主要能力就是帮你解决下载和依赖两个问题。
下载之所以是问题,是因为 Linux 生态非常庞大,有时候用户不知道该去哪里下载一款工具。比如用户想安装vim,只需要输入sudo yum install vim就可以安装了。yum的服务器收集了很多linux软件,因此yum会帮助用户找到vim的包。

另一方面,yum帮助用户解决了很多依赖,比如用户安装一个软件依赖了 10 个其他的软件,yum会把这 11 个软件一次性的装好。

7 配置Host

https://zjj1994.blog.csdn.net/article/details/116400827

8 解压ZIP文件[已经发到csdn]

https://blog.csdn.net/qq_41489540/article/details/109239989

安装支持ZIP的工具
yum install -y unzip zip
解压zip文件
unzip 文件名.zip
压缩一个zip文件
zip 文件名.zip 文件夹名称或文件名称

9 其它

9.1 date时间输出

用法:
date[选项]…[+格式]

列子:

[root@root ~]# date “+%Y-%m-%d”
2013-02-19
[root@root ~]# date “+%H:%M:%S”
13:13:59
[root@root ~]# date “+%Y-%m-%d %H:%M:%S”
2013-02-19 13:14:19
[root@root ~]# date “+%Y%m%d %H:%M:%S”
2013_02_19 13:14:58
[root@root ~]# date -d today
Tue Feb 19 13:10:38 CST 2013
[root@root ~]# date -d now
Tue Feb 19 13:10:43 CST 2013
[root@root ~]# date -d tomorrow
Wed Feb 20 13:11:06 CST 2013
[root@root ~]# date -d yesterday
Mon Feb 18 13:11:58 CST 2013

给定的格式FORMAT 控制着输出,解释序列如下:
%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%c 按年计的日期(001-366)
%k 时(0-23)
%l 时(1-12)
%m 月份(01-12)
%M 分(00-59)
%n 换行
%N 纳秒(000000000-999999999)
%p 当前locale 下的”上午”或者”下午”,未知时输出为空
%P 与%p 类似,但是输出小写字母
%r 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)

默认情况下,日期的数字区域以0 填充。
以下可选标记可以跟在”%”后:

  • (连字符)不填充该域
    _ (下划线)以空格填充
    0 (数字0)以0 填充
    ^ 如果可能,使用大写字母
    # 如果可能,使用相反的大小写

在任何标记之后还允许一个可选的域宽度指定,它是一个十进制数字。
作为一个可选的修饰声明,它可以是E,在可能的情况下使用本地环境关联的
表示方式;或者是O,在可能的情况下使用本地环境关联的数字符号。

9.2 输出重定向

符号是覆盖写 ,将输出的内容保存到文件里面 ,如果没写路径就在当前路径的文件夹下面生成文件并保存,如果写了绝对路径,那么就在这个路径下生成文件保存信息.,

  1. 当执行一个命令时,如果此条命令有输出,可以使用 > 符号,讲输出定向到某个文件中
    此时标注输出就不向屏幕输出了!

01.[Linux]基础 - 图42

9.2.1 2. Linux中的IO设备

  1. linux中,有三个常用的IO设备<br /> 0 代表标注输入。类似Java中的System.in.scan()<br /> 用于接受用户的输入<br /> 1: 代表标注输出。类似Java中的System.out.print()<br /> 用于接受程序的标注输出(正常输出,也就是不报错的输出)<br /> 2: 代表错误输出。类似Java中的System.err.print()<br /> 用于接受程序报错时输出的信息
  2. /dev/null : 俗称黑洞,如果输出中消息不希望使用,可以定向输出到此设备,例子: pwd > /dev/null
  3. 命令 > 文件: 执行命令,将命令的标注输出定向到文件中!<br /> 命令 > 文件 等价于 命令 1> 文件
  4. pwd 2> c.log pwd的错误消息定向到c.log,没有报错,消息还是使用标注输出在控制台输出!<br /> pwd 1> c.log 2> c.log 等价于 pwd 1> e.log 2>&1 pwd程序的标注输出和错误输出都输出到c.log ,& 的意思是为了引用. 如果你写 pwd 1> e.log 2>1 的话,目标文件夹下会生成名字为1的文件.

错误输出输出到指定文件里面
01.[Linux]基础 - 图43

9.3 在所有的地方都能运行特定的脚本

Linux在任意目录下执行指定的脚本

还没发布
https://editor.csdn.net/md?articleId=109099887

10 rsync

Linux之rsync增量拷贝工具 使用
https://blog.csdn.net/qq_41489540/article/details/109081656

同步分发脚本
https://blog.csdn.net/qq_41489540/article/details/109094046

11 Xcall

https://blog.csdn.net/qq_41489540/article/details/109094840

12 netcat

netcat是 一台机器往另一台机器上通讯的小工具 ,通过监听端口和往端口进行推送内容
https://blog.csdn.net/qq_41489540/article/details/109229316

13 //*

14 CentOS7

14.1 操作

14.1.1 切换root用户

可以使用如下命令从普通用户切换到root用户: su root 键入回车后,系统提示输入密码 输入你平时登录的密码
vi XXX 编辑文件
esc :q! 不保存退出文件
esc:wq 保存文件并退出

14.1.2 防火墙

两种防火墙区别
https://blog.csdn.net/weixin_40658000/article/details/78708375

systemctl stop firewalld.service #停止firewall (centos7的防火墙)
firewall-cmd —state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running,注意,—state前面有空格)
systemctl disable firewalld.service #禁止firewall(防火墙)开机启动

//**

一、iptables防火墙
1、基本操作
# 查看防火墙状态
service iptables status
# 停止防火墙
service iptables stop
# 启动防火墙
service iptables start
# 重启防火墙
service iptables restart
# 永久关闭防火墙
chkconfig iptables off
# 永久关闭后重启
chkconfig iptables on  
2、开启80端口
vim /etc/sysconfig/iptables
# 加入如下代码
-A INPUT -m state —state NEW -m tcp -p tcp —dport 80 -j ACCEPT
保存退出后重启防火墙
service iptables restart
二、firewall防火墙
1、查看firewall服务状态
systemctl status firewalld
出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态
firewall-cmd —state
3、开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
4、查看防火墙规则
firewall-cmd —list-all
5、查询、开放、关闭端口
# 查询端口是否开放
firewall-cmd —query-port=8080/tcp
# 开放80端口
firewall-cmd —permanent —add-port=80/tcp
# 移除端口
firewall-cmd —permanent —remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd —reload

参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、—permanent:表示设置为持久;
3、—add-port:标识添加的端口;

14.1.3 centos 7 初次安装没有ip问题

因为centos7默认网卡未激活,激活网卡:在文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中
进入编辑模式,将 ONBOOT=no 改为 ONBOOT=yes,就OK

1、切换目录到: cd /etc/sysconfig.network-scripts;输入ls查看。
2、对ifcfg-ens33文件进行编辑,输入:vi ifcfg-ens33 将ONBOOT=no改为ONBOOT=yes,输入esc :wq保存退出。
重启网卡服务 service network restart
测试确认ping www.baidu.com,确认网络恢复正常。

14.1.4 重启网络服务

网卡文件修改后,需要重启网络服务,输入如下命令
systemctl restart network
01.[Linux]基础 - 图44

14.1.5 改虚拟机主机名字

https://www.yuque.com/docs/share/3dafaff2-f2fc-4bdd-b1a0-4b2d663b8566?# 《Linux修改虚拟主机名字_张俊杰 的博客-CSDN博客》

14.2 安装问题

14.2.1 安装固定ip(图形化界面)

安装CentOS7 有个很坑的问题就是安装完了需要配置那些ip地址,因为不是专业运维人士,配置起来很麻烦,所以需要在一开始安装的时候就先配置好了,否则很麻烦

新建虚拟机向导时候一定要使用桥接网络

01.[Linux]基础 - 图45

  1. 桥接网络:相当于虚拟机和宿主机连在一台Hub上;虚拟机必须配置IP地址,子网掩码,网关,DNS等,而且必须和宿主机处于同一网段。配置好之后,虚拟机能够联通宿主机和访问网络,实际上就相当于一台主机;

  2. NAT:平时用的较少,这种情况下虚拟机不用手动配置IP地址等;

  3. 仅主机模式:几乎没有过,相当于一个封闭网络,不能访问网络,据 说病毒测试时很牛掰。
    然后安装完了会有安装信息摘要
    配置时候需要配置 网络和主机名 以太网一定要打开,不然后期很棘手
    01.[Linux]基础 - 图46
    01.[Linux]基础 - 图47

    14.2.2 安装镜像出现黑屏

    用VMware安装Centos7直接黑屏
    01.[Linux]基础 - 图48
    点击之后就出现黑屏
    01.[Linux]基础 - 图49

解决过程
原因是BIOS的Virtualization Technology设置被禁止了,需要进入BIOS将其设置为Enabled。(不同电脑进入BIOS的方法不尽相同,请网上查阅对应电脑型号的进入BIOS的方法)
01.[Linux]基础 - 图50
01.[Linux]基础 - 图51
01.[Linux]基础 - 图52

14.3 桥接模式新安装的centos重新配置让虚拟机和宿主机互相pint通

https://www.yuque.com/docs/share/7d87f829-9923-42db-b11c-cb8ccfa82448

14.4 Nat模式让宿主机和虚拟机互相Ping通

01.[Linux]基础 - 图53
noboot改成 yes
bootproto工程static
gateway和ipaddr网段要求一致,然后就是Vm Ware虚拟网络编辑器NAT设置网关ip一定要和上面配置文件Gateway一致
01.[Linux]基础 - 图54

01.[Linux]基础 - 图55

14.5 vim编辑器的使用

14.5.1 安装vim编辑器

http://note.youdao.com/noteshare?id=1127c1a7e429fd45c258a5ccd96097f7

14.5.2 vim简单介绍

vim编辑器是系统自带的文本编辑器,要修改某个文本文件,不可能像WINDOWS那样操作

14.5.3 退出vim编辑器

退出编辑器又分为4种情况:保存退出、正常退出、不保存退出及强制退出
保存退出 : 按 esc : wq 回车 解读: W: write 写入 Q: quit 退出

其实,保存退出还有二个方法:

A:在最后输入命令时,直接输入”x”,也是一样的,即X=WQ。

B:最快捷的方法:按了ESC后,直接按shift+zz,或者切换到大写模式按ZZ,就可以保存退出了,即是按2下大写的Z。

正常退出 正常退出有个前提条件是:打开的文本文件在内容上没有被改动过

按了 ESC 输入 : (冒号) 输入 q

不保存退出
先按ESC,再输入冒号,在输入命令时,直接输入”q!”,如图

14.5.4 vim的编辑操作

1、首先vim 文件名进入文件进行编辑!

  1. 然后会出现光标此时是初始模式还不能进行写入下面是初始模式的操作
  2. dd 删除当前行
  3. dnd 也就是d 行数 d 例如 d20d就删除了20
  4. u 撤销执行,类似于windowsctrlz
  5. x 删除一个字母往后面删
  6. X 删除一个字母从前面删
  7. yy 复制光标当前的行
  8. p 粘贴复制的行
  9. dw 删除一个词
  10. yw 复制一个词
  11. Shift+4 跳转到光标的末尾
  12. Shift+6 跳转到光标的开始
  13. 然后就是我们的编辑模式了
  14. i 在光标的前面进行编辑,按下i之后就可以在光标前面写东西了
  15. a 在光标的后面进行编辑,按下i之后就可以在光标后面写东西了
  16. o 在光标的下一行进行编辑,按下i之后就可以在光标下一行写东西了
  17. 最后是命令模式
  18. 需要按一下Esc然后写入
  19. :w 保存
  20. :q 退出(如果未保存就退出的话则会警告不能退出)
  21. :q! 强制退出(这样就能直接暴力的退出编辑模式)
  22. :wq 保存并且退出
  23. :set nu 显示行号
  24. :set nonu 关闭显示行号
  25. :%s/old/new 替换(例如替换其中的oldnew,%s/原字符/新字符)
  26. /查找的字符 查找(例如/root)然后按n查找下一个,N查找上一个
  27. :noh 取消查找状态

14.6 其他操作

14.6.1 设置网段

01.[Linux]基础 - 图56
专门编辑网络
01.[Linux]基础 - 图57

01.[Linux]基础 - 图58
01.[Linux]基础 - 图59
设置完了点应用 再点确定就行了

01.[Linux]基础 - 图60

14.6.2 固定Linux的IP地址

图形界面化方式
从这里查找下面图2
01.[Linux]基础 - 图61
或者找右上角电脑图标右键
01.[Linux]基础 - 图62
注意 eth4 有的可能是eth3
01.[Linux]基础 - 图63

点击apply就行了, 不需要重启虚拟机
效果
01.[Linux]基础 - 图64
也可以看看这个
https://blog.csdn.net/rossisy/article/details/77855798

14.6.3 忘记root密码

没试过 可以试试

14.7 部署项目到Linux流程

14.7.1 基本

  1. 在yml文件修改数据库连接配置信息

  2. 进入项目文件夹位置
    D:\JavaExploit\WriteCodeWorkSpace\IDEAWorkSpace\xlmu\mergency_code2.0
    01.[Linux]基础 - 图65
    输入以下命令进行打包
    mvn clean install

打完看看 target 里面就会有
01.[Linux]基础 - 图66

前端页面接口路径可能都得需要修改成这样的,说不定,也许不改
01.[Linux]基础 - 图67

Linux目录下部署war包
https://blog.csdn.net/hellowangchaochao/article/details/73223773
1打完war包需要在项目中部署了. :
Linux 进入 /data/apache-tomcat-8.5.32/bin
目录下输入 ./shutdown.sh 停止服务
再输入 ps -ef|grep java 查看状态
01.[Linux]基础 - 图68

如题 tomcat已经关闭了
2 删除tomcat原来你部署的项目 去 /data/apache-tomcat-8.5.32/webapps 里面查找
删除war包和对应的已经解压的文件夹
3然后将你打包好的war包上传到webapps目录下,可能需要修改名字 修改ROOT.war
/data/apache-tomcat-8.5.32/webapps

然后看看你那些yml文件配置信息写的对不对,如果不对需要修改一下

4重启tomcat(重启tomcat相当于容器将war包编译解析出来成工程目录)

Linux 进入 /data/apache-tomcat-8.5.32/bin
./startup.sh
5.调试需要查看tomcat的实时日志
切换到tomcat文件夹下的logs 然后运行tail -f catalina.out这样运行时就可以实时查看运行日志了
Ctrl+c 是退出tail命令。

14.7.2 不需要nginx部署前后端分离项目

把前端项目直接放到后台项目的webapp文件夹下即可…

14.7.3 SpringBoot项目部署到tomcat7

详细的查看码云的一个项目 或者下面的说明

14.7.4 用jar方式部署SpringBoot项目到Linux上

启动项目

nohup java -jar guns.jar >guns.log 2>&1 & —这种命令关闭crt终端项目不会停止(优先使用这个)

java -jar guns.jar >guns.log 2>&1 & —这种命令如果关闭crt终端项目就会停止
解读:
java -jar jar包名字.jar >日子名字.log 2>&1 &

然后输入命令: jobs -l 查看进程:
01.[Linux]基础 - 图69
running 就是启动状态

然后 访问项目 IP加端口 名字 就可以访问项目了./参考下面:
http://120.79.13.252:8080/login
以下内容参考链接:
http://note.youdao.com/noteshare?id=819e9c86c7c08f6560e09e1ef565ebe2&sub=wcp1564109563149849

关闭项目

输入命令: jobs -l 查看进程(如果不好用就换一个netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况
):

01.[Linux]基础 - 图70

直接 kill -9 加进程号 强杀即可
再 jobs -l 查看一下 估计就没那个进程了.

查看tomcat输出日志

因为启动命令是用的

nohup java -jar guns.jar >guns.log 2>&1 &

后面的 guns.log 意思是在平级的目录下创建一个 guns.log 文件 来记录日志, 用可视化软件打开
01.[Linux]基础 - 图71

此时可以查看tomcat的输入日志
01.[Linux]基础 - 图72

我认为的缺点

  1. 部署麻烦 需要 在上传jar包之前的地方创建个文件夹 然后给jar包扔进去, 同时得输入启动命令启动
  2. 关闭必须得先查看进程再 kill-9 杀进程
  3. 每个项目只能绑定一个端口. 这个端口是根据yml配置文件配置的. 我猜想,因为SpringBoot内置的tomcat.端口用的是内置的tomcat的端口. 多个项目如果用一个端口,应该会出现端口冲突的问题.
  4. 端口号是根据yml文件来配置的,同时输入时候不需要输入war包的名字即可访问

01.[Linux]基础 - 图73

14.8 杀死进程号后还一直存在

当时启动SpringBoot项目之后 出现端口号被占用的情况,
当时SpringBoot项目是 8183端口号

我直接 ps -ef|grep 8183之后找到对应的pid进行kill-9杀掉, 再执行 ps -ef|grep 8183 发现端口号一直变动,最后解决办法是

ps -ef|grep java 找到对应的pid进行杀掉,即可

14.9 移植镜像

打开vmx文件就会移植过来,然后需要修改内存,开机虚拟机点击我已复制该虚拟机

15 安装第三方应用

15.1 安装nginx

尝试了好用
https://blog.csdn.net/zjh_746140129/article/details/79017448

http://note.youdao.com/noteshare?id=ca60b570df4114ddee6086b8d505ee07

没尝试过
http://note.youdao.com/noteshare?id=dc7d06d3ef340a08921f962ffd9b689c

15.2 安装jdk

15.2.1 基本步骤

https://zjj1994.blog.csdn.net/article/details/116399710

15.2.2 查看JDK安装位置

echo $JAVA_HOME

如果没安装环境变量的话用上面命令是没有效果的,可以尝试下面的方式:

which java

01.[Linux]基础 - 图74

15.2.3 配置JAVA_HOME到profile文件里面(配置环境变量)

先找到jdk安装位置.如果是rpm方式 可以用 which java的方式去查找jdk安装位置,
然后vim /etc/profile 的配置文件

在末尾添加
注意修改JAVA_HOME的路径为自己的,其它原封不动即可

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

最后输入命令激活配置文件
# source /etc/profile

查看jdk是否安装成功
# java -version

15.2.4 error: File not found by glob: ?—force

名字不存在,或者可能有非法字符
解决办法就是改个名字重新尝试执行命令安装

15.2.5 卸载jdk

1、查看已安装的jdk 查看名字
rpm -qa|grep jdk
01.[Linux]基础 - 图75

2、卸载jdk
rpm -e —nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
rpm -e —nodeps 后面跟jdk的名字(就是上面查询出来的jdk)
01.[Linux]基础 - 图76

15.2.6 查找rpm安装的jdk的安装位置

比较可靠的做法是:
1、先查找当前系统用rpm方式安装的jdk包名有那些, 执行命令
rpm -qa | grep jdk
2、复制刚安装的jdk包名,执行命令
rpm -ql jdk包名 | grep bin
最后就可以找到安装jdk的bin目录

15.3 安装tomcat

注意,需要在安装完成jdk后才能进行安装tomcat
这个是tomcat7 的
https://www.cnblogs.com/kongnie/p/7827338.html

下面是tomcat8的
下载安装tomcat(http://tomcat.apache.org/)我这边是下载的apache-tomcat-8.0.50.tar.gz

01.[Linux]基础 - 图77
01.[Linux]基础 - 图78

下载完了放在linux系统里面,在tomcat存放目录下开始解压

tar -zxvf apache-tomcat-8.0.50.tar.gz

15.4 Centos7安装MySQL8

Centos7安装MySQL8
https://www.yuque.com/docs/share/583fb0fd-aa9f-40b1-9bd2-7e11adda7d50?#

15.4.1 卸载MySQL

https://www.yuque.com/docs/share/46819982-0f2f-4793-ab1a-957ca41c2585?#

15.4.2 卸载Mysql

完全卸载

//rpm包安装方式卸载
查包名:rpm -qa|grep -i mysql
删除命令:rpm -e –nodeps 包名
//yum安装方式下载
1.查看已安装的mysql
命令:rpm -qa | grep -i mysql
2.卸载mysql
命令:yum remove mysql-community-server-5.6.36-2.el7.x86_64
查看mysql的其它依赖:rpm -qa | grep -i mysql
//卸载依赖
yum remove mysql-libs
yum remove mysql-server
yum remove perl-DBD-MySQL
yum remove mysql