文章目录

1、Linux-CentOS7 分区

image-20201124232619395

2、软件选择安装

选择带有GUI的选项安装
image-20201124232907437

image-20201124233100019

3、VMtools

1、安装

image-20201124233901773

2、直接黏贴命令在win和centos之间

可以从windows复制命令到linux中,快速复制粘贴

image-20201124233957248

3、设置win和centos的共享文件夹

点击要共享的虚拟机,右键-> 设置 -> 选项 -> 共享文件夹

设置成总是启动,并且添加一个 本地共享文件夹的位置

image-20201124234202010
image-20201124234317840

4、测试

linux 系统中默认挂在VM tool共享文件夹的目录为 /mnt/hgfs

image-20201124234744729

4、linux目录结构

linux的文件系统采用层级式的树状目录结构。在此结构中的最上层是根目录/ ,然后在此目录下在创建其他目录。

总结:在linux系统之间,一切对象皆文件

  • bin 存放二进制文件指令

  • sbin 存放管理员使用的系统管理程序

  • dev 存放系统设备

  • etc 存放配置文件文件

  • home 家目录 存放用户

  • lib 存放库文件

  • mnt 存放挂载设备

  • opt 安装的软件包

  • proc 存放内核

  • root root用户的一些文件

  • selinux 存放安全配置

  • tmp 临时文件

  • user 用户信息 user/local 存放安装后软件的目录

  • var

5、远程连接

1、远程登录
在连接前,linux必须开启22端口的sshd服务

2、远程上传下载

6、vi和vim的三种模式

1、正常模式

我们可以使用快捷键

可以上下左右移动光标 可以删除字符整行

2、插入模式/编辑模式

按下 i o a r等任何一个字母都可以加进入插入模式

3、命令行模式

可以输入命令保存 退出

:wq	保存退出
:q!	不保存退出

4、vim之快捷键

1、拷贝当前行

正常模式下,将光标移到需要复制的行 ,输入yy即完成赋值 输入p即完成粘贴 输入数字+yy即可赋值数字行(5yy即复制5行)

2、删除当前行

同复制命令,删除命令为dd 多行删除为数字+dd 即(5dd)删除5行

3、查找命令

在命令行模式下输入 /+搜索词 输入n切换到下一个

4、设置行号

在命令行模式 set nu 取消行号 set nonu

5、调到行首和行尾

直接在正常模式下 输入G调到行尾 输入gg 调到行首

6、撤销动作

在正常模式下输入 u

7、快速移动光标

第一步、显示行号

​ set nu

第二步、输入20

第三步、输入shift + g

7、关机&重启

1、shutdown

shutdown -h now: 立即关机

shutdown -h 1 : 表示1分钟后立即关机

shutdown -r now : 立即重启

halt:直接使用,等价于直接关机

reboot:重启系统

sync:把内存的数据同步到磁盘上

注:当我们关机或者重启时,都应该先执行以下sync指令,把内存中的数据加载到磁盘上`

2、用户的登录和注销

尽量使用普通用户登录,只有在需要的时候再转换到root用户

使用su切换到root用户

使用logout注销用户

注 :logout注销指令在图形运行级别无效,在运行级别3下有效`

8、用户管理

1、用户、组、家目录之间的关系

用户和用户组的对应关系有以下 4 种:

  1. 一对一:一个用户可以存在一个组中,是组中的唯一成员;
  2. 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
  3. 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
  4. 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。

Linux 用户和组

2、添加用户

1、基本语法

useradd [选项] 用户名

useradd -d 路径 用户名 强制给用户指定一个家目录

2、实际案例

添加的用户如何不指定则自己默认为一个组。

添加完的用户将自动在/home下自动生成一个目录

image-20201124235423616

3、设置密码

使用 passwd 用户名

image-20201124235500291

4、查看当前目录

使用 pwd

5、删除用户

1、删除用户,但是保存家目录

userdel xxx

2、删除用户,且删除家目录

userdel -r xxx

在删除用户时,我们一般不会将家目录删除掉

6、查询用户id

id 用户名

我们可以看到,没有指定组的情况下,用户创建时自己指定为一组

image-20201124235531760

7、切换用户

su 用户名

8、查看当前用户

who am i

3、用户组

1、添加组

类似于角色,系统可以对有共性的多个用户进行统一管理

指令:groupadd 组名

2、删除组

groupdel 组名

image-20201125000359483

image-20201125000413147

不能删除非空组 ( 组内不能有用户 )

3、添加用户指定组

useradd -g 用户组 用户名

image-20201125000610588

image-20201125000635031

4、修改用户组

usermod -g 用户组 用户名

image-20201125000714451

5、用户和组的相关文件

1、用户配置文件(用户信息) /etc/passwd

​ 用户的配置文件,记录用户的各种信息

​ 每行的含义:用户名:口令:用户标识符:组标识符:注释性描述:主目录:登录shell

​ Centos6用户id是从500开始 ,Centos7是从1000开始

image-20201125000824893

2、组配置文件(组信息) /etc/group

​ 组的配置文件,记录linux包含的组的信息

​ 每行的含义:组名:口令:组标识符:组内用户列表

​ Centos6用户组id是从500开始 ,Centos7是从1000开始

image-20201125000838721
3、口令配置文件(密码登录信息) /etc/shadow

密码都是经过加密的
image-20201125000857975

9、linux实操篇

1、运行级别

一共有七个运行级别

0:关机

1:单用户(找回丢失密码)

2:多用户无网络服务

3:多用户有网络服务

4:保留

5:图形界面

6:系统重启

系统的运行级别配置文件 /etc/inittab

image-20201125001147919

2、切换指定运行级别的指令

init [0 1 2 3 5 6]

3、ROOT密码丢失,如何找回

思路:进入单用户模式,修改密码

4、帮助指令

man 命令

help 命令

5、文件目录类

1、pwd指令

pwd:显示当前工作路径的绝对路径

image-20201125001237642

2、ls指令

ls 【选项】 【目录或是文件】

ls -a 显示当前目录所有的文件和目录,包括隐藏的

ls -l 以列表的方式显示信息 (简写:ll

3、cd指令

cd ~ 或者 cd 回到自己的家目录

cd … 回到当前目录的上一级目录

4、mkdir指令

mkdir指令用于创建目录

mkdir [选项] 要创建的目录

mkdir -p :创建多级目录(mkdir -p /home/animal/tiger)

image-20201125001359565

5、rmdir指令

rmdir指令删除空目录

rmdir [选项] 要删除的空目录 (只能删除空目录)

image-20201125001453280

image-20201125001523011

rm -rf 目录/文件 删除一切文件或目录(包含非空目录)

image-20201125001616669

6、 touch指令

touch 文件名 创建空文件

可以一次创建多文件

image-20201125001748136

7、cp指令

cp指令拷贝文件到指定目录

cp [选项] source dest 只能拷贝文件

拷贝目录,不能拷贝复制到目标目录

image-20201125002101810

cp -r source dest 将源目录夹整个拷贝到目标文件夹中

目标目录不存在,直接复制

image-20201125002355916

目标目录存在,询问复制

image-20201125002529128

\cp -r source dest 强制覆盖,不提示

image-20201125002547489

8、rm指令

删除文件或者目录

rm [选项] 文件/目录

rm 文件名 提示删除

只能删除文件,不能删除目录

image-20201125002644241

image-20201125002617424

rm -f 文件名 强制删除,不提示

只能删除文件,不能删除目录

image-20201125003006889

rm -r 文件夹名 递归询问删除文件夹

image-20201125002741864

rm -rf 文件夹名 删除一切 (毁天灭地~~~从删库到跑路~~~)

image-20201125003036862

9、mv指令

移动文件与目录或者重命名

mv oldFileName newFileName (重命名)

新文件/目录不存在的情况下,旧文件/目录更名成新文件/目录名

image-20201125003242253

mv oldFilePath newFilePath(移动文件不改名)

image-20201125003906430

mv oldFilePath newFilePath(移动文件并改名)

image-20201125003840171

10、cat指令

查看文件内容,以只读的方式打开

cat 文件名

image-20201125003959288

cat 文件名 -n 查看文件并带行号

image-20201125004013454

cat -n /etc/profile |more 分页查看 使用空格键翻页

将查询结果使用管道重定向到more来输出

image-20201125004038026

11、more指令

空格来制定下一页

image-20201125004127534

image-20201125004137147

12、 less指令

page up 上一页

page down 下一页

空格 下一页

image-20201125004247066

13 、> 指令 和 >>指令

​ >输出重定向:会将文件覆盖

​ >> 追加:会追加文件

ls -l > 文件 功能描述:列表的内容写入到文件a.txt中(覆盖写)

ls -al >> 文件 功能描述:列表的内容追加到文件aa.txt的末尾(追加写)

cat 文件1 > 文件2 功能描述:将文件1的内容覆盖到文件2

echo “内容” >> 文件

image-20201125004501590

image-20201125004519704

14、echo指令

echo输出内容到控制台

15、head指令

head用于显示文件的开头部分内容。默认情况下head指令显示文件的前10行内容

head 文件名

head -n 5 文件名 查看前5行的内容
image-20201125004539733

16、tail指令

tail指令用于输出文件中尾部的内容,默认情况下tail执行显示文件的后10行内容

tail 文件名

tail -n 5 文件名 查看后5行的内容

image-20201125004612161
tail -f 文件 功能描述:实时追踪该文档的所有更新,工作中经常使用

6、ln指令

软链接也叫符号连接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

ln -s /root linkToRoot (ln 小写的L)

image-20201125004810169

image-20201125004907168

当我们使用pwd指令查看目录时,我们仍然看到的是软链接所在的目录

image-20201125005211431

7 、history指令

history 查看已经执行过的历史指令

image-20201125005249542

显示最近执行的10个

history 10

image-20201125005305162

!405 执行历史记录为第405条的命令

image-20201125005337335

8、时间日期类

date 指令 显示当前日期

date +%Y 显示当前年份

date +%m 显示当前月份

date “+%Y %m %d” 显示当前年月日

date “+%Y %m %d %H %M %S” 显示当前 年月日时分秒

image-20201125172726142

date -s “2020-9-13 15:29:30” 设置日期时间

不写入bios 重启就会失效

9、日历类

cal 显示当前月份日历

image-20201125174032710

cal 2020 显示2020年日历

image-20201125174048476

10、搜索查找类

1、find 指令

find [搜索范围] [选项]

find /opt -name java 查找/home目录下的名称为hello的文件

image-20201125174848718

find /opt -user root |head -n 5 按拥有者,查找/opt目录下,用户名称为root的文件

image-20201125174914879

find / - size +20M 查找整个linux系统下大于20M的文件 (+n大于 ,-n小于 ,n等于)

image-20201125175035273

find / -name.txt 查询 / 目录下,所有 .txt的文件

image-20201125175115102

2、locate指令

updatedb 创建locate数据库

locate 文件名 快速定位文件的所在目录

image-20201125175158194

3、grep指令

cat hello.txt | grep hello -in // -i 忽略大小写 -n 行数

image-20201125175439599

4、压缩和解压缩之gzip

gzip/gunzip 指令

gzip 用于压缩文件 (压缩完文件后,原先的文件就消失了)

image-20201125175920262

gunzip 用于解压的

image-20201125180151732

5、压缩和解压缩之zip

zip [选项] xxx.zip 是用于压缩文件的

-r 递归压缩,即压缩目录

将home目录下的所有文件打包名称为mypackage

image-20201125181640808

image-20201125181915702

unzip [选项] xxx.zip 用于解压的(在项目打包发布中很有用)

-d <目录> :指定压解后的文件的存放目录

unzip -d /opt/test /opt/test/oldPackage/gzipFile.zip

将gzipFile.zip解压到 /opt/test文件夹下

image-20201125182047339

6、压缩和解压缩之tar

应用案例

1、打包多个文件。将/home/a1.txt 和/home/a2.txt压缩成 a.tar.gz

[root@service test]# tar -zcvf newFile.tar.gz  1.txt 2.txt 3.txt 

image-20201125182407270

2、将目录下所有文件打包

tar -zcvf allFile.tar.gz /opt/test/

image-20201125182536121

3、将tar包解压缩

**tar -zxvf a.tar.gz** 

image-20201125182913153

image-20201125182925929
4、将tar包压缩到指定目录下

tar -zxvf allFile.tar.gz  -C  ../test/

image-20201125183348170

10、组管理和权限管理

1.文件/目录所有者

image-20201125185434075

2、查看文件的所有者

当某个用户创建了一个文件后,这个文件所在组就是该用户所在的组

ls -ahl

image-20201125185020258

3、修改文件所有者

chown -R 将要修改的文件名 需要修改的文件 /文件夹 将当前目录下所有文件的所有者修改

修改文件所有者

chown 用户名 文件名

image-20201125185549976

image-20201125185732200

修改目录所有者

chown -hR  huanglejia:huanglejia test

image-20201125190049546

image-20201125190104284

4、组的创建

当我们创建一个文件时,默认会为文件指定当前用户为所属者和所属组

image-20201202151606799

5、修改文件所在的组

[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

实例

[root@service opt]# chgrp huanglejia fileGroup 

image-20201202152029686

6、其他组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

7、权限详细介绍

文件/文件夹的类型

- 普通文件

d 目录

l 软链接

c 字符设备

b 块文件,硬盘

image-20201202152643789

8、权限管理

文件权限位

image-20201202153010594

- chmod 修改文件或者目录的权限

chmod  u= rwx,g=rwx,o=rwx   文件名

文件初始权限

image-20201202153212149

给文件赋予权限

[root@service test]# chmod u-x,g+w a.txt 

可以用户权限删除了’x‘执行权限,本组增加了’w‘权限

image-20201202153301643

[root@service test]# chmod a+x a.txt  所有用户添加读的权限

image-20201202153502912

11、任务调度

crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和 Windows 中的计划任务有些类似。

1、快速入门

  1. crontab -e
  2. */1 * * * * date /etc >> /tmp/to.txt
  3. 保存退出
  4. 每一分钟都会自动执行

2、任务调度的实例

案例1:每隔1分钟,将当前的日期信息,追加到/tmp/mydate文件中

3、相关指令

项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

在时间表示中,还有一些特殊符号需要学习,如表 3 所示。

特殊符号含义
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"/10***命令",代表每隔 10 分钟就执行一次命令。

当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。知道了这 5 个时间字段的含义,我们多举几个时间的例子来熟悉一下时间字段,如下 所示。

时间含义
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 分钟执行一次命令
0 0 1,15 * 1命令在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令

命令示例

命令含义
*/5 * * * * /bin/echo “11” >> /tmp/test让系统每隔 5 分钟就向 /tmp/test 文件中写入一行“11”
5.5 * * 2 /sbin/shutdown -r now让系统在每周二的凌晨 5 点 05 分重启一次。
30.3 1,10,15 * * /root/sh/autobak.sh在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本 autobak.sh。

12、linux的挂载

查看挂载情况

[root@localhost tmp]# lsblk -f

image-20201202164407402

查看挂载分区大小

[root@localhost tmp]# lsblk

image-20201202164436528

13、linux添加新分区

1、在vm中添加新硬盘 20g

2、重启

3、查看分区 lsblk

如果是第一次创建后,没有分区

image-20201202165839904

4、分区

[root@localhost /]# fdisk  /dev/sdb
#m查看帮助    n创建新分区    w退出   
命令(输入 m 获取帮助):n
Select (default p):    默认回车
分区号 (1-4,默认 1):	   默认回车
起始 扇区 (2048-41943039,默认为 2048):   默认回车
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):				默认回车
命令(输入 m 获取帮助):w

image-20201202165929379

image-20201202170517066

image-20201202170549056

磁盘命令大全

image-20201202170026048

5、格式化分区

[root@localhost /]# mkfs -t   ext4  /dev/sdb1

image-20201202170753799

6、挂载 (如果重启则消失)

先创建需要挂载的目录

[root@localhost /]# mkdir /newDisk

挂载分区

mount /dev/sdb1 /newdisk/

image-20201202171617242

7、添加自动挂载

vi /etc/fstab

image-20201202171712745

/dev/sdb1                       /newdisk        ext4    defaults        0 0

8、启动生效

mount -a 立刻生效

如果不想挂载到某个位置上,可以解挂

解挂载

umount /dev/sdb1

14 、查看磁盘情况

1、 查看系统整体磁盘情况查询

#磁盘过满可能会影响执行性能
[root@service /]# df -lh

image-20201202161041651

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

#du  -h    目录
[root@service /]# du -hs /opt

image-20201202161219443

#dept代表文件夹层数
[root@service /]# du -ach --max-dept=1 /opt

image-20201202161446025

3、实用指令

1、统计/usr/local/mysql/文件夹下文件的个数

[root@service mysql]# ls -l /usr/local/mysql/ | grep "^-" |wc -l

image-20201202161750947

2、统计/home文件夹下目录的个数

[root@service mysql]# ls -l /home | grep "^d" |wc -l

image-20201202161855938

3、统计/opt文件夹下目录的个数,包括子文件夹里的目录

[root@service home]# ls -lR /opt | grep "^d" |wc -l

image-20201202161951572

4、统计/usr文件夹下文件的个数,包括子文件夹里的文件

[root@service home]# ls -lR /usr | grep "^-" |wc -l

image-20201202162033594

5、以树状显示这个指令

image-20201202162209187

15、修改主机ip

查询ip

[root@service /]# ip addr
[root@service /]# ifconfig

image-20201202160839863

可以看出我们的网卡名称为eth0

[root@service /]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

image-20201202160932187

设置静态/动态获取、ip地址、子网掩码、网关等信息

16、进程管理

1、什么是进程

进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。

这么讲很难理解,那我们换一种说法。程序是人使用计算机语言编写的,可以实现一定功能,并且可以执行的代码集合。而进程是正在执行中的程序。当程序被执行时,执行人的权限和属性,以及程序的代码都会被加载入内存,操作系统给这个进程分配一个 ID,称为 PID(进程 ID)。

也就是说,在操作系统中,所有可以执行的程序与命令都会产生进程。只是有些程序和命令非常简单,如 ls 命令、touch 命令等,它们在执行完后就会结束,相应的进程也就会终结,所以我们很难捕捉到这些进程。但是还有一些程和命令,比如 httpd 进程,启动之后就会一直驻留在系统当中,我们把这样的进程称作常驻内存进程。

2、查看系统执行的进程

[root@localhost ~]# ps aux
#查看系统中所有的进程,使用 BS 操作系统格式
[root@localhost ~]# ps -le
#查看系统中所有的进程,使用 Linux 标准命令格式
a:显示一个终端的所有进程,除会话引线外;
u:显示进程的归属用户及内存的使用情况;
x:显示没有控制终端的进程;
-l:长格式显示更加详细的信息;
-e:显示所有进程;

ps

image-20201202154627484

[root@service test]# ps aux 

image-20201202154654742

[root@service test]# ps -le

image-20201202155052881

ps -le 命令输出信息

表头含义
F进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
S进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID运行此进程的用户的 ID;
PID进程的 ID;
PPID父进程的 ID;
C该进程的 CPU 使用率,单位是百分比;
PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
NI进程的优先级,数值越小,该进程越早被执行;
ADDR该进程在内存的哪个位置;
SZ该进程占用多大内存;
WCHAN该进程是否运行。"-"代表正在运行;
TTY该进程由哪个终端产生;
TIME该进程占用 CPU 的运算时间,注意不是系统时间;
CMD产生此进程的命令名;

3、终止进程kill和killall

kill 【选项】 进程号

kill 进程名称(支持通配符)

kill -9 进程号 (强制杀死)

1、踢掉某个非法的用户

ps -aux | grep  服务名          #找出进程id

image-20201202155949004

kill 进程号       #杀死进程

image-20201202155724695

image-20201202155754653

2、终止远程登录服务sshd,在适当的时候再次重启sshd

ps -aux | grep sshd #找出进程id

kill 进程号 杀死进程

image-20201202160044266

3、killall全部杀死

killall 服务名

4、强制杀死终端

ps -aux | grep bash

kill - 9 进程号

5、查看进程书

#显示进程以及id
[root@service huanglejia]# pstree -p

image-20201202160327870

#显示进程的所属用户
[root@service huanglejia]# pstree -u

image-20201202160339342

17、防火墙/服务管理

1、Centos6

1、查看当前防火墙的状态

service iptables status		

image-20200927003421450

2、关闭防火墙

service iptables stop

image-20200927003516724

3、查看服务名

setup
ls /etc/init.d/

image-20200927004345957

4、自启动

chkconfig功能说明:检查,设置系统的各种服务
语法: 
chkconfig [--add][--del][--list][系统服务] 或 
chkconfig [--level<等级代号>][系统服务][on/off/reset]
--add 添加服务
--del 删除服务
--list 查看各服务启动状态

给每个服务的各个运行级别设置自启动/关闭

1、查看服务
chkconfig --list

image-20200927004632943

2 查看单个服务信息
chkconfig iptables --list
chkconfig --list | grep  iptables
3关闭自启动
chkconfig   --level  5 sshd  off
4在所有模式下关闭/打开自启动
chkconfig   服务名  on/off

2、Centos7

在Centos7中使用firewall来代替ipables,但是iptables也可以继续安装使用,以下是firewall的操作命令

1、启动防火墙

systemctl start firewalld

image-20201114202415280

2、查看防火墙的状态

systemctl status firewalld

image-20201114202521767

3、关闭防火墙

systemctl stop firewalld

image-20201114202844773

4、设置防火墙开机自启

systemctl enable firewalld.service

image-20201114203258225

5、关闭防火墙开机启动(需先关闭防火墙)

systemctl disable firewalld.service

6、查看firewall的状态

firewall-cmd --state

image-20201114203849555

7、查看防火墙规则

firewall-cmd --list-all

image-20201114204123878

8、重新加载防火墙配置

firewall-cmd --reload

image-20201114204241554

9、查看当前开放端口(允许任意IP访问)

firewall-cmd --zone=public --list-ports

image-20201114205437220

10、开放指定端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
//   --permanent为永久生效,没有此参数 服务器重启后配置失效

image-20201114205956609

查看规则

image-20201114210048923

11、移除端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload

image-20201114210322926

可以看到80端口已经被移除了

12 其他命令暂时用不到

查看允许指定IP访问端口的规则
firewall-cmd --zone=public --list-rich-rules
开放指定端口(只允许指定IP访问)

以“只允许192.168.1.1的主机连接3306端口”为例

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload

PS. --permanent为永久生效,没有此参数centos重启后该配置将失效

移除规则(只允许指定IP访问的端口)

以“移除只允许192.168.1.1的主机连接3306端口”为例

firewall-cmd --remove-rich-rule="rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="3306" accept" --permanent
firewall-cmd --reload

PS. --permanent为永久生效,没有此参数centos重启后该配置将失效

移除默认的ssh服务

移除默认的ssh服务前,先确认是否已经额外开放了22端口,否则会导致无法使用ssh远程连接。

firewall-cmd --remove-service=ssh --permanent
firewall-cmd --reload

PS. --permanent为永久生效,没有此参数centos重启后该配置将失效

查看某个端口是否开放

以检查80端口为例(yes:开放;no:未开放)

firewall-cmd --zone=public --query-port=80/tcp
TCP端口转发

# 允许防火墙伪装IP

firewall-cmd --add-masquerade

# 将本地80端口的流量转发到192.168.1.1的80端口

firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.1:toport=80 --permanent

PS. --permanent为永久生效,没有此参数centos重启后该配置将失效

查看版本:firewall-cmd --version

查看帮助: firewall-cmd --help

查看状态: firewall-cmd --state

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

18、rpm包

rpm(RedHat Package Manager)软件包管理工具。类似于setup.exe

rpm -qa | grep 文件

示例

[root@service test]# rpm -qa | grep firewalld

image-20201202154332539

名称:firewalld

版本号:0.6.3-8

适用操作系统:el7_8.1

如果是noarch表示通用

rpm -qa 		//查询所有安装的包
rpm -qa | more 		//分页查看
rpm -qa | grep xxx 	//查找软件
rpm -qi 软件包			//查看版本号
rpm -ql 软件包			//查看所有的依赖文件安装位置
rpm -qf 文件  		//查看文件所属的包	
rpm -e  软件包			//删除软件包

rpm -ivh rpm包权路径名称		//安装rpm包
							// i = install 安装
							// v = verbose	提示
							// h = hash	进度条

安装示例

首先找到firefox的安装rpm包,你需要挂载上安装centos的iso文件,然后到/media/下去找rpm

root# cd /Media/Centos_6.8/Packages/
root# ls -l firefox-45.0.1-1.el6.centos.x86_64.rpm
root# cp firefox-45.0.1-1.el6.centos.x86_64.rpm /opt/
cd /opt/
rpm -ivh firefox

19、yml

1、介绍

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

2、yml的基本指令

yum list | grep 软件名 //查看yml服务器是否有该软件

image-20201202153935258

yum install  软件名 	//安装软件

安装firefox浏览器

[root@service test]# yum install firefox

image-20201202154104990

yum  remove 软件名 //卸载软件

image-20201202154144638

20、JavaEE开发环境搭建

1、搭建JDK

使用wget 远程下载或者从本地远程上传到服务器的/opt目录下

1、解压JDK

在**/opt**目录下解压jdk

tar -xzvf jdk-linux-x64.tar.gz

image-20201114191348477

2、移动jdk

根据习惯,将JDK移动到 /usr/local/路径下

mv jdk1.8.0_131 /usr/local/

image-20201114194655447

3、配置环境变量

打开配置文件添加配置

vim /etc/profile

在正常模式下输入G跳到行尾

插入配置语句

JAVA_HOME=/usr/local/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

image-20201114194750316

4、刷新文件配置生效

source /etc/profice

5、测试

在当前路径下输入java 出现提示!成功

2、安装tomcat

1、解压tomcat

tar -zxvf apache-tomcat-9.0.39.jar.gz

image-20201114200915660

2、移动路径

移动到/usr/local /tomcat/

3、启动服务

进入tomcat的bin目录,执行启动脚本

# cd apache-tomcat-9.0.39/bin
# ./startup.sh

image-20201114201124114

4.测试

在浏览器中输入localhost:8080测试

3、安装Mysql

1、上传或者下载mysql安装包

下载

推荐使用清华的镜像,下载速度非常的快

wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.21-el7-x86_64.tar.gz

image-20201114230300821

上传

使用xftp等软件将下载好的tar包上传到/opt目录下

image-20201115201534200

2、检查是否安装过mysql

ps:因为以前用yum安装过,所以先用yum卸载。如果不是此方式或者没安装过则跳过

[root@centos7 opt]# yum remove mysql

image-20201115202336838

查看是否有mysql依赖

[root@service /]# rpm -qa | grep mysql

image-20201115201927574

如果有则卸载

//普通删除模式
rpm -e xxx(mysql_libs)
//强力删除模式,如果上述命令删除时,提示有依赖其他文件,则可以用该命令对其进行强力删除
rpm -e --nodeps xxx(mysql_libs)

3、检查是否有mariadb

[root@centos7 opt]# rpm -qa | grep mariadb

image-20201115202739422

如果有则卸载

[root@centos7 opt]# rpm -e --nodeps mariadb-libs
[root@centos7 opt]# rpm -e --nodeps mariadb-devel-5.5.65-1.el7.x86_64

image-20201115202849622

4、安装mysql依赖包

[root@centos7 opt]#yum install libaio

image-20201115202931461

5、解压

进入/opt目录下将mysql文件解压

[root@centos7 opt]# cd /opt
[root@centos7 opt]# tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz

image-20201115203306574

>我们查看一下是否解压好了

image-20201115203524245

6、更名并移动

为了方便操作以及配置文件的更改我们将文件名重命名为mysql

[root@centos7 opt]# mv mysql-8.0.21-el7-x86_64 mysql

image-20201115203916245

按照习惯,我们将文件移动到/usr/local目录下

[root@centos7 opt]# mv /opt/mysql/ /usr/local/

我们切换到usr/local/目录下查看mysql是否存在

[root@centos7 opt]# cd /usr/local/
[root@centos7 local]# ls

image-20201115204242944

创建数据库文件存放的文件夹。这个文件夹将来存放每个数据库的库文件

[root@centos7 local]# cd mysql
[root@centos7 mysql]# mkdir mysqldb

image-20201115204549114

image-20201115204519563

7、mysql安装目录赋予权限

[root@centos7 mysql]# chmod -R 777 /usr/local/mysql/

image-20201115204928117

8、创建mysql组和用户

创建组

[root@centos7 mysql]# groupadd mysql

创建用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)

[root@centos7 mysql]# useradd -r -g mysql -s /bin/false mysql

将用户添加到组中

[root@centos7 mysql]# chown -R mysql:mysql ./

image-20201115205404220

9、修改mysql配置文件

[root@centos7 mysql]# vi /etc/my.cnf

将里面的命令都删除掉,然后添加以下命令,保存并退出(如果有一定经验,可以在里面添加一些其他的配置)

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

image-20201115205731808

10、安装mysql

进入mysql 安装目录下:

[root@centos7 mysql]# cd /usr/local/mysql/bin/

安装mysql,并记住初始化随机密码

image-20201115210059191

rjH1VL1+YEfb

11、启动mysql服务

进入mysql.server服务目录下并启动服务

[root@centos7 bin]# cd /usr/local/mysql/support-files
[root@centos7 support-files]# ./mysql.server start

如果第一次启动,当初始化执行会有报错

image-20201115210617416

此时不要担心,重新给mysql安装目录赋予一下权限后,再次执行

[root@centos7 support-files]# chmod -R 777 /usr/local/mysql
[root@centos7 support-files]# ./mysql.server start

12、将mysql添加到系统进程中

[root@centos7 bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

此时我们就可以使用服务进程操作mysql了

13、设置mysql自启动

[root@centos7 bin]# chmod +x /etc/init.d/mysqld
[root@centos7 bin]# systemctl enable mysqld

image-20201115212503252

此时mysql自启动就已经设置好了

14、修改root用户登录密码

登录mysql

[root@centos7 bin]# cd /usr/local/mysql/bin/
[root@centos7 bin]# ./mysql -u root -p

执行后,输入我们初始化时记录下的随机密码,就会进入mysql

image-20201115213103551

mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234';

image-20201115213337447

15、设置允许远程登录

mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

16、重启服务且测试

centos6与centos7的服务命令都支持

[root@centos7 bin]# systemctl restart mysql	
[root@centos7 bin]# service mysql restart
1、查看mysql是否启动
[root@centos7 bin]# systemctl status mysql

image-20201115214024990

2、查看防火墙开放端口
firewall-cmd --list-all

image-20201115214323098

3、在防火墙中将3306端口开放
[root@centos7 bin]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@centos7 bin]# firewall-cmd --reload
//--permanent为永久生效,没有此参数 服务器重启后配置失效

image-20201115214503373

4、在Navicat上测试连接

image-20201115214602524

5、重启linux后测试自启动(可选)
[root@centos7 bin]# reboot

image-20201115214746520

测试mysql服务是否自启动

image-20201115214839908

测试远程访问

image-20201115214856423

21 linux关于软件安装的位置疑问

Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的

/usr:系统级的目录,可以理解为C:/Windows//usr/lib理解为C:/Windows/System32
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。

源码放哪里?
/usr/src:系统级的源码目录。
/usr/local/src:用户级的源码目录。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐