Linux

Linux_第1张图片

文章目录

      • 一、引言
        • 1.1 开发环境
        • 1.2 生产环境
        • 1.3 测试环境
        • 1.4 操作系统的选择
      • 二、Linux介绍
        • 2.1 Linux介绍
        • 2.2 Linux的版本
        • 2.3 Linux和Windows区别
      • 三、Linux安装
        • 3.1 安装VMware
        • 3.2 安装Xterm
        • 3.3 在VMware中安装Linux
          • 3.3.1 选择安装方式
          • 3.3.2 指定镜像方式
          • 3.3.3 选择操作系统类型
          • 3.3.4 指定虚拟机名称
          • 3.3.5 磁盘存储方式
          • 3.3.6 指定虚拟机配置
          • 3.3.7 开始安装CentOS
          • 3.3.8 配置虚拟机网络连接
          • 3.3.9 开始安装
          • 3.3.10 安装成功
        • 3.4 使用Xterm连接Linux
          • 3.4.1 查看ip地址
          • 3.4.2 通过Xterm连接
      • 四、Linux的目录结构
      • 五、Linux的基本命令
      • 六、Linux目录命令【`重点`】
        • 6.1 列出目录
        • 6.2 切换目录
        • 6.3 创建目录
        • 6.4 删除目录
        • 6.5 复制目录
        • 6.6 移动、重命名目录
      • 七、Linux的文件命令【`重点`】
        • 7.1 创建文件
        • 7.2 编辑文件
        • 7.3 vi文件时,其他操作
        • 7.4 查看文件
        • 7.5 移动、重命名文件
        • 7.6 复制文件
        • 7.7 删除文件
      • 八、Linux的压缩包命令【`重点`】
        • 8.1 针对tar命令
          • 8.1.1 解压压缩包
          • 8.1.2 打包成压缩包
        • 8.2 针对zip类型压缩包
          • 8.2.1 安装软件
          • 8.2.2 解压以及打包
      • 九、文件权限的修改【`重点`】
        • 9.1 对文件的权限修改
          • 9.1.1 数字方式
          • 9.1.2 符号方式
      • 十、Linux的其他操作命令【`重点`】
        • 10.1 进程的操作
        • 10.2 服务的操作
        • 10.3 端口号查看
        • 10.4 访问地址
        • 10.5 查找文件
      • 十一、Linux下安装软件
        • 11.1 安装JDK
          • 11.1.1 下载JDK的压缩包
          • 11.1.2 将jdk压缩包拉取到Linux系统中
          • 11.1.3 将jdk的压缩包解压
          • 11.1.4 将jdk的目录名修改一下
          • 11.1.5 配置环境变量
        • 11.2 安装MySQL
          • 11.2.1 安装MySQL的YUM存储库
          • 11.2.2 安装下载好的rpm包
          • 11.2.3 选择发行版本
          • 11.2.4 安装MySQL社区版服务
          • 11.2.5 启动MySQL服务,并连接
          • 11.2.6 开启远程连接
          • 11.2.6 开启远程连接

一、引言


1.1 开发环境

window10操作系统,MAC

JDK java version “1.8.0_281”

maven :settings.xml 文件 (本地仓库和远程仓库)

idea :(要关联上本地安装的maven)

mysql (可以用公司内部的)

Git (svn)

1.2 生产环境

Linux

JDK java version “1.8.0_281”

Web服务器+mysql数据库服务器

实施岗(开发测试好的代码,进行生产环境的部署)

1.3 测试环境

Linux

JDK java version “1.8.0_281”

Web服务器+mysql数据库服务器

禅道 (项目开发测试管理工具,开发人员和测试人员会有自己的账号)

1.4 操作系统的选择

  • 开发环境:windows , linux (桌面发行版,ubuntu )
  • 生产环境:Linux (99%)

二、Linux介绍


2.1 Linux介绍

Linus Torvalds 和 Linux

2.2 Linux的版本

Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。

  • Linux的内核版本官网:https://www.kernel.org/

  • Linux的发行版本,咱们需要学习的发行版本就时CentOS

Linux的常见发行版本
Linux_第2张图片

2.3 Linux和Windows区别

  • Linux是严格区分大小写的,Windows无所谓。
  • Linux中一切皆是文件。
  • Linux中文件可以没有后缀,但是他有一些约定俗成的后缀。
  • Windows下的软件一般是无法直接运行的Linux中。
    • java程序为什么能再linux上运行呢?linux系统中装了 linux 版本的 jdk (jre,jvm)

Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么

三、Linux安装


  • 安装Linux,我们需要一个虚拟机,为了安装虚拟环境:VMware或者Virtual Box(采用VMware)

    https://www.vmware.com/go/getworkstation-win

  • 为了安装Linux,我们需要一个Linux的镜像文件:CentOS7版本

    http://mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

  • 安装一个连接Linux的图形化界面:Xterm,SSH,XShell(Xterm)

    https://download.mobatek.net/2012020021813110/MobaXterm_Portable_v20.1.zip

3.1 安装VMware

傻瓜式安装,下一步下一步下一步……

3.2 安装Xterm

解压即可以使用……

3.3 在VMware中安装Linux

按照下图步骤,逐步安装Linux操作系统……‘

3.3.1 选择安装方式
选择安装方式
Linux_第3张图片
3.3.2 指定镜像方式
选择稍后安装操作系统
3.3.3 选择操作系统类型
选择操作系统类型
Linux_第4张图片
3.3.4 指定虚拟机名称
指定虚拟机名称,和安装目录
3.3.5 磁盘存储方式
拆分成多个文件存储
Linux_第5张图片
3.3.6 指定虚拟机配置

直接使用NAT可以

指定虚拟机的设置
3.3.7 开始安装CentOS
开始界面选择语言
Linux_第6张图片
     |
3.3.8 配置虚拟机网络连接
配置安装位置以及网络和主机名(开启)
Linux_第7张图片
3.3.9 开始安装
9、开始安装后,设置ROOT用户的密码
Linux_第8张图片
3.3.10 安装成功
10、安装成功,并登录
Linux_第9张图片

3.4 使用Xterm连接Linux

直接在Vmware中操作Linux有很多限制,我们可以在图形化界面中操作Linux操作系统

具体步骤如下……

3.4.1 查看ip地址
查看ip地址
Linux_第10张图片
3.4.2 通过Xterm连接
连接上Linux
Linux_第11张图片
连接成功
在这里插入图片描述

四、Linux的目录结构

# 清屏
clear
# linux系统的根目录下有如下的目录 
ls /   # 撇、捺 \

bin      # linux 一些可执行文件  
boot     # linux系统启动时需要的一些文件
dev      # 硬件设备相关
etc      # 系统配置相关的一些文件 
home     # 系统用户相关的一些目录 
lib      # 库相关
lib64    # 库相关
media    # 多媒体相关
mnt      # 挂载点  
opt      # 放咱们自己程序相关的目录和文件 
proc     # linux系统运行时的相关信息
root     # root用户自己的home 
run      # 运行时目录
sbin     # 一些可执行文件相关 
srv      # 系统服务相关
sys      # 系统相关
tmp      # 临时目录 
usr      # 第三方软件的安装目录 /usr/local/jdk  
var      # 咱们自己的程序用到的目录和文件 

五、Linux的基本命令


Linux中命令的基本格式:命令 【选项】 【参数】

个别命令是不遵循这个格式

当命令中有多个选项时,可以写在一起的,并且选项也是由简写方式的 命令 -选项A选项B

# 1. 我是谁
who am i

# 2. 我在哪 (当前的工作目录是什么)  print working  directory
pwd 

# 3. 查看ip 地址
ip a 
ip address

# 4. 清屏
clear

# 5. ping域名|ip
ping 地址

# 6. 强制停止
Ctrl + C

六、Linux目录命令【重点


6.1 列出目录

查看指定目录下的内容,默认查看当前目录下内容

Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用…表示

ls [-al] [目录名]
# 目录名不填写,默认为当前目录。
# -a:列出的全部的文件,包括隐藏文件
# -l:列举出全部的信息

关于目录的特殊写法:

  1. 一个点,代表当前目录 。就相当于 pwd命令的输出的目录
  2. 两个点,代表上一级目录,相当于pwd输出的上一级目录
  3. 波浪线~,代表当前用户的家目录

6.2 切换目录

实现目录间切换,使用绝对路径、相对路径、特殊符号

cd 具体路径 | 特殊符号
特殊符号 表达的路径
. 当前目录
上一级目录
/ 根目录
~ 当前登录用户的HOME目录
- 返回

6.3 创建目录

创建目录,以及创建多级目录方式

mkdir [-p] 目录名
# -p:代表创建多级目录时,使用

6.4 删除目录

删除非空目录或包含内容的目录

# 只能删除空目录
rmdir 目录名

# 删除非空目录
rm [-rf] 目录名  #  删库跑路
# -r:代表递归删除目录下的全部内容
# -f:不询问,直接删除

rm -rf /   # 递归删除根目录下的所有内容,删库跑路

6.5 复制目录

复制目录下的全部内容

cp -r 来源目录 目标目录
# -r:递归复制全部内容,必填项

6.6 移动、重命名目录

移动、重命名目录,会根据第二个参数指定具体操作逻辑

mv 目录名 新目录名 | 路径
# 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动

七、Linux的文件命令【重点


7.1 创建文件

创建空文件

touch 文件名1 文件名2 ……

7.2 编辑文件

编辑文件,后期最常的命令之一

vi 文件名 				# 查看文件。(查看模式)
i | a | o   		  # 进入编辑模式。(编辑模式)
                      # i:在当前光标处,进入编辑模式。 
                      # a:在当前光标后一格,进入编辑模式。 
                      # o:在当前光标下一行,进入编辑模式。
esc				      # 退出编辑模式,回到查看模式。
:				      # 从查看模式进入到底行命令模式。(底行命令模式)
                      # 在底行命令模式下,输入wq:保存并退出。输入q!:不保存并退出
                      # 在查看模式下,摁ZZ,可以快速保存并退出。

7.3 vi文件时,其他操作

编辑文件时,常用的快捷键,方便操作

# 在vi文件时,在底行命令模式下可以输入以下常用内容
# 行号操作
set nu              # 查看文件的行号
to rownum           # 快速的跳转到指定行
set nonu            # 取消行号
# 搜索操作
/word               # 类似Windows的Ctrl + F搜索文件中的具体内容所在位置,查看下一个可以输入字母n
# 快速定位
G                   # 快速跳转到最后一行
gg                  # 快速跳转到第一行

7.4 查看文件

根据不同的业务,可以选择不同的查看方式

# 查看文件,直接展示到最后一行
cat 文件名

# 从最后一行开始看文件
tac 文件名

# 显示文件的用时,展示行号
more 文件名
# 查看大文件时,可以一页一页的向下翻
# 嗯space向下翻页,退出时摁q

less 文件名
# 查看大文件时,可以任意的向上或者向下翻
# 向上或向下翻页摁PageUp和PageDown,一行一行查看,摁光标的↑↓

# 只查看前几行
head 文件名

# 只查看后几行
tail 文件名
# tail -f 日志 监控日志

7.5 移动、重命名文件

移动、重命名目录,会根据第二个参数指定具体操作逻辑

mv 文件名 新文件名 | 路径
# 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动

7.6 复制文件

复制文件到指定目录下

cp 文件名 目录

7.7 删除文件

删除文件方式

rm [-f] 文件名
# -f:是否询问

八、Linux的压缩包命令【重点


8.1 针对tar命令

Linux中常用的压缩包,大多是.tar,.tar.gz,tgz的

8.1.1 解压压缩包

针对压缩包后缀的情况,采用不同的参数,否则可能会损失文件

tar [-zxvf] 压缩包名称 [-C 路径]
# -z: 代表压缩包后缀是.gz的
# -x: 代表解压
# -v: 解压时,打印详细信息
# -f: -f选项必须放在所有选项的最后,代表指定文件名称
# -C 路径: 代表将压缩包内容解压到指定路径
8.1.2 打包成压缩包

可以将多个文件以及目录打包成压缩包,根据选择的参数指定压缩包名

tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 ...
# -c: 代表打包
# 其他参数同上

8.2 针对zip类型压缩包

Linux不仅仅针对tar类型的压缩包,也支持zip,rar这种Windows下的压缩包。

不过需要安装软件针对对各种类型压缩包的操作

8.2.1 安装软件
yum -y install zip     # 打包程序
yum -y install unzip   # 解压程序
8.2.2 解压以及打包
# 解压
unzip 压缩包名称

# 打包
zip 压缩包名称 文件1 文件2 目录1 目录2 ...
zip 包名 目录/* 

九、文件权限的修改【重点


首先我们要清楚Linux文件的权限信息

在Linux中输入ls -l 或者 ll查看文件和目录的详细信息

文件详情
在这里插入图片描述

实例中,a目录的第一个属性用“d”标识这个a是一个目录。

anaconda-ks.cfg第一个属性用“-”标识他是一个文件。

在Linux文件详情的后面属性需要分为三组查看

  • rwx: 代表文件拥有者的权限
  • rwx: 代表文件所属组用户的权限
  • rwx: 代表其他用户对当前文件的操作权限
    • r: 代表read,读的权限
    • w: 代表write,写的权限
    • x: 代表execute,代表执行权限

其余信息

  • 后续的第一个root:代表当前文件的拥有者

  • 后续的第二个root: 代表当前文件的所属组

  • 后续分别为:文件的大小和最后修改时间等信息

9.1 对文件的权限修改

使用chmod对文件的权限进行修改,一种使用数字,一种使用符号……

  • 数字方式方便操作,不过要修改整体权限信息
  • 符号方式更细粒度华,不过操作麻烦
9.1.1 数字方式
chmod [-R] 777 文件|目录
# rwx在这三个权限中r:4,w:2,x:1
# -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
9.1.2 符号方式
chmod [-R] o=rwx 文件|目录
# user:u,group:g,other:o,all:a
# read:r,write:w,execute:x
# 赋予权限的方式 , 添加:+,减掉:-,设定:=
chmod o+x 文件 // 为其他组的用户增加一个执行权限
# -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。

十、Linux的其他操作命令【重点


10.1 进程的操作

需要用到类似Windows的结束进程时,在Linux下需要使用如下命令

ps -ef 
# 查看全部正在运行的进程
ps -ef | grep 搜索的内容
# 杀死进程
kill -9 pid

# 分析 ps -ef | less 的输出结果 , 观察PPID
root       1584   1575  0 19:51 pts/1    00:00:00 -bash
root       2363      2  0 19:58 ?        00:00:00 [kworker/0:0]
root       2408      2  0 20:00 ?        00:00:00 [kworker/u256:0]
root       2422      1  0 20:01 ?        00:00:00 /usr/sbin/anacron -s
root       2455      2  0 20:01 ?        00:00:00 [kworker/0:3]
root       2538      2  0 20:06 ?        00:00:00 [kworker/0:1]
root       2552      2  0 20:09 ?        00:00:00 [kworker/0:2]
root       2561   1584  0 20:11 pts/1    00:00:00 ps -ef
root       2562   1584  0 20:11 pts/1    00:00:00 less

UID :程序被该 UID 所拥有

PID :就是这个程序的 ID

PPID :则是其上级父程序的ID

C :CPU使用的资源百分比

STIME :系统启动时间

TTY :登入者的终端机位置

TIME :使用掉的CPU时间。

CMD :所下达的是什么指令

10.2 服务的操作

和Windows下的服务操作一致,只需使用如下命令,默认为centos7版本

# 针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。
systemctl start|stop|restart|enable|disable|status 服务名称
systemctl status firewalld
systemctl stop firewalld

10.3 端口号查看

如发现端口号被占用,可以使用如下方式查找pid,并结束进程

# 想使用指定的命令需要事先下载netstat
yum -y install net-tools
# 查看端口号占用情况
netstat -natp | grep 端口号
netstat -natp | grep 22 

10.4 访问地址

类似浏览器访问路径,无法图形化显示,一般用于测试

curl 访问地址

10.5 查找文件

在Linux中查找指定文件,参数较多,如下为根据文件名称查询

find 路径 -type f | grep profile

find /etc -name *ens33*  

十一、Linux下安装软件


11.1 安装JDK

在Linux下安装JDK,并配置JAVA_HOME环境变量……

11.1.1 下载JDK的压缩包

去逛网下载压缩包,由于oracle官网更新,需要登录并同意协议才允许下载

https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

11.1.2 将jdk压缩包拉取到Linux系统中

需要使用图形化界面的Sftp拖拽到Linux操作系统

Xterm的Sftp图
Linux_第12张图片
11.1.3 将jdk的压缩包解压

后期大多软件都安装在/usr/local下,直接使用tar解压

tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local
11.1.4 将jdk的目录名修改一下

为了方便配置环境变量,修改一下目录名称

cd /usr/local
mv jdk1.8.0_241 jdk
11.1.5 配置环境变量

Linux提供了两种环境变量的文件

  • 第一个是用户级别的环境变量,存放在:~/.bashrc
  • 第二个是系统级别的环境变量,存放在:/etc/profile

修改哪个文件都可以,毕竟虚拟机就我们自己使用

# 在环境变量文件中,添加如下内容
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
# 重新加载环境变量文件
source /etc/profile
# 最终测试
java -version
测试效果
Linux_第13张图片

11.2 安装MySQL

在MySQL下用yum的方式安装MySQL……

11.2.1 安装MySQL的YUM存储库

使用wget下载即可,不过需要先下载wget,再通过wget下载rpm包

# 首先通过yum下载wget命令
yum -y install wget
# 通过wget下载MySQL存储库
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
11.2.2 安装下载好的rpm包

使用rpm包的命令直接安装

# 安装rpm包
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
# 导入gpg-key
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
11.2.3 选择发行版本

由于默认安装8.0版本的MySQL,我们需要修改为5.7版本

# 查看一下默认选择的发行版本
yum repolist all | grep mysql
# 通过编辑/etc/yum.repos.d/mysql-community.repo文件,去修改发行版本
# 将80的enabled更改为0,将67的enabled更改为1,保存即可,再次通过yum repolist all | grep mysql查看
# 效果如下
MySQL安装版本
在这里插入图片描述
11.2.4 安装MySQL社区版服务

开始安装,这一步需要下载一段时间,下载失败就是网络较差了,学会科学上网

yum -y install mysql-community-server
11.2.5 启动MySQL服务,并连接

安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作

# 启动MySQL服务
systemctl start mysqld.service
# 查看初始化密码
grep 'temporary password' /var/log/mysqld.log
# 连接MySQL服务
mysql -u root -p
Enter password:随机密码
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
# 要求密码,必须携带大写字母,小写字母,数字,特殊符号
11.2.6 开启远程连接

默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

补充:如何排查线上java程序CPU占用率过高问题?

top命令

# 先通过top命令找到消耗cpu很高的进程id
top
# 执行top -p pid单独监控该进程
top -p pid
# 监控界面输入H,获取当前进程下的所有线程信息,找到消耗cpu特别高的线程编号
# jstack 输出线程信息
jstack pid >> stack.txt
# 查找高占用线程,这里需要把线程转16进制
printf "%x\n" pid 
# 在  stack.txt 中查找线程信息,定位到问题线程的问题方法
# 查找出问题的方法的源代码,解决问题。

community-server




##### 11.2.5 启动MySQL服务,并连接

> 安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作

```sh
# 启动MySQL服务
systemctl start mysqld.service
# 查看初始化密码
grep 'temporary password' /var/log/mysqld.log
# 连接MySQL服务
mysql -u root -p
Enter password:随机密码
# 修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
# 要求密码,必须携带大写字母,小写字母,数字,特殊符号
11.2.6 开启远程连接

默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

补充:如何排查线上java程序CPU占用率过高问题?

top命令

# 先通过top命令找到消耗cpu很高的进程id
top
# 执行top -p pid单独监控该进程
top -p pid
# 监控界面输入H,获取当前进程下的所有线程信息,找到消耗cpu特别高的线程编号
# jstack 输出线程信息
#这里的pid是进程
jstack pid >> stack.txt
# 查找高占用线程,这里需要把线程转16进制
#线程id
printf "%x\n" nid 
# 在  stack.txt 中查找线程信息,定位到问题线程的问题方法
# 查找出问题的方法的源代码,解决问题。
#可以看见关于java的进程
jps 
jps -lv #可以看见关于java的详细进程名称

#在后台运行 jar   &代表这句话结束,固定写法
nohup java -jar boot.jar & 



你可能感兴趣的:(Linux,linux,运维,服务器)