Linux

1、简介

什么是linux

Linux是一个操作系统,例如我们的windows、macOS

image-20221109193852945

2、快速入门

1:根目录下的文件

我们利用指令(cd)来跳转到根目录然后查看(ls)根目录中的所有文件夹

image-20221111100050079

bin

Binary ,二进制指令,链接目录,链接到了user目录下的bin,直接可以执行的全部命令(例如我们用到的:cd,ls )

Sbin

SystemBinary,系统级二进制命令,链接目录,链接到了user目录下的sbin

lib

重要的系统库文件

dev

device 设备管理文件中心

etc

系统管理所对应的配置文件

home

个性化的用户数据文件

root

root用户的主目录

opt

无所谓的目录

media

如果有其他可以动的媒体设备例如其他硬盘,U盘插入设备时,系统将自动把这些设备挂载到media目录下

tmp

临时文件,可对其内容进行操作

2、VIM编辑器

在命令行下直接输入vim XXX文件即可进入一般模式,一般模式主要操作位删除,复制,粘贴

倘若我们要进入编辑模式就可以输入i,进入命令模式则可以输入:

image-20221111110825462

普通模式:

在普通模式下按下yy即可对本行进行复制,按下数字yy即是复制连同本行在内的下面数字行

按下p即可对上一次的复制进行粘贴,按下数字p即可粘贴上面复制的文字的数字倍复制内容

3、目录相关命令学习

目录管理

  • 绝对路径:C:\Users\15754\Desktop\markdown\linux.md
  • 相对路径:倘若在markdown文件夹下那么linux.md文件的相对路径就叫做/linux.md

cd:切换目录命令

cd ./:当前目录

cd .. (中间有空格!) :返回上一级目录

cd ~ : 回到当前用户的主目录

pwd: 显示当前用户所在的目录

image-20221111234557784

ls(列出目录)

image-20221111234836115

在Linux中ls是最最最常被使用的

参数:

  • -a : all ,查看所有文件,包括隐藏文件
  • -l : 列出所有文件,包含文件上的属性和权限,没有隐藏文件
  • image-20221111235510879

cd 命令 切换目录

cd 目录名(绝对路径都是以/开头的,相对路径是对于当前目录该如何寻找../../)

mkdir:

  • 直接跟目录名:创建目录
  • -p /目录1/目录1中的目录2/目录2中的目录3:递归创建目录

rmdir

rmdir:仅能删除空目录,若目录下还有文件则必须删除文件,递归删除多个目录 -p

image-20221112003535531

cp: 复制文件

cp -r 目标文件 目标文件将要进入的文件

rm(移除文件或者目录!)

  • -f 忽略不存在的文件,不会出现警告,强制删除!
  • -r 递归删除目录!
  • -i 互动,询问是否删除

删库跑路

1
rm -rf  // 系统中的所有文件都被删除了

mv(移动文件或目录)

  • -f:强制移动
  • -u 只替换已经更新过的文件

倘若这个目标文件不存在,则该指令相当于改名,将被移动的文件改名为目标文件的名称

image-20221112145508407

image-20221112145811372

4、文件属性的查看和修改

查看文件权限

image-20221113122022232

实例中,根目录下的文件第一个bin文件红框中的首字母为l表示为链接文档首字母为d表示为改文件是一个目录文件首字母为-则表示是一个文件

后面的九个字母表示中的三个字母分别为:r(Readable)可读,w(Writable)可写,x(Executable)可执行,三个为一组,每一组代表着不同的人员

image-20221113122700075

image-20221113123251505

红框中从左往右依次是 文件个数,拥有者,所属群组

再往后的一列表示文档容量大小,单位为字节;后面的事件表示为文件最后修改时间

image-20221113123639596

而图中的最后一列表示为文件名称,以 . 开头的为隐藏文件

更改文件属性

  • 更改文件名属组 chgrp -r 属组名 文件名
  • 更改文件拥有者,同事更改属组
    • chown -r 拥有者名 文件名
    • chown -r 拥有者名 属组名 文件名
  • 更改文件的九个属性(rwx)Chmod
    • chmod [-R] xyz
    • Linux文件属性有两个设置值方法一个事数字,另一种是符号
    • Linux文件属性基本权限就只有9个,分别是Owner/group/others撒种身份各有自己的read/write/execute权限
    • rwx我们可以用数字来代表各个权限 r:4 w:2 x:1
    • 每个身份中的各自三个权限(r/w/x)分数是需要累加的,例如[***-rwxrwx—]***代表着
      • owner = rwx =4+2+1=7
      • group= rwx =4+2+1=7
      • other=- - - = 0+0+0=0
    • image-20221119145449338

5、文件内容查看

Linux系统中使用以下命令来查看文件内容、

  • cat 由第一行开始显示文件内容

image-20221123013422257

  • tac 与cat相反,tac从字母排列也是与cat相反,功能也是如此,由最后一行开始显示文件内容(和上图相比,顺序完全相反)

image-20221123013504616

  • nl 显示的时候顺便输出行号

image-20221123013605614

  • more 一页一页的显示文件内容(空格代表翻页,enter代表向下看一行,:f 行号 q命令直接退出, 向下查询字符串:/要查询的字符串,向上查询字符串:?要查询的字符串 当查询到后 小写n是向下寻找查询到的,大写N是向上查询查询到的)

  • less 与more功能相似,但是less可以向后翻页(空格翻页,上下键可以翻动页面 q命令直接退出)

  • head 只看头几行 (head -n 行数 文件名)

  • tail 只看尾几行(tail -n 行数 文件名)

image-20221123014748610

网络配置目录 / etc/ sysconfig/networdk -scripts (centOS7 )

查看网络配置命令 ifconfig

6、软连接和硬链接

Linux的链接分为两种:硬链接和软连接

  • 硬链接:A——B,假设A是B的硬链接,那么他们两个指向同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制来建立硬链接到一些重要文件是以防误删
  • 软链接:类似Windows下的快捷方法,删除源文件,快捷方式也没了(与硬链接的区别)

touch 创建文件命令

image-20221125020115962

image-20221125020129997

echo 字符串 >> 文件 1:向文件1中输出字符串

image-20221125020430484

image-20221125020747396

7、vim

vim编辑器,vim可以通过一些插件实现与IDE一样的功能,vim是vi发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便变成的功能特别丰富,在程序员中被广泛使用,尤其是Linux中,必须要学会Vim(查看内容、编辑内容、保存内容)

简单来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方

vim则可以说是程序开发者的一个很好用的工具

所有的Unix Like系统都会内建一个vi文书编辑器,其他的文书编辑器则不一定会存在

如何进入vim

1
vim zhangLinux.txt //创建一个叫zhangLinux的文本文件

vim分为三种模式:命令模式,输入模式、底线命令模式:

  • 命令模式

用户刚刚启动vi/vim时就会进入命令模式

此状态下敲击键盘的动作就被识别为Vim命令,而并非输入字符。比如我们按下i,会被当作指令,通常有以下指令

  • i 切换到输入模式,以输入字符
  • x 删除当前光标所在处的字符
  • : 切换到底线命令模式,以在最底一行输入指令

若要编辑文本:启动vim,进入命令模式,按下i进入输入模式

命令模式只有一些最基本的命令,因此仍然要靠底线命令模式输入更多指令

如果想退出那就esc然后就退出到命令模式这时 输入:就会进入底线命令模式

  • w 保存文件
  • q 退出程序
  • wq 保存文件并退出程序

当我们想继续写文件时,我们就可以直接使用vim +文件名继续编写文件,但一旦发现系统又新创建了一个文件,不必怀疑是我们在打开文件的时候文件名输入有问题

image-20221213015304162

进入命令模式 查看行号 set nu

8、磁盘管理

1
df -h (列出文件系统整体的磁盘使用量,-h为使用量的单位显示为M或G)  du(检查磁盘空间使用量)

9、进程管理

  1. 再Linux中,每一个程序都是有自己的一个进程,每一个进程都有对应的一个ID号
  2. 每一个进程,都会有一个父进程
  3. 进程可以有两种存在的方式:前台运行,后台运行
  4. 一般服务均是后台运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ps  (查看当前系统中正在执行的各种进程的信息)
- a 显示当前终端运行的所有进程的信息
- u 以用户的信息显示进程
- x 以显示后台运行进程的参数
ps -aux 查看所有进程

| 再linux中被叫做管道符 A|B ,A执行的结果作为B的参数进行输出
grep 查找文件中符合条件的字符串
例如 查看mysql 的进程服务
ps -aux|grep mysql
ps -ef 查看父进程的信息
ps -ef|grep mysql 查看mysql父进程的信息
pstree -p 显示父ID
pstree -s 显示用户组

强制结束进程
kill -9 XX(进程ID)

10、rpm安装java

​ 检查一下系统中JDK的版本

1
java -version

然后检查出JDK自带的安装包

1
rpm -qa | grep java

将JDK自带的安装包进行卸载删除

1
rpm -e --nodeps 由第二步所获得的包

在线下载JDK安装包,下载到 /usr/local/目录下存jdk压缩包

1
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm 

对包进行解压安装

1
rpm -ivh 包名

然后开始配置环境变量

/etc/profile是配置环境变量的文件

我们vim 进入

然后进行配置

1
2
3
4
5
export JAVA_HOME=/usr/local/jdk1.8.0_11      
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

11、安装TOMCAT

首先我们在浏览器中 下载 TOMCAT,现在文件后缀名为tar.gz的包

然后对其进行提取,倘若提取到桌面上了那么我们就可以通过剪切指令将文件放到我们提前创建好的文件中

这一步下载安装就完成了

  • 可以用以下命令,来查看服务器的防火墙状态。
1
systemctl status firewalld
  • 直接关闭防火墙
1
systemctl stop firewalld
  • 防火墙开放8080端口
1
firewall-cmd --permanent --add-port=8080/tcp
  • 然后需要重启防火墙(不然不会生效)
1
systemctl restart firewalld

然后我们进入到TOMCAT的bin包中的

里面有一个startup.sh我们需要用sh指令对其进行TOMCAT的开启

image-20221219141543536

当我们访问localhost:8080,当出现下图时,TOMCAT配置成功

image-20221219141939340

问题总结:

docker 中的 MySQL容器远程连接不上:

经常遇到的问题就是,image-20230417222510608

WARNING: IPv4 forwarding is disabled. Networking will not work.

1
2
3
4
5
6
7
IPV4网络不可用,所以要配置IPV4网络可用

vi /usr/lib/sysctl.d/00-system.conf
#向其中插入
net.ipv4.ip_forward=1
#重启网络
systemctl restart network

还有一种情况就是 远程连接不到 Linux虚拟机 这时候我们需要配置一下网卡 ,查看是否和本机网卡在同一网段下如果在,我们再去ifconfig,然后会发现没有ens33网卡,这时候需要我们重启网络管理器

1
2
3
4
5
systemctl stop NetworkManager

systemctl disable NetworkManager

systemctl start network.service

然后就可以咯

如果在docker 中创建的容器没有yum 、vim 这些指令怎么办?

1
2
3
apt-get update
apt install yum
apt install vim