【Linux】Java工程师Linux学习,一篇就够了

文章目录


一、Linux的各个发行版

在这里插入图片描述
各个公司在Linux内核基础上进行二次开发、定制,出现不同的发行版
发行版——用户正在可以使用的操作系统软件


二、Linux目录结构

Linux主机的根目录为:/
在这里插入图片描述

目录描述
/root系统管理员(超级权限者)专有主目录
/binBinary的缩写,存放着经常使用的命令(如:/usr/bin、/usr/local/bin)
/boot存放的是启动Linux时使用的一些核心文件、引导文件,包括一些连接文件及镜像文件
/dev类似Windows的设备管理器,把所有硬件用文件的形式保存
/etc所有系统管理所需的配置文件和子目录my.conf
/home存放普通用户的主目录,在Linux中每个用户都有一个自己的主目录,目录名一般以用户的账号命名
/var存放着不断扩充的东西,习惯将经常被修改的文件存放在这个目录下,包括各自日志文件
/lib系统开机所需的基本的动态连接共享库、引导文件,类似于Windows里的DLL文件,几乎所有应用程序都会用到这些共享库
/usr非常重要的目录,用户安装的许多应用程序和文件都放在这个目录下,类似Windows下的Program files目录
/usr/local给主机额外安装软件的目标安装位置,一般是一些通过编译源码方式安装的程序
/opt给主机额外安装软件时安装程序所摆放的目录(规范我们需要把安装执行程序放在这个目录下)
/mediaLinux会自动识别一些设备,如U盘、光驱,Linux会把识别到的设备挂载到这个目录下
/mnt该目录用来让用户临时挂载别的系统文件,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了,如共享文件:d:/myShare
/sbins即super user的意思,存放系统管理员使用的系统管理程序(如:/usr/sbin、/usr/local/sbin)
/lost + found这个目录下一般为空的,当系统非法关机后,就会存放一些文件
/seLinuxSELinux是一种安全子系统,能控制程序只能访问特定文件

以下为Linux内核相关目录,一般不去动

目录描述
/proc一个虚拟的目录,为系统内存的映射,访问这个目录来获取系统信息
/srvservice的缩写,存放一些服务启动之后需要提取的数据
/sys为Linux2.6内核的一个很大的变化,目录下安装了2.6内核中新出现的文件系统sysfs
/tmp用来存放一些临时文件

使用哪个用户账户登录,就会定位到当前用户的主目录下,如使用root登录,就会定位到/root下

总结:
Linux的目录中有且只有一个根目录:/
Linux的各个目录分别存放哪些内容是约定好的,我们需要遵守这个规范
Linux是以文件的形式管理我们的设备,linux系统中一切皆为文件


三、远程操作Linux服务器

实际工作中,我们一般将Linux作为远端服务器,部署软件系统及其他操作时,我们需要远程操作Linux服务器,这就需要借助以下两款工具

1.XShell(远程操控服务器)

远程登录Linux服务器,使用命令行操作(没有图像界面)

SSH协议

SSH(Secure Shell):应用层安全协议,是为远程登录会话,其他网络服务提供安全性的协议,可有效管理防止远程管理过程中的信息泄漏

开启sshd服务

使用远程工具有一个前提:主机是否开启了sshd服务,若没有开启则无法远程
sshd:监听端口22,这个服务基于SSH协议,为客户端远程操作进行服务、管理,开启这个服务后,则会一直在监听状态(监听22端口),有客户端连接进来后并进行管理
一般情况下这个服务默认开启
检查是否开启了sshd:
(1)在终端输入:setup
在这里插入图片描述
(2)选择系统服务
在这里插入图片描述
(3)检查sshd前面是否打了*,打了则表示已开启,没有则勾上开启
在这里插入图片描述

使用XShell远程登录Linux

(1)在CentOS终端输入ifconfig,查看当前IP地址
(2)XShell中创建会话,将主机地址填上IP地址,端口为22,协议选择SSH
在这里插入图片描述
(3)连接,输入用户名root或其他用户名,及密码,完成连接

2.XFtp(文件上传/下载)

实现远程服务器与本地文件的上传/下载
(1)打开XFtp并新建会话
(2)主机地址填CentOS的IP地址(同上),协议选择SFTP,端口22,并输入登录账户的用户名、密码
在这里插入图片描述
(3)登录了哪个用户,如root,就会默认定位在哪个用户的主目录下,如/root(若出现乱码问题,点击打开会话的属性——选项——编码选择UTF-8),然后就可以右键选择文件进行传输了


四、vi和vim编辑器

vi:为Linux系统自带的一个文本编辑器
vim:具有程序编译的功能,可看成vi的增强版,会根据代码、语法、关键字来区分颜色,方便程序设计,有代码补全、编译及错误跳转等功能

vi、vim的三种模式:
(1)普通模式:使用命令行打开一个文件,终端输入:vim test.txt,就会默认进入普通模式(若不存在这个文件,则会帮你自动创建),这个模式下,可以进行复制、粘贴、移动、删除等快捷键操作

(2)插入模式:普通模式下按iaIAO即可进入插入模式,插入模式下可进行字符输入操作,按ESC可回到普通模式

(3)命令模式:普通模式下按:/或即可进入命令模式,该模式下可以进行保存、搜索、替换、退出、显示行号等操作,按ESC可回到普通模式

命令模式中几种常用命令:

#(回车向后查找“word”关键字,按n向后继续查找)
:/word

#(回车向前查找“word”关键字,按n向前继续查找)
:?word

#(保存文本)
:w

#(强制保存,root用户,文件就算只读也能保存)
:w!

#(退出编辑器)
:q

#(保存并退出)
:wq

#(显示行号)
:set nu

#(不显示行号)
:set nonu

五、Linux常用命令

1.基本指令

关机

# 关机
shutdown

# 立刻关机
shutdown -h now
# 1分钟后关机
shutdown -h 1

# 立刻关机
halt

重启

# 立刻重启
shutdown -r now
# 现在重启
reboot

注意:不管是关机还是重启,首先要sync将主存中的数据保存到外存

# 把内存数据同步到硬盘上
sync

2.用户管理

Linux是一个多用户多任务的操作系统,必须一个账号对应一个用户,以账号的身份进入系统,且Linux维护了一个用户组的概念,会有多个不同权限的用户组,且每个用户至少属于一个用户组,如图:

在这里插入图片描述

Linux中有且只有一个超级管理员用户root,可以有多个普通用户,各个账号都有一个对应的主目录,root账户有一个专属的主目录,其他各普通用户在/home下有一个对应的主目录,主目录名称通常为用户名,登录时,默认进入对应用户的主目录下

实际工作中,不能把root用户分配给每个人,因为权限太大,而是创建多个用户组、用户,并分配不同的权限

用户登录&注销

实际工作中,应尽量少用root用户登录,因为权限太大

# 进行切换用户登录
# 从低权限用户往高权限用户切换时,需要输入密码,反之不需要
su [用户名]

# 注销,使用远程连接命令行操作时,输入logout就会注销用户并关闭连接,减少服务器压力,但在图形界面中打开终端输入logout不会起作用
logout

# 使用su切换过用户后,使用exit可返回原用户,无用户时,作用同logout注销用户
exit

创建用户

# 创建用户,同时会自动创建一个同名用户组并关联
# 例:useradd xm —— 会创建一个用户xm,同时会自动创建一个xm的用户组,并用户xm属于用户组xm
useradd [可选] [用户名]

# 创建用户,同时指定用户组(前提是用户组必须已经存在)
useradd -g [用户组名] [用户名]

# 创建用户,同时指定home目录(默认用户主目录会在/home下,也可以指定为某个目录下)
useradd -d [目录] [用户名]

给用户指定/修改密码

# 指定或修改该用户密码
passwd [用户名]

删除用户

# 删除用户,但会保留对应的用户主目录
userdel [用户名]

# 删除用户,同时删除对应的用户主目录
userdel -r [用户名]

# 实际中,一般建议保留用户主目录,方便查阅历史记录

查询用户信息

# 查询用户信息
# 若不存在用户,则返回 “no such user”
# 若存在用户,则返回uid(用户id)、gid(用户组id)、组(属于的用户组id及组名)
id [用户名]

在这里插入图片描述

查询当前登录用户

# 查询当前登录用户,返回用户名
whoami

3.用户组管理

相当于角色,可对多个有共性的用户进行统一管理、分配权限

增加组

groupadd [组名]

删除用户组

groupdel [组名]

修改用户的用户组

# 用户组事先存在为前提
usermod -g [用户组名] [用户名]

4.用户/用户组的配置文件详解

(1)用户的配置信息都记录在 /etc/passwd 这个文件中,我们使用cat/etc/passwd可以以只读的形式打开文件,打开后可以查看到例如用户cty的信息
在这里插入图片描述
(2)用户的密码记录在 /etc/shadow 这个文件中:
在这里插入图片描述
(3)用户组的配置信息记录在 /etc/group 这个文件中:
在这里插入图片描述

5.Linux的运行级别详解

什么是运行级别?

运行级别,举个例子,如使用 “多用户无网络” 这个运行级别运行Linux,就好比用 “安全模式” 启动Windows
Linux有以下运行级别:
在这里插入图片描述
常用运行级别为:3和5

切换到指定的运行级别

# 切换到0~6中某个运行级别
# 例:进入CentOS,若此时进入到了图形界面(运行级别为5)
#    则此时命令行输入:init 3,就会进入到纯命令行的模式(多用户有网络)
#    命令行输入:init 5,就会回到图形界面
#    命令行输入:init 0,就会直接关机
init [0~6]

实际中的运用
若忘记了root的密码,怎么找回?
步骤一:系统开机时,在内核选择界面时,按键盘任意键使Linux启动引导停留在选择阶段(使用方向键上下进行选择)
步骤二:根据步骤提示,键入小写 “e” 下一步
步骤三:选项停留在Kernel这一项,按 “e” 下一步
步骤四:此时,进入下一个界面,在quiet后键入 “1”(表示进入单用户模式),回车回到启动选择界面,选择停留在 “Kernel” 处,此时再输入 “b”(表示引导),现在启动就是单用户模式了
步骤五:在单用户模式下,即可以使用命令:passwd root 来修改root的密码,修改完成后reboot重启

对于CentOS7中进行到步骤三中选项没有Kernel这一项:
(1)按方向键下找到最下面有 “ro” 的这一行(意为read only),将 “ro” 替换成 “rw init=/sysroot/bin/sh”
(2)按 “Ctrl + x” 重启,重启进入出现 “😕#”,即表示已进入到了单用户模式,然后输入 “chroot/sysroot” 来获得root权限
(3)修改root密码并重启

修改开机的默认运行级别

Linux系统的运行级别的配置信息保存在 /etc/inittab 文件中
要修改默认的运行级别可在:/etc/inittab 文件中修改 id:5:initdefault: 这一行的数字

CentOS之后不再是这样设置了
我们打开inittab文件可以看到
在这里插入图片描述
得知 “multi-user.target” 相当于原来的运行级别3(多用户有网络),graphical.target相当于运行级别5(图形界面),并根据注释提示得知若要设置需要这样写:systemctl set-default [xxx.target]
(若要得知当前运行级别,可在终端输入:systemctl get-default)
在CentOS7中,不再是通过修改配置文件来改变启动默认的运行级别了,而是在终端输入:systemctl set-default [xxx.target]

CentOS7中运行级别对照表

运行级别指令
0(关机)shutdown.target
1(单用户模式)emergency.target
2(多用户无网络、安全模式)rescure.target
3(多用户有网络)multi-user.target
4(保留)-
5(图形界面)graphical.target
6(重启)-

若被他人恶意修改了启动默认的运行级别,例如修改为关机、重启,则会开机就关机、重启,解决方式也是进入单用户模式来进行修改

6.帮助指令

# 会返回关于这个命令、配置文件的使用、介绍
# 例:man ls
man [命令或配置文件]

# 获得shell内置的命令的帮助信息
# 例:help cd
help [命令]

7.文件目录类指令

显示当前工作目录的绝对路径

pwd

显示当前目录下的所有文件及目录(文件夹)

# 横向显示目录下的文件、目录
ls

# 显示所有并包括隐藏的文件、目录
ls -a

# 以列表的形式显示包括隐藏的
ls -l

切换目录

# 切换目录,切换到指定路径下
cd [路径]

# 切换到当前目录的主目录
cd ~ 或 cd

# 返回到上一级目录
cd ..

绝对路径、相对路径

(1)若当前工作目录为 /root,此时我们希望进入到 /home 下
绝对路径:cd /home (即从根目录 “/” 开始定位,定位到 home)
相对路径:cd …/home (从当前目录开始定位到 home,“…” 为返回上一级即根目录,再 /home,定位到 home 下)

(2)若当前工作目录为 /home,希望进入到 home 下的 cty 下
绝对路径:cd /home/cty
相对路径:cd cty

(3)若当前工作目录为在 /cty 下,希望进入到 /root 下
绝对路径:cd /root
相对路径:cd …/…/root

创建目录

mkdir [可选] [目录全路径名]

mkdir /test/t1 #会失败,因为只能创建一个级的目录,即此时根目录没有/test这个目录,因此/test/t1时,会先去检查是否存在/test,不存在则无法创建
mkdir /root/test #会成功,因为此时已存在/root目录,此时只需要创建/test
mkdir /root/123/321 #会失败,因此此时不存在/123

# 一次性创建多级目录
mkdir -p /root/aa/bb/cc

删除目录

# 删除目录,目录非空则无法删除
rmdir [可选] [目录全路径名]

# 删除目录并删除里面的内容
rm -f [目录全路径名]

创建空文件

# 创建一个空文件
# 可以在当前目录下touch test.txt,也可以在其他目录下touch /home/test.txt
# 例:touch test.txt、touch test.java
# 也可以一次性创建多个文件 touch 1.txt 2.java 3.txt
touch [文件全路径名]

拷贝文件

# 拷贝单个文件,路径可以是绝对路径如:cp /root/test.txt ../home/cty
# 例:当前在/home下,要将/root下的1.java拷贝至/home下的cty下
#    写法1:cp ../root/1.java /home/cty
#    写法2:cp ../root/1.java cty
#    写法3:cp /root/1.java cty
cp [要拷贝的源文件全路径名] [目标全路径]

# 拷贝整个目录(文件夹),即递归拷贝整个目录包括里面的内容,路径同样可以说绝对路径或相对路径
# 例:当前在/root下,拷贝/root下的/test目录及里面的内容至/home/cty下
#    写法1:cp -r test ../home/cty
#    写法2:cp -r /root/test /home/cty
cp -r [源文件全路径名] [目标全路径]

删除文件、目录

# 删除文件或目录
rm [可选] [目标删除的目录或文件的全路径名]

# 递归删除
rm -r [路径]
# 强制删除并不会提示
rm -f [路径]
# 强制递归删除并不会提示
rm -rf

# 注:
# 直接rm删除的是目录时,会提示 “无法删除,这是一个目录”
# 直接rm -r删除的是目录时,会提示 “是否进入目录”,选是便会进入目录,并对里面一个个的文件进行 提示是否删除,最后提示 “是否删除目录”
# 所以使用rm删除目录时,使用rm -rf递归不提示删除

剪切、重命名

# 移动文件或目录(即剪切),移动时同时可以改变了文件或目录名,就相当于重命名
# 例:
#   重命名:
#         在同一个目录下并改变了文件、目录名
#		   mv /root/test /root/test2
#          mv /root/test/1.java /root/test/2.java
#         移动的同时重命名
#          mv /root/test /home/cty/test2
#          mv /root/test.txt /home/cty/1.txt
#	剪切:
#        mv /root/test /home/cty
#		 mv /root/1.java /home/cty
mv [源目录或文件全路径名] [目标全路径名]

查看文件内容(只读)

# 例:cat /etc/profile
cat [可选] [文件全路径名]

# 以显示行号的方式查看
# 例:cat -n /etc/profile
cat -n [文件全路径名]

# 可以分页显示,按空格下一页,ctrl+B上一页
cat /etc/profile | more
cat -n /etc/profile | more

# more指令是基于vi编辑器的文本过滤器,它以全屏的方式显示文本内容
# 例:more /etc/profile
# 快捷键:
#      空格——下一页
#      Enter——向下翻一页
#      q——立刻立刻more,不再显示文本内容
#      ctrl+F——向下滚一屏
#      ctrl+B——返回上一屏
#      =——输出当前行的行号
#      :f——输出当前文件名和当前行的行号
more [文件全路径名]

# 用来分屏(分页)查看文件内容,与more类似,但比more更强大,因为它是根据需要加载显示内容,而不是加载全部,性能更快
# 根据分屏,只先加载一屏的内容显示,向下翻一屏时再去加载下一屏来显示,而不是more一打开就全部加载
# 例:less /etc/profile
# 当查看大型如日志文件时推荐用less
# 快捷键:
#      空格——向下翻页
#      [pagedown]——向下翻页
#      [pageup]——向上翻页
#      /关键字——向下搜索关键字,n:向下查找,N:向上查找
#      ?关键字——向下搜索关键字,n:向上查找,N:向下查找
#      q——离开文本内容
less [文件全路径名]

输出重定向

# 例:ls -l > /root/a.txt
# 将ls -l显示的内容(当前文件列表内容)写入到a.txt中,会覆盖原来的内容,若a.txt文件不存在,会自动创建
# cal > /root/b.txt 将当前日历信息写到b.txt中
>

文件中追加内容

# 追加内容(不会覆盖),同样若文件不存在则会创建
# 例:
#   ls -l > /root/b.txt
#   ls -a > /root/b.txt
>>

将一个文件的内容覆盖到另一个文件中

# 若文件不存在也会创建
# 例:cat /etc/profile > /root/a.txt
cat [文件1] > [文件2]

将一个文件的内容追加到另一个文件中

# 若文件不存在也会创建
# 例:cat /etc/profile >> /root/a.txt
cat [文件1] >> [文件2]

将内容覆盖到另一个文件中

# 若文件不存在也会创建
# 例:echo "hello" > /root/a.txt
echo [内容] > [文件全路径名]

将内容追加到另一个文件中

# 若文件不存在也会创建
# 例:echo "word" >> /root/a.txt
echo [内容] >> [文件全路径名]

将内容输出到控制台

# 例:
#   echo $PATH 输出当前环境变量到控制台
#   echo "hello" 输出"hello"到控制台
echo [可选] [输出内容]

查看文件前n行内容

# 默认显示前10行
# 例:head /etc/profile
head [文件路径全名]

# 指定显示前?行
# 例:head -n 5 /etc/profile
head -n [?] [文件全路径名]

查看文件末尾n行内容

# 默认显示末尾10行
tail [文件全路径名]

# 指定显示末尾?行
tail -n [?] [文件全路径名]

# *常用
# 实时追踪文件的所有更新
# 当文件更新时,就能在控制台看到变化的内容
tail -f [文件全路径名]

软链接\符号链接(类似Win中的快捷方式)

# 给源文件创建一个软链接(快捷方式)
# 例:当前在/home下,创建一个软链接到/root
#	  ln -s /root linkToRoot
#     此时在/home下:cd linkToRoot 就会到/root下,pwd时,显示的还是软链接所在的目录(/home)
ln -s [源文件、目录全路径名] [软链接名]

删除软链接

rm -rf [软链接全路径名]

8.显示在这台Linux上使用过的所有历史指令(使用指令痕迹)

# 显示所有历史指令
history

# 显示最近使用的10个指令
history 10

# 根据显示出的历史指令,每个都有一个唯一编号,如:!178
# 控制台中输入:!178 即可执行编号为178的这个指令

9.时间日期类

显示当前时间日期

# 显示当前日期,格式为(2021年 10月 11日 星期一 22:59:57 CST)
date

# 格式化:
# 显示年(2021)
date "+%Y"
# 显示年-月(2021-10)
date "+%Y-%m"
# 显示年 月(2021 10)
date "+%Y %m"
# 显示当前月(10)
date "+%m"
# 显示当前日(11)
date "+%d"
# 显示年月日时分秒(2021-10-11 22:59:57)
date "+%Y-%m-%d %H:%M:%S"

设置当前时间

date -s [时间]

显示日历

# 显示当前月的日历
cal

# 显示指定某年的一整年的日历
cal [年份]

9.搜索查找类

从指定目录下递归地遍历显示其某个子目录及文件

# 例:find /root  递归显示/root各个子目录及文件
find [指定目录] [可选]

# 查找指定文件名或所有相同格式的文件
# 例:
#	查找/root下及它的子目录下名为 “1.txt” 的文件:find /root -name 1.txt
#	查找/root下及它的子目录下的所有txt格式文件:find /root -name *.txt
find [指定目录] -name [文件全路径名]
# 查找所属于该用户的文件
# 例:
#   查找/opt下所有拥有者为root的文件:find /opt -user root
find [指定目录] -user [用户名]
# 按指定文件大小查找文件
# 例:
#   查找Linux下所有大小超过20M的文件:find / -size +20M (M必须大写,+表示大于,另外-表示小于,不写表示等于)
find [指定目录] -size [文件大小]

快速定位文件路径

# locate利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
# 无需遍历整个文件系统,为了保证查询结果的准确度,管理员必须定期更新locate时刻
#
# locate基于数据库查询,第一次运行前,必须使用updatedb指令创建locate数据库
locate [文件全路径名]

查找文件中某个关键字

# 过滤查找
# grep一般与管道符号 ”|“ 结合使用
# 管道符号 ”|“:作用为把前一个指令的结果作为参数传输给下一个指令来处理
grep [可选] [查找内容] [源文件]

# 显示匹配行及行号
grep -n [查找内容] [源文件]
# 忽略字母大小写
grep -i [查找内容] [源文件]

# 例:
#   在hello.txt文件中,查找内容 ”yes“ 的所在行,并显示行号
#   cat hello.txt | grep -n yes  (cat读取文件内容(只读),把内容交给grep处理)

10.压缩、解压缩类

压缩文件(gz格式)

# 将文件压缩为*.gz文件,压缩完不保留原格式文件
# 例:
#   gzip /root/a.txt
#   gzip /root/a.txt /root/b.txt
gzip [文件全路径名]

解压文件(gz格式)

# 解压*.gz文件,解压后不保留原gz文件
# 例:
#   gunzip /root/a.txt.gz
#   gunzip /root/a.txt.gz /root/b.txt.gz
gunzip [gz格式文件全路径名]

压缩文件(zip格式,项目打包中很有用)

# 将文件压缩为*.zip文件,并自命名压缩后的文件
# 当前在哪个目录就保存在哪个目录下,压缩完保留原格式文件
zip [可选] [压缩后对zip格式文件的命名] [目标压缩文件全路径名]

# 递归压缩(即压缩目录)
# 例:
#   将 /home 目录压缩,命名为 “mypackage”
#   zip -r mypackage.zip /home
zip -r [压缩后对zip格式文件的命名] [目标压缩文件全路径名]

解压文件(zip格式)

unzip [可选] [zip格式压缩文件]

# 解压并指定解压文件存放的目录
# 例:
#   将mypackage.zip解压到 /opt/tmp下
#   unzip -d /opt/tmp /home/mypackage.zip
unzip -d [存放目录路径] [zip格式压缩文件]

打包(tar.gz格式,既可压缩也可解压)

# 打包为*.tar.gz格式文件
# 打包后不会删除原文件
tar [可选] [目标打包文件路径全名]

# 产生*.tar打包文件
tar -c [目标打包文件路径全名]
# 显示详细信息
tar -v [目标打包文件路径全名]
# 指定压缩后的文件名
tar -f [文件名] [目标打包文件路径全名]
# 打包同时压缩
tar -z [目标打包文件路径全名]
# 解包*.tar文件
tar -x [tar格式文件路径全名]

# 例:
#   压缩多个文件,将/home/a.txt 和 /home/b.txt压缩成名为 ”a.tar.gz“ 的文件
#   tar -zcvf a.tar.gz a.txt b.txt
#
#   将/home文件夹压缩成 ”myhome.tar.gz“
#   tar -zcvf myhome.tar.gz /home
#
#   将a.tar.gz解压到当前目录下
#   tar -zxvf a.tar.gz
#
#   将myhome.tar.gz解压到 /opt/tmp下
#   tar -zxvf myhome.tar.gz -c /opt/tmp  (前提:/opt/tmp必须事先存在)

11.组管理

组:用户组,组信息配置文件在/etc/group下

用户:Linux每个用户必须属于一个组,不能独立于组外,用户信息配置文件在/etc/passwd下,口令配置文件在/etc/shadow下

文件:Linux下每个文件都有:
1.所有者(这个文件属于谁的)谁创建了这个文件,所有者就是谁
2.所有组,归属哪个组,默认在所有者所在的组
3.其他组

查看文件的所有者

# 查看文件的所有者
# 例:
#   先创建一个组名为police,再创建一个用户tom属于police组,然后用tom创建一个文件,查看该文件的所有者
#   1.groupadd police
#   2.useradd -g police tom
#   3.passwd tom 
#   4.su tom
#   5.touch ok.txt
#   6.ls -ahl
ls -ahl

修改文件的所有者

# 例:使用root创建root.txt文件,再将这个文件的所有者改为tom
chown [用户名] [文件全路径名]

查看文件/目录所在组

当某个用户创建了该文件、目录,该用户所在的组默认就设为该文件、目录所在的组

# 同查看文件所有者
ls -ahl

修改文件所在组

# 例:
#   将root.txt所在组改为police
#   charp police root.txt
charp [组名] [文件全路径名]

改变用户所在组

usermod -g [组名] [用户名]

改变用户登录时的初始目录

usermod -d [目录名] [用户名]

12.权限管理

文件、目录权限的基本介绍

这里的权限指的是文件、目录的权限
以root主目录下的文件为例
输入ls -l后列出所有文件
在这里插入图片描述
其中开头部分如“-rw-r–r--”,总共占10位,每一位代表不同含义
其中:
(1)第一位表示类型:
“-”——表示该文件为普通文件
“d”——表示为一个目录
“l”——表示是一个软链接
“c”——表示是一个字符设备(键盘、鼠标)
“b”——表示为块文件(硬盘)
如图:
在这里插入图片描述
后面的9位中,每3位为一组,每组都有rwx代表拥有的读、写、执行的权限,若为-则表示没有相应权限
3组中:
最前面的一组:表示文件的所有者拥有的权限
中间的一组:表示文件、目录所在组的用户拥有的权限
最后一组:表示文件、目录的其他组的用户拥有的权限

rwx表示的意思:
若是作用在文件上:
“r”——表示可读
“w”——表示可写,但是不代表可以被删除,该文件可以被删除的前提是对该文件所在的目录有写权限w,才可以删除
“x”——表示可以被执行
若是作用在目录上:
“r”——表示可读,可以ls查看目录内容
“w”——表示可写,目录内创建 + 删除 + 重命名目录
“x”——表示可执行(可以进入该目录)

每3位为一个rwx,代表不同意义的权限:
第一个3位表示文件的所有者所拥有的权限,若为“-”则表示没有权限

如图:
(2)第一组的3位:文件的所有者所拥有的权限,若为“-”则表示没有权限
在这里插入图片描述
(3)第二组的3位:文件的所在组的用户拥有的权限,若为“-”则表示没有权限
在这里插入图片描述
(3)第三组的3位:文件的其他组的用户拥有的权限,若为“-”则表示没有权限
在这里插入图片描述
(4)接着后面的数字:
若是文件,则数字代表该文件的硬链接的数量
若是目录,则表示该目录下子文件、子目录的数量
在这里插入图片描述
(5)其他一些信息
在这里插入图片描述

修改各角色对文件、目录权限

#修改文件、目录的权限,有下面两种方式
# u:所有者 g:所在组 o:其他人 a:全部人(u、g、o的总和)
-chmod

#第一种方式:通过 +、-、= 来变更权限
#(1)将文件、目录的所有者的权限设置为rwx,将所在组的权限设置为rx,将其他人的权限设置为rx
chmod u=rwx,g=rx,o=x [文件、目录名]

#(2)给文件、目录的其他人增加w的权限
chmod o+w [文件、目录名]

#(3)给全部人添加对该文件、目录的x的权限
chmod a+x [文件、目录名]

#(4)给文件的所有者除去执行的权限,给所在组增加写的权限
chmod u-x,g+w [文件、目录名]


#第二种方式:通过数字变更权限
# r=4,w=2,x=1,rwx=4+2+1=7
# chmod u=rwx,g=rw,o=x [文件、目录名] 等价于 chmod 751 [文件、目录名]
#
#(1)将/home/abc.txt文件的权限修改成 rwxr-xr-x,使用数字的形式
chmod u=7,g=5,o=5 /home/abc.txt

修改文件、目录的所有者

#改变文件、目录的所有者
chown [新的所有者] [文件、目录名]

#同时改变文件、目录的所有者和所在组
chown [新的所有者]:[新的所在组] [文件、目录名]

#如果是目录,使用-R可以使其下所有子文件或子目录递归生效
chown -R ...

#(1)将abc.txt文件的所有者改为tom
chown tom abc.txt
#若tom对abc.txt所在的目录没有写权限,则需要切换为root用户来操作

#(2)将/home/kkk目录下的所有文件和目录的所有者都改为tom
#首先需要切换为root用户来操作
chown -R tom /home/kkk/

修改文件、目录的所在组

#改变文件、目录的所在组
chgrp [新的所在组] [文件、目录名]

#(1)将/home/abc.txt文件的所在组改为bandit
#首先需要切换为root用户来操作
chgrp bandit /home/abc.txt

#(2)将/home/kkk目录下的所有子文件、子目录的所在组都改为bandit
#首先需要切换为root用户来操作
chgrp -R bandit /home/kkk/

13.定时任务调度

任务调度:指系统在某个时间执行特定的命令或程序
任务调度分类
1.系统工作:有些重要的工作必须周而复始地执行,如病毒扫描
2.个别用户工作:个别用户可能希望执行某些程序,比如备份数据库

crontab [选项]

#常用选项:
#编辑crontab定时任务
-e

#查询crontab定时任务
-l

#删除当前用户所有的crontab定时任务
-r

#重启任务调度
service crond restart

复杂任务的定时调度
对于比较复杂的任务,需要写脚本(Shell编程)

简单任务的定时调度
可以不用写脚本,直接在crontab中加入即可

示例

每小时的每分钟执行 ls -l /etc/ >> /tmp/to.txt命令(意为列出/etc下的文件、目录信息并写入到/tmp/to.txt中)

每分钟的指令为:*/1 * * * *(下面再详解)

#步骤:
#1.首先要打开crontab进入编辑模式
crontab -e
#2.写入命令
*/1 * * * * ls -l /etc/ >> /tmp/to.txt
#3.保存并退出
wq

时间参数讲解

特殊符号含义
*代表任何时间,比如第一个“*”,代表每个小时中的每一分钟都执行一次
代表不连续的时间,比如:0 8,12,16 * * * [命令] 表示每天的8点0分,12点0分,16点0分都执行一次命令
-代表连续的时间范围,比如:0 5 * * 1-6 [命令] 表示在周一到周六的每个凌晨5点0分执行一次命令
*/n代表每隔多久执行一次,比如:*/10 * * * * [命令] 表示每隔10分钟执行一次命令

“*”详解

位置含义范围
第一个“*”一小时当中的第几分钟0~59
第二个“*”一天当中的第几个小时0~23
第三个“*”一个月当中的第几天1~31
第四个“*”一年当中的第几个月1~12
第五个“*”一周当中的星期几0~7(0、7都代表星期日)

特定时间执行任务示例

时间含义
45 22 * * * [命令]每天的22点45分执行一次
0 17 * * 1 [命令]每周一的17点0分执行一次
0 5 1,15 * * [命令]每个月的第1天和第15天的凌晨5点0分执行一次
40 4 * * 1-5 [命令]每周一到周五的凌晨4点40分执行一次
*/10 4 * * * [命令]每天的凌晨4点开始,每隔10分钟执行一次,到凌晨5点就停了
0 0 1,15 * 1 [命令]每个月的第1天和第15天的0点0分、每周一的0点0分,都会执行一次
注意:星期几和几号(每个月的第几天)最好不要同时出现,因为它们都是定义天,容易让管理员混乱

以Shell脚本文件的形式定时执行任务

(1)定时执行 date >> /tmp/mydate(定时将date信息追加到/tmp/mydate中),脚本文件为/home/mytask.sh

#步骤:
#第一步:使用root用户,切换到/home
cd home
#第二步:编辑mytask.sh文件
vim mytask.sh
#第三步:将要执行的命令写入到mytask.sh文件中,并保存退出
date >> /tmp/mydate
wq
#第四步:赋予root用户对mytask.sh执行的权限
chmod 744 mytask.sh
#第五步:以编辑模式进入crontab
crontab -e
#第六步:写入定时执行的任务,并保存退出
*/1 * * * * /home/mytask.sh
wq

(2)每天凌晨2点将mysql数据库testdb备份到/tmp/mydb.bak文件中

#备份mysql数据库指令:
#mysql数据库路径一般在/usr/local/mysql/bin下
/usr/local/mysql/bin/mysqldump -u [用户名] -p [密码] testdb > /tmp/mydb.bak
#其他步骤同理

14.磁盘分区、挂载

分区基础知识

分区的2种方式
1.传统的mbr分区
(1)最多支持4个主分区
(2)系统只能安装在主分区
(3)扩展分区要占一个主分区
(4)MBR最大支持2TB,但拥有最好的兼容性

2.gtp分区
(1)支持无限多个主分区(但操作系统可能会限制,比如windows下最多128个分区)
(2)最大支持18EB的大容量(EB=1024PB,PB=1024TB)
(3)Windows7 64位以后支持gtp

Linux分区原理

在Linux中一切皆为文件,一切文件归根结底只有一个根目录,整个组成一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分

Linux中采用挂载的处理方式
挂载(mount)
挂载指Linux中将一个分区与一个目录建立映射关系,这时这个目录下即为这个分区的存储空间

卸载(umount)
即取消这个映射关系

示意图
在这里插入图片描述
Linux硬盘说明
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本为SCSI硬盘

IDE
对于IDE硬盘,驱动器标识符为“hdx”,其中,“hd”表面分区所在设备的类型,这里是指IDE硬盘了,“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)“~”代表分区,前4个分区基本用数字1-4表示,它们是主分区或扩展分区,从5开始就是逻辑分区
如:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区

SCSI
对于SCSI硬盘则标识为“sdx”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样

可用指令:lsblk -f 查看系统当前的分区和挂载情况
在这里插入图片描述
若想查看分区容量大小,可用指令:lsblk
在这里插入图片描述

挂载案例(虚拟机增加硬盘)

给Linux增加一块硬盘,并挂载到/home/newdisk目录
步骤:
(1)虚拟机添加1个G的硬盘
鼠标右键虚拟机选择【设置】
点击【添加】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时要重启虚拟机,操作系统才能识别到硬盘
在这里插入图片描述
重启

reboot

重启后 lsblk -f 就能看到硬盘了
在这里插入图片描述
(2)对sdb分区,使用指令 fdisk /dev/sdb

fdisk /dev/sdb

在这里插入图片描述
输入m获取帮助
在这里插入图片描述
根据提示得知选择n,输入n
在这里插入图片描述
选择p,代表要划一个主分区
在这里插入图片描述
输入1,代表主分区中的第一块作为主分区
然后一路回车完成
在这里插入图片描述
输入m,再次获取帮助,根据提示得知w:把分区信息写入硬盘并退出
在这里插入图片描述
输入w
在这里插入图片描述
此时就完成分区了,但是发现并没有文件系统类型和分区的唯一标识(操作系统还不能识别、使用该分区),因此需要格式化
在这里插入图片描述
(3)格式化:将sdb1分区格式化为ext4的文件系统类型
使用指令:mkfs -t ext4 /dev/sdb1
在这里插入图片描述
可以看到完成了格式化了,并且有了分区的唯一标识,此时操作系统才能识别该分区
在这里插入图片描述
(4)挂载(临时挂载——重启系统后将失效)
将新分区挂载到 /home/newdisk 目录
首先cd到 /home 目录下,并创建 /newdisk 目录
在这里插入图片描述
将分区sbd1挂载到/home/newdisk目录
使用指令:mount /dev/sdb1 /home/newdisk
在这里插入图片描述
此时可以看到完成挂载了
在这里插入图片描述
(5)设置开机自动挂载(永久挂载)
/etc/fstab 文件中记录了分区的挂载点信息,因此vim要进入这个文件中编辑:
vim /etc/fstab
在这里插入图片描述
参照里面的信息,输入要挂载的sdb1分区与挂载目录/home/newdisk相关信息(不要使用空格,使用Tab键
在这里插入图片描述
然后wq保存并退出
然后输入指令:mount -a 表示自动挂载生效
在这里插入图片描述
重启后,发现挂载仍然生效,大功告成!
在这里插入图片描述

查询磁盘整体使用情况

df -h

在这里插入图片描述

查询指定目录的磁盘占用情况

#查询指定目录的磁盘占用情况,默认为当前目录
du [可选] [目录]
# 可选值:
# -s 指定目录占用大小汇总
# -h 带计量单位
# -a 含文件
# --max-depth=1 子目录深度
# -c 列出明细的同时,增加汇总值

示例:查询 /opt 目录的磁盘占用情况,深度为1

du -ach --max-depth=1 /opt

在这里插入图片描述

统计目录下文件的个数(除去子目录,只是文件的个数)

“^-”:表示以-开头的(ls -l列出目录下所有信息时,-开头为文件类型,d开头为目录类型)
wc:统计

#列出该目录下所有目录、文件,然后过滤、只保留-开头的(代表文件),然后wc统计
ls -l [目录名] | grep "^-" | wc -l 

统计目录下文件的个数,包括子目录里的所有文件

加个R:代表递归统计

#递归地列出该目录下所有目录、文件,然后过滤、只保留-开头的(代表文件),然后wc统计
ls -lR [目录名] | grep "^-" | wc -l 

统计目录下子目录的个数(除去文件,只是子目录的个数)

同理,将-开头改为以d开头,代表目录

#列出该目录下所有目录、文件,然后过滤、只保留d开头的(代表目录),然后wc统计
ls -l [目录名] | grep "^d" | wc -l 

### 统计目录下子目录的个数,包括子目录里的所有目录
同理加个R
```bash
#递归地列出该目录下所有目录、文件,然后过滤、只保留-开头的(代表文件),然后wc统计
ls -lR [目录名] | grep "^d" | wc -l 

以树状形式显示目录结构

#1.首先yum指令下载tree插件
yum install tree
#2.安装完成后使用tree指令
tree

15.网络环境配置

第一种:自动获取IP地址

由于每次启动虚拟机打开Linux都要手动打开网络连接,非常麻烦,现在配置自动获取IP地址,来使得Linux启动后自动获取IP地址,但是缺点是这样IP地址是动态的,每次获取的IP地址可能不一样

在网络设置中将【自动连接】勾上即可
在这里插入图片描述
在这里插入图片描述

第二种:指定固定IP地址

若是在真实服务器场景下,动态IP地址肯定是不行的,必须得是固定IP地址
网络配置的文件为:/etc/sysconfig/network-scripts/ifcfg-ens33(ens33为虚拟网卡名称)如图:
在这里插入图片描述
ifcfg-ens33即为ens33这块虚拟网卡的配置文件,若有多个虚拟网卡,就有多个配置文件

使用指令vim打开这个配置文件进行编辑:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

在这里插入图片描述
因为此时是DHCP自动获取IP地址(BOOTPROTO=dhcp),若要指定固定IP地址,则要写入:
IPADDR=xxx(IP地址)
GATEWAY=xxx(网关,与Windows虚拟机设置的网关一致,因为要通过这个网关接入互联网)
DNS1=xxx(与网关地址一样)

ONBOOT改为yes
BOOTPROTO改为static(静态IP地址)

虚拟机软件-【编辑】-【虚拟网络编辑器】里查看虚拟网关
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后wq保存并退出
最后要重启一下网络服务才会生效

#重启网络服务
service network restart

重启后ifconfig看到设置已生效
在这里插入图片描述
能ping通外网
在这里插入图片描述
之后重启系统后也会自动启用这个网络配置

防护墙相关

#查看防火墙所有信息
firewall-cmd --list-all

#查询端口开启信息
firewall-cmd --list-ports

#--zone(作用域)
#添加端口(格式为:端口/通讯协议)--add-port=80/tcp
#永久生效--permanent,没有此参数重启后失效
#例:永久开放80端口号
firewall-cmd --permanent --zone=public --add-port=80/tcp
#多端口
firewall-cmd --zone=public --add-port=80-90/tcp --permanent
#移除80端口号
firewall-cmd --permanent --zone=public --remove-port=80/tcp

#更新防火墙规则
firewall-cmd --reload

#启动|关闭|重新启动 防火墙
systemctl [start|stop|restart] firewalld.service

16.进程管理

在Linux中,每个执行的程序(代码)都称为一个进程,每一个进程都有分配一个ID号
每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如www服务器

每个进程都可以以两种方式存在:前台、后台
前台进程:用户目前的屏幕上可以进行操作的
后台进程:实际在执行,但是屏幕上无法看到

一般系统的服务都是以后台进程的方式存在,而且会常驻在系统中,直到关机才结束

查看系统当前进程

#查看系统当前正在执行的进程,及一些进程的信息
ps

#显示当前终端的所有进程信息
ps -a

#以用户的格式显示进程信息(所属用户)
ps -u

#显示后台进程运行的参数
ps -x

#一般aux一起用:ps -aux

#显示所有进程
ps -e

#以全格式形式显示进程
ps -f

#以全格式形式显示所有进程,PPID指父进程ID
ps -ef

例:
输入ps -aux,列出以下进程信息:
在这里插入图片描述
太多了看不过来,则使用more分页查看ps -aux | more

在这里插入图片描述
说明:

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
所属用户进程ID占用cpu百分比占用内存百分比占用的虚拟内存占用的物理内存使用的终端进程状态进程启动的时间占用cpu时间启动该进程的命令

进程状态说明:

D    不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
R   正在运行或可运行(在运行队列排队中)
S   可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T   已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W   正在换页(2.6.内核之前有效)
 X   死进程 (未开启)
 Z   僵尸进程  进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
 <   高优先级(not nice to other users)
 N   低优先级(nice to other users)
 L   页面锁定在内存(实时和定制的IO)
 s   一个信息头
 l   多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)
 +   在前台进程组

查看某一个服务的进程(根据服务名)

ps -aux | grep [服务名]

例:查看sshd服务的进程
在这里插入图片描述

查看父进程(即以全格式形式查看进程,PPID即父进程ID)

#查看所有进程信息同时查询父进程ID
ps -ef
#以分页形式
ps -ef | more
#查看某个服务的进程信息及父进程ID
ps -ef | grep [服务名]

PPID就是父进程ID
在这里插入图片描述

终止进程(根据进程ID)

#通过进程号杀死进程
kill [可选] [进程ID]

#常用选项:
#强制终止进程
-9 

示例:
(1)剔除某个登录用户,如剔除用户jack
在这里插入图片描述
(2)终止远程登录服务sshd,以后在适当的时候再重新启用sshd服务
在这里插入图片描述
若要重启sshd服务,则service sshd restart

(3)强制终止一个命令行终端
命令:/bin/bash 即表示打开一个终端
因此根据服务名查询所有终端的进程

ps -aux | grep bash

根据终端进程开启的时间,判断要关闭的终端,这里假设终止先前打开的一个终端
在这里插入图片描述
发现kill 2967不起作用(因为它被系统认为是核心进程,无法终止)
在这里插入图片描述
所以强制终止进程:kill -9 2967
在这里插入图片描述

终止多个进程(根据服务名称匹配)

#把所有归属于指定进程名的进程终止,常用于终止一个进程及它的所有子进程
killall [进程名]

以树形结构查看进程(可以更直观地看出进程父子关系)

若没有tree插件,首先需要按照tree插件:yum install tree

#查看进程树
pstree [可选]

#常用选项:
#显示进程地PID
-p

#显示进程地所属用户ID
-u

在这里插入图片描述

17.服务管理(守护进程)

服务(service)本质就是进程,但是是运行在后台的,通常会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙等),因此我们又称之为守护进程

查看有哪些系统服务

#方式1
setup -> [系统服务]

#方式2
/etc/init.d/
#CentOS7之后用:
systemctl list-unit-files

方式1:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方式2:
在这里插入图片描述

service(CentOS7之后为:systemcel)相关指令

service [服务名] [可选]
#CentOS7之后用systemctl代替service,但是service也还能使用,并且语法为:
systemctl [可选] [服务名]

#可选值:
#启动
start

#停止
stop

#重启
restart

#重载
reload

#状态信息
status

注:使用systemctl(service)相关指令操作后,会立即生效,但是只是临时生效,当系统重启后,还是回归到以前对服务的设置

例子:
(1)查看防火墙状态

service iptables status

#CentOS7之后用:
systemctl status firewalld

检查Linux的某个端口是否在监听,并且可以访问

telnet [ip地址] [端口]

服务的运行级别

即前面目录5的内容
在这里插入图片描述
每个服务在各个运行级别中都可以设置【是否自启动】

设置某个服务自启动、关闭永久生效

#通过chkconfig命令可以给每个服务在各个运行级别下设置自启动/关闭(不会自启动)
chkconfig

#查看服务在各个运行级别下的自启动/关闭情况:
chkconfig --list

#只查看某一个(通过服务名)
chkconfig --list | grep [服务名]
#或:
chkconfig [服务名] --list


#是否将某个服务在运行级别5下设置为自启动,on:自启动,off:关闭(即不自启动)
chkconfig --level 5 [服务名] on/off


#################################################
#CentOS7之后
#enable:自启动
#disable:关闭(即不会自启动)
#查看服务的自启动/关闭情况:
systemctl list-unit-files

#查看所有自启动/关闭的服务
systemctl list-unit-files | grep enable/disable

在这里插入图片描述
#CentOS7之后为:
在这里插入图片描述
在这里插入图片描述
设置自启动/关闭后,需要重启reboot之后才会生效

动态监控进程top

top与ps命令很相似,它们都用来显示正在执行的进程,top与ps的最大的不同的之处,在于top在执行一段时间可以更新正在运行的进程

top [选项]

#指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
-d [秒数]

#使top不显示任何闲置或僵死进程
-i

#通过指定监控进程ID来仅仅监控某个进程的状态
-p

#输入top后,再输入u,再输入用户名,可查看某个用户的进程
u
[用户名]

#输入top后,再输入k,再输入进程ID,即可杀死某一进程
k
[PID] 

#输入top后,再输入P(大写),可使之按照CPU占用率从多到少排序显示(默认下就是这种)
P

#输入top后,再输入M(大写),可使之按内存占用率从多到少排序显示
M

#输入top后,再输入N(大写),可使之按PID号从大到小排序显示
N

#退出top
q

在这里插入图片描述

监控网络状态

netstat [选项]

#按一定顺序排列输出
-an

#显示哪个进程在调用
-p

示例:
(1)查看系统所有的网络服务,并按一定顺序排列输出,并显示哪个进程在调用,并分页
在这里插入图片描述

(2)只查看sshd服务的有关信息
在这里插入图片描述

18.rpm包的管理

rpm:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的

Linux的分发版都有采用(suse,redhat,centos等等),可以算是公认的行业标准了

rpm包的简单查询指令

#查询已安装的所有rpm软件包
rpm -qa

#查询已安装的所有rpm软件包,以分页显示
rpm -qa | more

#查询某个已安装的rpm软件包
rpm -qa | grep [软件包名称]

#查询软件是否安装
rpm -q [软件包名称]

#查询软件包信息
rpm -qi [软件包名称]

#查询软件包中的文件(可以用来查询软件包安装在哪个位置)
rpm -ql [软件包名称]

#查询文件所属的软件包
rpm -qf

#安装某个rpm软件包
rpm -ivh [软件包全路径名称]
#参数说明:
#i:安装
i=install
#v:提示
v=verbose
#h:进度条
h=hash

#卸载某个rpm软件包
rpm -e [软件包名称]
#如果有其他软件包依赖于将要卸载的软件包,卸载时则会产生错误信息,若还是要删除,则可以增加参数:--nodeps,就可以强制删除, 但是不推荐这样,因为依赖于该软件包的软件可能将无法运行
#强制卸载
rpm -e --nodeps

19.YUM

yum:是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包

#查询yum服务器是否有需要安装的软件
yum list | grep [软件包名称]

#下载安装指定的yum包
yum install [软件包名称]

六、搭建JavaEE环境

安装JDK、Tomcat、MySql

不管是在将Linux系统作为服务器来运行Java程序,还是在Linux上进行开发,都需要安装JDK,若是作为服务器来运行程序,还需要安装Tomcat容器、Mysql数据库

这里演示安装JDK
1.先使用Xftp将jdk安装包上传到linux中的/opt下
在这里插入图片描述
2.在/opt下解压安装包
在这里插入图片描述
在这里插入图片描述
3.配置环境变量
编辑/etc/profile文件来配置环境变量:vim /etc/profile,输入G(大写)定位到文本末尾,写入:

JAVA_HOME=/opt/jdk1.8.0_16 1
PATH=/opt/jdk1.8.0_16 1/bin:$PATH
export JAVA_HOME PATH

4.注销用户后生效
测试是否安装成功,在任何地方输入:java或javac
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴陵FL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值