IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux的 一些常见指令 -> 正文阅读

[系统运维]Linux的 一些常见指令

Linux 背景知识

Linux 是什么

Linux 是一个操作系统. 和 Windows 是 “并列” 的关系.

Unix & Linux 发展历程图

image-20220623232820703

  1. 1969-1970 年, 贝尔实验室的 Dennis Ritchie (左图) 和 Ken Tompson (右图) 开发了 Unix 操作系统.

image-20220623232943275

image-20220623233001097

这俩大佬本来是想开发一个操作系统, 但是开发着开发着, 发现现有的编程语言不太好使, 于是俩人一合计, 先整个编程语言出来吧. 于是 C 语言 就诞生了.

Dennis Ritchie 大佬 2011 年就去天堂写代码了. Ken Tompson 大佬后来在 google, 又参与发明了 Go 语言.

  1. Unix 火了之后, 衍生出很多的分支. 其中有一只为 “Minix”. 由荷兰的Andrew S. Tanenbaum 教授开发. MINIX 含义为 “小型的UNIX”, 源代码开放给大学教学和研究工作.

image-20220623233028308

  1. 1991 年, 还在读大学的 芬兰人 Linus Benedict Torvalds (1969年12月28日出生, 当时 22 岁) 基于Minix 的启发, 开发出了 Linux 的第一个版本.

image-20220623233104202

值的一提的是, Linus 在开发 Linux 的时候, 觉得现有的 版本管理工具 并不太方便. 于是开发了一个新的版本管理工具. 也就是现在最广泛使用的 git .

Linus 大佬现在 50 多岁了, 但是仍然在互联网上非常活跃. 经常会拍一些视频. 在 油管 或者 B站 上就可以找到.

经过这么多年的发展, Linux 已经成为 世界第一大操作系统.

各位可能表示, Linux 都是世界第一大操作系统了, 我咋还没听说过? 不, 其实你听说过. 安卓系统本质上就是 Linux.

  • 服务器领域
  • 嵌入式设备
  • 移动端

Linux 发行版

Linux 严格意义来说只是一个 “操作系统内核”.

一个完整的操作系统 = 操作系统内核 + 配套的应用程序.

由于 Linux 是一个完全开源免费的内核, 因此有些公司/开源组织又基于 Linux 内核, 提供了不同的配套程序. 这就构成了不同的 “发行版”.

image-20220623233408946

CentOS RedHat 的关系

RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo 商标, 重新编译一次.

RedHat对这种发行版的态度是:“我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”

所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任

作为Java程序猿,在实际开发过程中,一般不需要使用系统原生的API,但是会经常涉及一些和Linux相关的 部署 或者 调试 的工作

比如做了一个网站,后端就需要部署到服务器上(服务器主要用的系统就是LInux),才可以被各个用户访问到,这个部署的过程就涉及到一些基本的LInux操作

Linux 环境搭建

要想学习 Linux , 需要先有一个 Linux 的环境

环境搭建方式

主要有四种:

  1. 直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好. [不推荐].
  2. 使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一些 bug , 会导致环境上出现各种莫名其妙的问题, 比较折腾. [非常不推荐]
  3. 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能, 在 Windows 系统内集成了一个 Linux. 但是目前这个技术还不够成熟. [暂时不推荐].
  4. 使用云服务器, 可以直接在 腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器. [墙裂推荐]

使用云服务器不仅环境搭建简单, 避免折腾, 同时还有一个最大的好处, 部署在云服务器上的项目可以直接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别. 也就能让我们自己写的程序真的去给别人去使用.

能够在外网被访问是非常有意义的. 这样我们以后面试的时候就可以提前部署好项目, 现场给面试官演示了.

所以这里就拿服务器做演示

使用云服务器

我们以腾讯云为例, 其他的服务器厂商也是类似

  1. 进入官方网站 https://cloud.tencent.com/ (这里显示的是腾讯云服务器的官网,各位如果要买云服务的话,可以看本小节,博主当时买的时候,做活动,所以花费的比较少,各位可以各个云服务器厂商看一下,选择一个适合的价位)

  2. 登陆网站(可以使用 qq 或者 微信 登陆)

image-20220623234546483

在选好服务器后,点击立即购买就会出现配置选择的框框,这里可以按照自己的选择进行配置

博主在这里的选择

  1. 活动地域,选择任何地方都可以,都无所谓,随便选择
  2. 系统镜像(云服务器系统):主要选择的是Centos 7 系列,博主学习的时候用的就是这个系统.
  1. 购买完成后, 可以在控制台中找到自己买的服务器. 点进去能够看到服务器的 IP 地址.

image-20220623235027123

image-20220623235037567

image-20220623235238696

首次使用的时候,需要设置一个初始密码,后期如果密码忘记了,也可以在这里进行重置,这个密码最好设置的稍微复杂一点,前提是自己得记住,外网的环境是十分凶险的 !你的云服务器随时可能会被黑客攻击,有一个复杂点的密码,可以有效的保护自己的机器不被入侵,如果被入侵了,重装系统就好了,前提是服务器里没有特别值钱的东西

image-20220623235352602

做完上述任务后,就可以使用终端工具来远程登录服务器了,这里使用的是Xshell Xshell免费下载地址

下载安装后就可以点击使用Xshell了

image-20220624134839128

image-20220624135049892

此时这里的名称可以随便填写

此处的主机填写的就是外网ip

输入完成后点击连接

image-20220624135428232

此时的用户名默认是root

image-20220624135450170

image-20220624135528810

image-20220624135622203

当前情况就是登录成功,至此Linux环境配置完成

image-20220624140314203

关于XShell 下的复制粘贴

复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按)

粘贴: shift + insert

ctrl + c / ctrl + v 是不行的.

Linux常见命令

Linux的命是有很多的,这里总结的是最最最常见的常见命令

ls

功能:列出当前目录中包含的文件和目录,类似于window下双击某目录 ,把它打开,看看里面有什么

ls ----> list

image-20220624141232028

此时输入ls指令后,就会显示当前目录下的所有文件和目录,此时的java是蓝色的,那是因为java是一个目录,而text.txt是白色的,那是因为text.txt就是一个单纯的文件而已

需要注意的是,我这里之所以会有显示,那是因为我这里博主创建了文件和目录,如果没有文件和目录,就不会显示任何东西

image-20220624141610642

在ls的后面还可以加上路径,格式为 ls [路径],此处的路径不论是绝对路径还是相对路径都可

image-20220624141732711

ls / 此处的/是Linux下的特殊目录,成为"根目录"相当于windows下面的此电脑

Linux的命令很多支持"选项",在命令后面加上 - 以及一些特殊字母/单词,来开启不同的功能

image-20220624142047056

此处-l是小写的L,表示使用列表的方式列出目录中的内容,一般用ll 代替

image-20220624144131242

常用选项:

-a 列出目录下的所有文件,包括以 . 开头的隐含文件。

-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录

-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件

-l 列出文件的详细信息。

-r 对目录反向排序。

-t 以时间排序。

-R 列出所有子目录下的文件。(递归)

pwd

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

image-20220624144605601

cd

change directory 切换目录

cd 和ls是在工作中最高配使用的命令

功能:cd的功能就是切换到指定的目录,cd 后面加上一个路径,这个路径可以是绝对路径,也可以是一个相对路径

image-20220624145336939

cd .. : 返回上级目录
cd ~:进入用户家目
cd -:返回最近访问目录

认识 Linux 目录结构

Linux 是一个树形目录结构.

image-20220624145423762

几个特殊的目录:

  • / 称为根目录
  • . 称为当前目录
  • … 称为当前目录的上级目录

绝对路径 vs 相对路径

形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.

形如: ./logs 以 . 或者 … 开头的, 称为相对路径.

使用 tab 键补全

我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.

使用 ctrl + c 重新输入

如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令.

touch

功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件

image-20220624145937598

cat

功能: 查看目标文件的内容

image-20220624150258151

因为文件中没有任何内容,所以没有显示

echo

功能:打印内容到控制台,也可以用于写文件

image-20220624150603758

此处的读写文件,只是能进行简单的读写,不能进行复杂的编辑

mkdir

功能:在当前目录下创建一个名为 “dirname”的目录

image-20220624151028318

此时的tree不是LInux自带的,需要单独下载安装

yum install tree

yun相当于"应用商店",成为"包管理器"

rm

remove 删除,既可以删除文件,也可以删除目录

image-20220624151500995

通过rm text.txt就可以删除文件了

image-20220624151627071

rm可以删除目录,但是却提示ccc是一个目录,无法删除,因为目录下面会有其他目录和文件,rm要加选项才可以删除,比如如果想删除目录的话可以使用rm -r [目录名] -r 删除目录及其下所有文件

image-20220624151847088

常用选项

-f 即使文件属性为只读(即写保护),亦直接删除

-i 删除前逐一询问确认

-r 删除目录及其下所有文件

重要注意事项:

千万不要运行 rm -rf / , 尤其是在公司的生产服务器上.

cp

copy复制

image-20220624161136022

cp 直接可以拷贝文件,如果需要拷贝目录,就需要加上 -r 参数

image-20220624161255741

image-20220624161426092

此时不仅仅将aaa目录拷贝了,aaa下面的所有内容全部拷贝到bbb目录了

常用选项

-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在

-i 或 --interactive 覆盖文件之前先询问用户

-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

mv

move移动

image-20220624160844027

这两个路径都是绝对路径 / 相对路径均可

直接可以移动目录/移动文件

mv除了可以进行移动,还可以进行重命名

image-20220624161607884

mv操作和cp操作的区别

mv操作,本质是修改文件的名字/路径,这个改动是非常轻量,快速的

cp操作,本质上需要拷贝大量的数据,这个拷贝的过程其实是非常消耗时间的,尤其是文件很大的情况下

常用选项

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

man

这是Linux上非常有用的命令,man是手册的缩写

man的用途就是查看其它命令的帮助手册,每个命令,其实都是可以支持很多的参数选项的,这些选项全部记住是不现实的,就可以通过man随时来查看帮助

man ls

image-20220624162148058

按q退出

less

功能:读取文件内容

lss最主要的功能就是读取文件内容,用来看的

less最大的优势就是大文件可以秒开(懒加载),尤其是日志文件,以后开发过程中经常需要看服务器日志

选项

j k / 方向键: 向上向下滚动屏幕.

-N 显示每行的行号

/字符串:向下搜索“字符串”的功能

n:重复前一个搜索(与 / 或 ? 有关)

q: 退出

vim

功能:即能读取,也能编辑{文本编辑器}

编辑服务器上的一个重要操作!!!

vim这个软件的操作对新说不是很友好,vim为了可以高效实现文本编辑,引用了"模式"以及海量的快捷键 ,这个工具的使用方式,和日常使用的其他文本编辑器相比,差别比较大

创建文件 / 打开文件

image-20220624163040673

文件存在就直接打开,文件不存在就创建一个文件

进入插入模式

vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键. (例如按下 j 并不是输入字母 “j”, 而是表示光标往下移动一行). 需要进入插入模式才能进行文本编辑.

使用 i 键可以进入到插入模式. (左下角提示 --INSERT-- ) 然后就可以像记事本一样正常编辑了.

image-20220624163219800

保存

此时的保存不再是ctrl+s,ctrl+s在vim中不是保存,而是Xshell的快捷键,功能是冻结屏幕

如果不小心按到了ctrl+s,可以按ctrl+q解除冻结

在插入模式下不能保存文件, 需要先回到 普通模式 . 按下 Esc 回到普通模式.

在普通模式下输入 :w , 再按下回车, 即可保存文件.

退出

在插入模式下不能退出, 需要先回到 普通模式.

在普通模式下输入 :q , 再按下回车, 即可退出.

也可以直接使用 :wq 同时执行保存和退出.

如果想对vim有更多了解,可以使用vim自带的教程进行学习,输入vimtutor即可

grep

**语法:**grep [参数]… [文件]…

功能:用于查找文件中是否包含指定字符串, 并显示对应的行.

选项

-n<行数> 显示的行数

-w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.

-r 递归查找. 可以搜索多级目录下的所有文件.

–color 高亮查找到的结果

–include 指定查找某些文件

–exclude 指定排除某些文件

举例:

grep "hello" Hello.java

ps

**语法:**ps [参数]…

功能:用于查看当前系统上运行的进程

选项

a 显示一个终端的所有进程

u 以用户为主的格式来显示程序状况

x 显示所有程序,不以终端机来区分

举例:

ps aux   # 显示系统上所有的进程
ps aux | grep "进程名"
ps aux | grep "进程id"

netstat

**语法:**netstat [参数]…

功能:查看系统上的网络状态.

选项

-a 显示所有正在或不在侦听的套接字

-n 显示数字形式地址而不是去解析主机、端口或用户名

-p 显示套接字所属进程的PID和名称

举例:

netstat -anp
netstat -anp | grep "进程名"
netstat -anp | grep "端口号"

Linux权限

权限是对操作的限制

image-20220624165106779

文件拥有者:类似于房产证上写名的人

同组用户:虽然房产证没写名字,但是可以住的人

其他用户:和房主没任何关系的人

但是,在这些规则之上,有一种特殊情况 管理员用户不需要遵守上述规则(root)

搭建 Java 部署环境

最终目的就是能够在Linux系统搭建Java环境,并且能部署Java Web程序

JDK的安装

最简答的方法就是通过yum进行下载安装

yum是"包管理器",相当于"应用商店"

首先,先搜索一下,看看yum关于jdk有没有,以及叫什么名字

通过yum list命令,可以列出应用商店服务器上所有的软件包的名字

而要找jdk的命令为 yum list | grep jdk 此处,grep命令的功能是进行字符串过滤,| 叫做管道,功能是把前一个命令的输出作为后一个命令的输入(像一根管,把两个命令连接起来) grep jdk就是依据yum list输出的结果,来匹配包含jdk三个子母的文本行

image-20220624170459350

image-20220624170742341

yum install java-1.8.0-openjdk-devel.x86_64 执行这个命名,就可以下载安装jdk 1.8

安装Tomcat

因为yum中的tomcat版本太低,可以在百度官网找到tomcat 8.5.x,下载zip文件,然后直接拖进Xshell即可

image-20220624171546142

在LInux配置Tomcat稍微有点麻烦

  1. 在官网下载 .zip包
  2. 把 .zip传到Linux上,直接通过Xshell拖进去,可能需要安装lrzsz
  3. 使用unzip命令解压缩,可能需要安装unzip
  4. 切换到bin目录,给所哟.sh加上可执行权限 chmod+x*.sh
  5. sh startup.sh启动tomcat

验证启动成功

# 方法1 查看 tomcat 进程是否存在
ps aux | grep tomcat
# 方法2 查看端口 8080 是否被绑定
netstat -anp | grep 8080
# 方法3 使用 curl 命令访问默认 demo
curl 127.0.0.1:8080

启动成功后就可以通过ip地址+端口号访问了,但是会出现无妨访问页面的问题

云服务器厂商,为了保护咱们的服务器不受黑客的攻击,对于哪些端口可以对外访问进行了严格的限制,绝大多数端口,默认情况下无法通过外网来访问,需要在云服务器的后台页面进行配置,允许那些端口可以对外访问

博主的是轻量级服务器,所以可以在防火墙进行配置

image-20220624172503300

image-20220624172628107

image-20220624172642078

安装MySql

MySQL 同样也可以使用 yum 安装. 但是要修改一些配置, 稍微复杂一些.

可以参考一个知乎上的文章.

https://zhuanlan.zhihu.com/p/49046496

yum 上的是 MariaDB, 和纯正的 MySQL 还不太一样.

MariaDB 和 MySQL 的关系, 类似于 CentOS 和 RedHat 的关系. 从使用角度上, MariaDB 和

MySQL 之间都是兼容的

MySQL 中除了错误日志, 还有很多其他类型的日志. 详细可以参考

https://www.cnblogs.com/f-ck-need-u/p/9001061.html

部署 Web 项目到 Linux

工作中涉及到的 “环境”

  • 开发环境: 程序猿写代码用的机器.
  • 测试环境: 测试人员测试程序使用的机器. 一般是退役的部署机器.
  • 生产环境(线上环境): 最终项目发布时所使用的机器. 对稳定性要求很高
  1. 在Linux中创建项目需要的依赖数据
  2. 构建项目并打包

切换到已经写好的代码中, 在pow.xml中加入

<!-- 打的包是一个war包,默认的是一个jar包 -->
<packaging>war</packaging>
<!--指定打出的war包的名称-->
<build>
 <finalName>名称</finalName>
</build>

然后在进行打包操作

生成的war包在target目录中

  1. 拷贝到 Tomcat 中

Linux 一直cd到tomcat的wabapp目录下,然后将war包拷贝,接着重启启动tomcat,至此就可以在浏览器中看到自己写好的Web项目

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 19:27:13  更:2022-06-29 19:29:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 9:22:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计