Linux基础
本文最后更新于:2 年前
Linux基础
包含了 Linux 基础知识,以及常用的命令。学习 Linux 起因是为了参加 红帽挑战赛 ,后来学习大数据再一次感受到熟练掌握 Linux 的重要性。
目录结构
Windows系统目录结构:
C、D、E、F…
C 盘存储操作系统,D盘安装软件,E、F盘个人资料
Linux目录结构
Linux的文件系统是采用级层式的树状结构,在此结构的最上层是根目录 “/” ,然后在此目录下再创建其他目录:
在Linux世界里,一切皆文件 (!!)
常见的目录结构:
/bin
Binary 的缩写,存放着最经常使用的命令
/etc
所有的系统管理所需要的配置文件和子目录,比如安装的 mysql 的 my.conf
/dev
类似于 windows 的设备管理器,把所有的硬件用文件的形式存储
/home
存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
/root
该目录为系统管理员,也称作超级权限者的用户主目录
/usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与 windows 下的 program files 目录。
/boot
存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/sbin
s 是 Super User 的缩写,这里存放的是系统管理员使用的系统管理程序。
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在 /mnt 上,然后进入该目录就可以查看里的内容了。d:/myshare
- /mdia
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下
/var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
lopt
这是给主机额外安装软件所存放的目录。如安装 ORACLE 数据库就可放到该目录下。默认为空
/proc [不能动]
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
/srv [不能动]
service缩写,该目录存放一些服务启动之后需要提取的数据
/sys [不能动]
这是liux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
/lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
/selinux
security-enhanced linux 。SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。
破解登录密码
重启计算机,开机后会有一个 6s 倒计时,按上下键(或双击),选择第一个菜单,按e编辑
按上下键,找 linux 或 linux16
把后面的
ro
改为rw
,后面再手动添加输入空格 rd.break
ro 代表 read only 系统是只读的,无法破解修改密码,所以修改为rw(read write)可读可写,添加 rd.break 代表进入救援模式
编辑完成后,按Ctrl+X键
打开计算机的根目录
chroot /sysroot/
修改 root 的密码(不需要旧密码,这里的密码不显示,不推荐使用小键盘,数字密码用大键盘)
passwd root
默认在红帽和 Centos 系统中有一条看门狗(SELinux),它发现你在篡改密码时,会拦截。在计算机根目录下创建一个隐藏文件 /.autorelabel,就可以蒙蔽狗的眼睛
touch /.autorelabel
破解完成,退出重启。
exit
reboot
破解密码后,第一次启动会比较慢。
IP地址
每台电脑都需要有一个唯一的IP地址,电脑之间才能互相通讯!
地址格式
点分10进制,4组数字,比如:10.10.10.10,1.1.1.1,37.25.81.128 ,每一组 IP 范围是 0-255
子网掩码:
255.0.0.0,255.255.0.0,255.255.255.0
子网掩码和 IP 结合,可以把 IP 地址分为网络位和主机位,类似于电话号码的:区号-座机号。子网掩码有几个 255 ,代表 ip 前几位是区号。
255.0.0.0,也可以表示为 /8
255.255.0.0,也可以表示为 /16
255.255.255.0,也可以表示为 /24
例1
1
2IP1地址:192.168.4.5 配合子网掩码255.255.255.0
IP2地址:192.168.5.5 配合子网掩码255.255.255.0子网掩码都有3个255 ,代表 ip 前三位是区号。ip1区号为192.168.4,ip2区号为192.168.5,区号不同,所以这两个ip不能互相通讯,两个主机不在一个网段。
例2
1
2IP1地址:192.168.4.5 配合子网掩码255.255.0.0
IP2地址:192.168.5.5 配合子网掩码255.255.0.0子网掩码都有2个255 ,代表 ip 前两位是区号。两个ip区号都是192.168,区号相同,所以这两个ip可以互相通讯,两个主机在一个网段。
最终IP地址:
192.168.4.5/24 的意思是:IP地址=192.168.4.5,子网掩码=255.255.255.0
我和另一个IP不在一个网段,但是我想和他通讯,需要走路由器出去(像跨省的电话局),网关就是你去其他网段要走的路由器,它的IP地址
IP地址不容易记住,给IP地址可以对应域名(需要额外购买),我们需要一台服务器(DNS),记录IP和域名的关系。当用户浏览器上网,输入域名的时候(计算机通讯使用的是IP地址),此时,就需要找DNS服务器,问域名对应的IP是多少。
配置网络
网络配置原理
准备环境
配置网络前必须确保 虚拟机 在安装时打开了以太网开关,否则网卡会识别不到,也加不上。
给虚拟机额外添加一块网卡,也可以不添加直接改默认网卡。
给网卡配置网络参数
在命令行终端查看网卡名称和IP地址:
ip a s
在输出的结果中,ens160 是环境原来自带的网卡,ens224 是刚刚添加的新网卡。不同版本的环境,则添加出来的网卡名称,可能不一样,比如(eth0,eth1…)
命令行输入:
nmtui
选择 Edit a connection
回车
,去编辑网卡的配置;找到需要编辑的网卡名称。这里我们直接从新配置默认网卡。如果要配置新网卡,就选新网卡,后续操作一致。
使用
tab键
,选择后面的《Edit》后·回车
;去激活网卡
网卡激活成功后,就可以在终端查看到我们重新配置后的网卡:
更改子网 ip 和子网掩码
配置完成。此时可能需要重启虚拟机。
常用基础命令
关机和重启命令
立该进行关机:
shutdown -h now
h 代表的是 halt (停止),后面跟的是关机的时间
一分钟后关机并提示:
shutdown -h "hello,1分钟后会关机了"
立刻重启计算机:
shutdown -r now
r 代表 reboot (重启)
快捷关机:
halt
重启:
reboot
把内存的数据同步到硬盘:
sync
- 不管是重启系统还是关闭系统,首先要运行
sync
命令,把内存中的数据写到硬盘中; - 虽然目前
shutdown
/reboot
/halt
等命令均已经在关机前自动执行了sync
,但小心驶得万年船。
- 不管是重启系统还是关闭系统,首先要运行
查看文档资料
列出根目录 / 下的所有目录:
ls /
查看当前目录下的资料:
ls
查看当前目录的资料:
ls -a
-a显示所有资料all,包括隐藏文件和目录,在Linux系统中,文件名或目录名,以.点开始代表隐藏文件
查看 /etc/ 目录下的资料:
ls /etc
查看当前目录:
pwd
vim快速入门
vi 和 vim 的基本介绍
Linux系统 会内置 vi文本编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vi 和 vim 常用的三种模式
正常模式
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。
在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、粘贴』来处理你的文件数据。
插入模式
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式。一般来说按
i
即可。命令行模式
输入
esc
再输入:
。在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的 !
各种模式的切换
vi 和 vim快捷键
常用快捷键
一般模式
拷贝当前行:
yy
;拷贝当前行向下的5行:
5yy
,并粘贴:p
。删除当前行:
dd
;删除当前行向下的5行:
5dd
。到达文档的最末行:
G
回到达文档的最首行:
gg
快速定位到某20行:先敲
20
,再按shift+g
撤销动作:
u
命令行下
在文件中查找某个单词:
/关键字
,回车查找;光标跳转到下一个结果:
n
再次输入
/关键字
继续查找下一个内容设置文件的行号:
set nu
取消文件的行号:
set nonu
其他快捷键大全:
vi / vim 键盘图
用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户登录和注销
登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。
可以利用普通用户登录,登录后再用su - 用户名
命令来切换成系统管理员身份。在提示符下输入 logout
即可注销用户。logout
注销指令在图形运行级别无效,在运行级别 3 下有效。
添加用户:
添加用户的值令:useradd 用户名
当创建用户成功后,会自动的创建和用户同名的家目录。
添加一个用户 tom,默认该用户的家目录在 */home/tom。也可以通过useradd -d
指定目录―新的用户名,给新创建的用户指定家目录。
设置、修改密码:
使用 passwd 用户名
指令修过对应用户的密码:
删除用户:
使用
userdel 用户名
指令删除用户,不会删除用户的主目录:使用
userdel -r tom
删除用户的同时,会删除用户的主目录:该命令删除用户的同时也会删除用户的资料,要慎用该命令。一般情况应该保留家目录。
查询用户信息:
使用 id 用户名
指令查询用户信息:
切换当前用户
语法格式: su - 用户名
切换到高权限用户:
su -
在操作 Linux 中,如果当前用户的权限不够,可以通过
su -
指令,切换到高权限用户,比如 root。切换到高权限用户
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。当需要返回到原来用户时,使用 exit/logout指令。
用户组
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理。同一组的用户具有相同的权限。
新增组
语法:groupadd 组名
删除组
语法:groupdel 组名
增加用户同时指定组
语法:useradd -g 用户组 用户名
如果增加用户时没有指定组,会默认生成并加入到一个和用户同名的组:
修改用户的组
语法:usermod -g 用户组 用户名
用户和组相关的文件
/etc/passwd 文件
用户 (user)的的配置文件,记录用户的各种信息。
每行的含义:用户名 : 口令 : 用户标识号 : 组标识号 : 注释性描述 : 主目录:登录Shell
shell 翻译指令,交给内核执行。
/etc/shadow 文件
口令的配置文件。
每行的含义:登录名 : 加密口令 : 最后一次修改时间 : 最小时间间隔:最大时间间隔 : 警告时间 : 不活动时间:失效时间 : 标志
etc/group 文件
组 (group) 的配置文件,记录 Linux 包含的组的信息。
行含义:组名 : 口令 : 组标识号 : 组内用户列表
组管理和权限管理
Linux组
在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。
文件/目录 所在组
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
查看文件的所在组:
ls -ahl
修改文件/目录所在的组:
chgrp 组名 文件名
其他组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
- 添加用户时指定所在组:
useradd -g 用户名
- 改变用户所在组:
usermod -g 新组名 用户名
- 改变用户登录的初始目录:
usermod -d 目录名 用户名
Linux权限
查看目录信息
查看当前目录下资料的详细信息(含权限)
语法:ls -l
anaconda-ks.cfg 是文件名
Oct 26 04:51 是文件的时间
1317 是文件的容量大小(字节)
1 root root 该文件属于root用户、root组
**-rw*—*—-. 是文件的权限(三个字符为一组)**
第一组:对应文件所有者的权限
第二组:对应文件所属组的权限
第三组:对应其他所有人的权限
字符 | 描述 | 数字格式 |
---|---|---|
r | read 读权限 | 4 |
w | write 写权限 | 2 |
x | execute 执行权限 | 1 |
备注:x对于文件而言,就是程序是否可执行;x对于目录而言,就是该目录是否可以cd进去:
$$
r=4; w=2; x=1
$$
rwx=7 rw-=6 r-x=5 —=0 r–=4 -wx=3
修改文件或目录的权限:
语法:chmod <权限> <文件名或目录名>
新建 /root/test.txt 文件:
touch /root/test.txt
查看该文件默认权限:
ls -l /root/test.txt
root 用户可读写, root 组可读,其他人可读
修改权限:
chmod 777 /root/test.txt
此时 root 用户可读写执行,root 组可读写执行,其他人可读写执行。
再次修改权限:
chmod 655 /root/test.txt
此时 root 用户可读写,root 组可读执行,其他人可读执行。
修改移除所有人的权限:
chmod 000 /root/test.txt
设置ACL权限
前面的基本权限,只能对用户或目录的用户、组或其他人设置权限。
假设有一个文件 a.txt,属于 root用户: root组,需要让 user1 对 a.txt 有读写权限
如果修改文件权限 666,则任何人都可读写(x);
如果:chown 则会导致文件所有者方式变化(x);
如果:把 user1 加入 root 组,任何属于 root 组的文件,user1 都可读写。
对某一个人设置权限,可以使用 ACL
1 |
|
-m (modify 修改), u (user 用户)
例
创建2个用户
新建文件 /tmp/root.txt,内容是 hello,并使用
cat
命令查看修改*/tmp/root.txt* 文件的权限,
root
能读写,student1对该文件无权限-rw-r-----. 1 root root 6 Oct 29 19:46 /tmp/root.txt
使用
su
命令切换用户到student1,并用cat
命令查看 /tmp/root.txt 文件,提示无权限被拒绝使用
exit
命令退出 student1用户,返回 root 用户修改权限,让 student1 可以读写 /tmp/root.txt 文件
此时用
su
命令切换换到 student1 用户,用cat
命令就可以查看 /tmp/root.txt 文件了
计划任务
在企业中有时候我们需要定期执行一些任务,比如:每周五凌晨备份数据
创建计划任务的命令
crontab -e -u 用户
crontab 是创建计划任务的程序,-e(modify)修改计划任务,-u(user)指定是哪个用户的计划任务。
计划任务的格式:
分 时 日 月 周 命令
分:(00-59),也可以是(所有),/2(每隔2分钟)
时:(00-23),也可以是(所有),/3(每隔3小时)
日: (1-31),也可以是(所有), … …
月: (1-12),也可以是(所有), … …
周: (1-7), … … … …
例子:
每天05点03分,重启计算机
1
03 05 * * * /sbin/reboot
每月5号,05点03分,重启计算机
1
03 05 05 * * /sbin/reboot
每一年6月5日,05点03分,重启计算机
1
03 05 05 06 * /sbin/reboot
6月5日 且得是个周3的时候,05点03分,重启计算机
1
03 05 05 06 3 /sbin/reboot
每周五,每分钟都再重启
1
* * * * 5 /sbin/reboot
定时获取时间
查看计算机的时间 : date
查看时间导入到一个文件中:date >> /tmp/root.xt
做一个计划任务,每分钟把时间写入到一个文件:
输入命令crontab -e -u root
按 i
编辑,内容如下:
1 |
|
等一分钟,用 cat
命令查看:
删除计划任务:crontab -e -u root
,删除之前添加的计时器可以用dd
快捷键直接删除该行
实用指令
运行级别
运行级别说明:
0 : 关机
1 : 单用户【找回丢失密码】
2 : 多用户状态没有网络服务
3 : 多用户状态有网络服务
4 : 系统未使用保留给用户
5 : 图形界面
6 : 系统重启
常用运行级别是3 和 5,也可以指定默认运行级别。
切换运行级别:init 级别编号
切换到级别3,此时无图形界面:
切换回级别5 图形界面 :
查看当前默认运行级别:systemctl get-default
可以看到,当前默认运行级别是图形化界面 5,每次开机就是级别5 图形化界面。
修改默认运行级别:systemctl set-default multi-user.target
此时默认运行级别为级别 3,以后开机就不会进入图形化界面 3 了。
帮助指令
man 获得帮助信息
1 |
|
查看ls命令的帮助信息:
man ls
help指令
1 |
|
获得shell 内置命令的帮助信息。
查看
cd
命令帮助信息:help cd
文件目录类
pwd指令
显示当前工作目录的绝对路径。
绝对路径是指从根目录 (/) 开始定位,相对于根目录,以根目录 / 开头。相对路径是从当前路径开始定位,相对于当前路径,以当前目录的下一级目录开头。
ls指令
1 |
|
-a
显示当前目录所有的文件和目录,包括隐藏的
-1
以列表的方式显示信息
查看当前目录下的资料:
ls
列出根目录 (/)下的所有目录:
ls /
查看当前目录信息:
ls -al
-al
里的 a (all) 表示输出隐藏文件。在 linux 下,隐藏文件是以.开头,选项可以组合使用。查看指定目录信息:
ls -al /home
cd指令
切换到指定目录。
1 |
|
回到自己的家目录:
cd ~
或cd
回到上一级目录:
cd ..
使用绝对路径定位:
cd /home/tom
绝对路径是指从根目录 (/) 开始定位,以根目录 / 开头。
使用相对路径定位:
cd ../../root
相对路径是从当前路径开始定位,相对于当前路径,以当前目录的下一级目录开头。
mkdir指令
用于创建目录。
1 |
|
-p
: 创建多级目录
创建一级目录:
mkdir /home/dog
创建多级目录:
mkdir -p /home/animal/tiger
rmdir指令
删除目录。
1 |
|
-rf
:递归强制删除
删除空目录:
rmdir /home/dog
删除非空目录:
rmdir -rf animal
rmdir
命令删除的只能是空目录,如果目录下有内容时无法删除。如果需要删除非空目录,需要使用rm -rf
命令递归删除。
touch指令
创建空文件。
1 |
|
创建一个空文件:
touch hello.txt
cp指令
拷贝文件到指定目录。
1 |
|
-r
:递归复制整个文件。
拷单个文件:
cp /home/hello.txt /home/king/
复制整个多级目录:
cp -r /home/zwj/animal/ /home/tom/
将 zwj 文件夹下所有目录文件复制到 tom 目录下。
强制覆盖不提示:
\cp /home/hello.txt /home/king/
如果复制前已存在同名文件,复制时会提示要不要覆盖。使用
\cp
命令可强制赋值不提示。
rm指令
移除文件或目录。
1 |
|
-r
:递归删除整个目录
-f
:强制删除不提示
删除单个文件有提示 :
rm /home/hello.txt
删除单个文件不提示 :
rm -f /home/hello.txt
强制删除整个文件夹不提示:
rm -rf /home/zwj/animal/
该命令要特别小心使用。
mv指令
移动或重命名文件目录。
1 |
|
重命名文件:
mv cat.txt dog.txt
移动文件:
mv /home/dog.txt /home/king/
移动并重命名文件:
mv /home/king/dog.txt /home/cat.txt
移动整个目录:
mv /home/tom/animal/ /home/zwj/
cat指令
查看文件的内容。
cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more
进行交互。
1 |
|
-n
:显示行号。
查看文件并显示行号:
cat -n /etc/profile
加上管道命令:
cat -n /etc/profile | more
此时可以结合下面的more指令使用,如
enter
键可以翻行,空格
翻页。
more指令
more 指令是一个基于 vi 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键(交互的指令)。
1 |
|
- 操作说明:
操作 | 功能 |
---|---|
空白键(space) | 代表向下翻一页 |
Enter | 代表向下翻『一行』 |
q | 代表立刻离开 more ,不再显示该文件内容 |
ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
less指令
less 指令用来分屏查看文件内容,它的功能与 more指令类似,但是比 more 指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1 |
|
- 按键操作说明:
操作 | 功能 |
---|---|
空白键 | 向下翻动一页 |
PageDown | 向下翻动一页 |
PageUp | 向上翻动一页 |
/字串 | 向下搜寻『字串』的功能。n:向下查找;N:向上查找 |
?字串 | 向上搜寻『字串』的功能。n:向上查找;N:向下查找 |
q | 离开less这个程序 |
echo指令
echo输出内容到控制台。
1 |
|
输出主机名:
echo $HOSTNAME
输出内容到控制台:
echo "hello world !"
head指令
用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前10行内容.
1 |
|
查看文件开头 10 行:
head /etc/profile
查看文件开头 5 行:
head -n 5 /etc/profile
tail指令
用于显示文件的末尾部分内容,默认情况下 tail 指令显示文件的最后10行内容。
1 |
|
-n
:指定行数.
-f
: 实时追踪文档更新.
查看文件最后 10 行:
tail /etc/profile
查看文件最后 5 行:
tail -n 5 /etc/profile
实时追踪文档更新:
tail -f hello.txt
which指令
查看某个指令在哪个目录下。
1 |
|
查看
ls
指令在哪个目录:
>指令 和 >>指令
>指令 也叫输出重定向指令,写入时会用新内容覆盖掉原内容;>>指令 也叫追加指令,写入内容时不会覆盖原内容,会将内容追加在原内容后面。
1 |
|
将文件列表覆盖写入:
ls -l > /home/info.txt
将 /home 目录下的文件列表覆盖写入到 /home/info.txt 中。info.txt 不存在会自动创建。
将内容覆盖写入:
echo "hello" > /home/info.txt
将文件内容追加写入:
cat /home/world.txt >> /home/info.txt
将日历追加写入:
cal >> /home/info.txt
cal
用于查看当前日历。
ln指令
软链接也称为符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径。
1 |
|
给 /root 目录创建软连接:
ln -s /root /home/myroot
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录:
删除软连接:
rm -f /home/myroot
删除时后面不要带 /,不然会被当成一个目录。
history指令
查看已经执行过的历史命令,也可以执行历史指令。
1 |
|
显示所有的历史命令:
history
显示最近使用过的 5 个指令:
history 10
执行编号为 6 的指令:
!6
时间日期类
date显示时间指令
显示当前日期。
1 |
|
显示当前时间:
date
显示当前年份:
date +%Y
显示当前月份:
date +%m
显示当前是哪一天:
date +%d
显示年月日时分秒:
date "+%Y-%m-%d %H:%M:%S"
date设置时间指令
设置系统当前时间。
1 |
|
修改当前时间:
date -s "2020-11-0320:02:10"
cal指令
查看日历指令。
1 |
|
显示当前日历:
cal
显示 2020 年日历:
cal 2020
搜索查找类
find指令
从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端.
1 |
|
常用选项 | 功能 |
---|---|
-name <查询方式> |
按照指定的文件名查找模式查找文件 |
-user <用户名> |
查找属于指定用户名所有文件 |
-size <文件大小> |
按照指定的文件大小查找文件 |
按文件名在已知目录查找:
find /home -name hello.txt
按拥有者查找:
find /home/ -user root
查找整个 linux 系统下大于 200M 的文件:
find / -size +200M
+n 大于、 -n 小于、n等于,单位有k,M,G。
locate指令
locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate数据库,实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
1 |
|
创建 locate 数据库:
updatedb
快速定位 hello.txt 文件所在目录:
locate hello.txt
grep指令
grep 过滤查找。
管道符,”|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
1 |
|
常用选项 | 功能 |
---|---|
-n |
显示匹配行及行号。 |
-i |
忽略字母大小写 |
过滤查找 yes :
cat hello.txt | grep "yes"
过滤查找并显示行号:
cat hello.txt | grep -n "yes"
另一种写法:
grep -n "yes" hello.txt
压缩和解压类
在Windows系统中常见的压缩格式为 rar,zip,7z;在Linux系统中常见的压缩格式为 gzip,bzip2,xz。
假设 /var/log 是非常重要的数据,我需要打包备份,在linux 中打包的软件是 tar,压缩的软件是 gzip,bzip2。如果没有软件,可以用 yum install
命令安装软件。
gzip/gunzip指令
gzip 指令用于压缩文件,gunzip 指令用于解压文件。其中,gzip 指令只能将文件压缩为 **.gz* 文件。
1 |
|
使用 gzip 指令压缩文件:
gzip /home/hello.txt
使用 gunzip 指令解压缩文件:
gunzip /home/hello.txt.gz
zip/unzip指令
zip 用于压缩文件,unzip 用于解压的,这个在项目打包发布中很有用的。
1 |
|
常用选项 | 功能 |
---|---|
-r |
递归压缩,即压缩目录 |
-d <目录> |
指定解压后文件的存放目录 |
将 /home 下所有文件夹压缩:
zip -r myhome.zip /home/
将home目录及其包含的文件和子文件夹都压缩
将 myhome.zip 解压到 myzip 文件夹:
unzip -d myzip myhome.zip
tar指令
tar 指令是打包指令,最后打包后的文件是 .tar.gz 的文件。
1 |
|
常用选项 | 功能 |
---|---|
-c |
产生 .tar 打包文件 |
-v |
显示详细信息 |
-f |
指定压缩后的文件名 |
-z |
打包同时压缩 |
-x |
解包 .tar 文件 |
压缩多个文件并显示信息:
tar -czvf pc.tar.gz pig.txt cat.txt
压缩整个目录:
tar -zcvf myhome.tar.gz /home/
解压缩 .tar.gz 文件到当前目录:
tar -zxvf pc.tar.gz
解压 .tar.gz 文件到指定目录:
tar -zxvf /home/myhome.tar.gz -C /home/mytar
-C 指定位置。
查看目录大小:
du -sh /var/log
du 命令可以查看目录大小,-s 查看总大小,*-h* 显示容量单位。
1 |
|
磁盘分区与挂载
Linux普通分区
所有的操作系统都需要对硬盘进行分区、格式化之后才能使用,windows的格式化文件系统NTFS,格式化完成后,系统会自动绑定一个盘符,比如C盘,D盘。
在Linux系统中,我们也需要分区、格式化,格式化之后需要我们自己手动绑定分区到一个目录(挂载)。
硬盘为什么分区、格式化?
不格式化,直接往硬盘中写入数据,犹如往沙漠中投了一粒沙子,投放简单,再找出来的时候,非常难!
所以,硬盘需要分区,格式化,把硬盘划分为N多小格子,每个格子都有唯一的编号,这样数据导入格子中,后期就可以快速定位读取数据出来。
在Linux中硬盘的命名规则:
依据硬盘类型取名:
IDE硬盘:/dev/hda(第一块硬盘),/dev/hdb(第二块硬盘)
SATA、SCSI硬盘:/dev/sda(第一块硬盘),/dev/sdb(第二块硬盘)
固态nvme硬盘:/dev/nmve0n1….
如果是linux的kvm虚拟硬盘: /dev/vda(第一硬盘),/dev/vdb(第二块硬盘)
原理介绍:
对 Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,。Linux中每个分区都是用来组成整个文件系统的一部分。
Linux 采用了一种叫 “载入” 的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
示意图
硬盘说明
- Linux硬盘分 IDE硬盘和 SCSI硬盘,目前基本上是 SCSI 硬盘;
- 对于 SCSI 硬盘则标识为 “sdx
”,SCSI硬盘是用 “sc” 来表示分区所在设备的类型的。”x” 为盘号 (a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘)。““ 代表分区,前四个分区用数字1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。 - 对于 IDE 硬盘,驱动器标识符为 “hdx~” ,其中”hd”表明分区所在设备的类型,这里是指IDE硬盘了。其余则和 SCSI 硬盘的表示方法一样。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
查看所有设备挂载情况
lsblk
或者 lsblk -f
。
硬盘的挂载
以增加一块硬盘为例,来熟悉下硬盘的相关指令和深入理解硬盘分区、挂载、卸载的概念。
想要增加一块硬盘,可以分为五个步骤:虚拟机添加硬盘、分区、格式化、挂载、设置可以自动挂载。
1. 给虚拟机增加硬盘
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择硬盘大小的地方需要修改,至到完成。然后重启系统(才能识别) !
在系统中执行lsblk查看是否有硬盘,
用lsblk
查看硬盘信息,如果没有识别,则重启计算机。可以看到多了一块硬盘 nvme0n2,大小为 20G。
2. 给硬盘分区
使用 fdisk 分区命令给新添加的硬盘分区。
1 |
|
选择我们新添加到硬盘,使用fdisk 指令开始分区:fdisk /dev/nvme0n2
分区菜单选项:
分区命令 | 功能 |
---|---|
m | 显示命令列表 |
p | 显示硬盘分区,同 fdisk -l |
n | 新增分区 |
d | 删除分区 |
w | 写入并退出 |
开始分区后输入 n
,代表新增分区;然后输入 p
,选择分区类型为主分区。(输入e
代表选择扩展分区)
此时输入分区编号,因为硬盘里还没有创建分区,所以默认为1,表示新建的是硬盘的第一个分区。
接着会让我们选择分区开始的位置,不输入敲回车会默认从上一分区结束的位置开始分区。因为此时硬盘还没有分区,所以默认是从硬盘开始位置分区。
接下来会让我们输入新建的分区的空间大小,单位可以说K,M,G,T,P。记住前面要带加号。无输入回车会默认将硬盘剩余所有空间分配给该分区。这里我们选择给 1 号分区分 5G 空间。
回车,会看到一号分区创建成功。
重复上述步骤,在同一硬盘再建一个分区,默认编号为2。理论上同一分区最好只有一个主分区。此时分区默认开始位置是上一分区(即刚刚创建的1好分区)结束的位置。2号分区大小不能超过15G,因为硬盘总空间是 20G,1号分区已经用了 5G。
最后输入 w 写入分区并退出,若不保存退出输入 q
。
此时就可以用 lsblk
查看我们添加硬盘的分区信息,就可以看到我们添加硬盘上已经有指定大小的两个分区了,分别是 nvme0n2p1 和 nvme0n2p2。
分区创建好了,在fdisk
命令下,我们可以使用 p
选项打印出分区信息:
使用d
选项,选择要删除的分区号就可以删掉分区:
3. 格式化硬盘
挂载分区之前我们必须对分区进行格式化,给分区指定文件类型。Linux 格式化的类型有ext3, ext4, xfs, vfat….
格式化之后,会给每个分区分配一个40 位的唯一不重复的字符串,作为分区号 UUID,此时分区才能挂载使用。
1 |
|
这里我们选择将分区格式化为红帽所推荐的 xfs 类型:
方式1:使用第一种命令:
mkfs -t 类型 /dev/分区名
方式2:使用第二种命令:
mkfs.xfs /dev/分区名
4.挂载分区到目录(临时)
将一个分区与一个目录联系起来。这种挂载方式是临时的,重启计算机后挂载信息就没了。
1 |
|
创建一个目录,用于挂载分区:
mkdir newdisk
挂载的目录位置随意,可以在任意位置。这里挂载在根目录 / 下是为了方便。
将分区挂载到 /newdisk 目录上:
mount /dev/分区名 /newdisk
此时就挂载完成了,我们用 lsblk -f
指令查看硬盘信息,会发现新建的两个分区有了挂载点:
但是我们使用 df -h /newdisk/
指令查看挂载点的信息时,只能看见第二个分区 nvme0n2p2。这是因为虽然同一个挂载点可以挂载多个分区,但后挂载的分区会把先挂载的隐藏掉(前一分区还在,只是从目录上就只能看见后一分区的信息)
此时我们在挂载点 /newdisk/ 下创建文件,该文件就会存放在 nvme0n2p2 分区了。
取消挂载(类似于把u盘拔出)
方式一:
umount /dev/分区名
这是我们可以看到,分区 nvme0n2p2 已经被取消挂载了。此时之前被隐藏的 nvme0n2p1 就可以查看到了。
方式二:
umount 挂载点
可以看到分区无挂载点了。
5.挂载硬盘到目录(永久)
把硬盘挂载信息记录添加到系统配置文件 /etc/fstab 中,/etc/fstab 文件中记录了所有开机需要挂载的信息。系统开机读到取到挂载关系后会自动挂载该硬盘。
修改系统配置文件:vim /etc/fstab
在最后面添加我们格式化后的分区信息:
把什么设备,挂载到什么目录,什么格式,什么属性,0 0 代表是否对硬盘做磁盘扫描检查(0代表不检查)。
实际操作时发现,仅添加这一行信息,只用硬盘的绝对路径并不能成功挂载硬盘到目录上。重启后系统无法进入图形化界面。解决方法是这里还需添加硬盘的 UUID ,使用 blkid
命令查看后发现,新硬盘并没有 UUID。
swap交换分区
内存比较小,硬盘比较大,我们可以把硬盘的一部分空间拿出来,当内存用。
查看内存信息:free -h
可以看到虚拟机差不多有 2G 的内存,2G 的交换分区。
我们再加一块新硬盘,并创建一个分区,演示如何将其做成 swap交换分区:
从实用性上讲 swap交换分区 超过内存大小就没有意义了。这里我们只做展示,不考虑实用性。
格式该分区为交换分区:mkswap /dev/分区名
将该硬盘挂载信息记录到系统配置文件 /etc/fstab 中,系统开机读到取到挂载关系后会自动挂载该硬盘和硬盘上的 swap交换分区。
修改配置文件 /etc/fstab :vim /etc/fstab
添加分区挂载信息:
读取 fstab文件并刷新,激活 swap分区:swapon -a
查看效果,有2个交换分区,其中一个就是/dev/nvme0n3p1
查看内存信息:free -h
可以看到,虚拟机中多了一个我们新加的 swap分区:
磁盘情况查询
查询磁系统整体磁盘使用情况:
1
df -h
查询指定目录的磁盘占用情况
1
du -h /目录
不带目录默认查询当前目录。
常用参数 功能 -s 指定目录占用大小汇总 -h 带计量单位 -a 含文件 –max-depth=1 子目录深度 -c 列出明细的同时,增加汇总值 查询 /opt目录的磁盘占用情况:
du -ha --max-depth=1 /opt
统计 /opt 文件夹下文件的个数:
1
ls -l /opt | grep "^-" | wc -l
统计 /opt 文件夹下目录的个数:
1
ls -l /opt | grep "d" | wc -l
统计/opt文件夹下文件的个数,包括子文件夹里的:
1
ls -lR /opt | grep "^-" | we -l
统计 /opt 文件夹下目录的个数,包括子文件夹里的
1
ls -lR /opt | grep "^d" | wc -l
以树状显示目录结构 tree目录 :
tree /目录
如果没有tree ,则使用
yum install tree
指令 安装
Linux逻辑卷分区
采用普通的分区方式,最大的缺点就是不能动态调整大小!如果有一个分区,分了20G,觉得不合适,无法重新调整!
因此我们引入了卷的概念。卷可以动态调整大小的,Linux系统 中硬盘卷可以是 LVM卷 或者 VDO卷。
LVM逻辑卷:
硬盘或普通分区(裸盘):像原始的大树
pv(物理卷):人工处理成的木块
vg(卷组): 使用木块组合成一堆模块,鞋柜模块、衣柜模块放仓库,仓库中有很多模块
lv(逻辑卷):举例(从仓库中提取一部分模块使用)
可以把多个硬盘做成 pv,也可以把多个分区做成 pv。
1.准备环境
在虚拟机中添加两块硬盘,用于展示 Linux 中的逻辑卷分区。容量大小随意,类型尽量保持和之前的硬盘一致。
可以查看到我们新添加的两块硬盘,分别是 nvme0n2 和 nvmen03,容量都是20G:
2. 创建 pv(物理卷)
将 硬盘nvme0n2 做成 pv(物理卷):pvcreate /dev/nvme0n2
可以理解为:把大树,砍成木块。
3. 创建 vg(卷组)
把 物理卷/dev/nvme0n2 做成 vg(卷组):vgcreate -s 16M myvg /dev/nvme0n2
创建一个卷组,起名为 myvg,大小是20G。卷组的最小单位16M。16M是卷组的扩展单元大小(PE大小)。可以理解为:使用 /dev/nvme0n2木块 做成N多鞋柜放到仓库。每个鞋柜尺寸为16M,仓库的名字是 myvg。
查看计算机中的 vg(卷组):vgs
查看 /dev/nvme0n2下面的 myvg卷组 的信息:lvdisplay /dev/myvg
4. 创建 lv(逻辑卷)
把 卷组myvg 做成 lv(逻辑卷):lvcreate -n mylv -L 1700M myvg
-n
指定逻辑卷名称,-L
指定逻辑卷总容量。
从 myvg卷组 中提取空间,创建容量为 1700M 的逻辑卷,名称为mylv。可以理解为:从myvg仓库中提取1700M的鞋柜,一个鞋柜16M,大约107个。
查看计算机中的 lv(逻辑卷):lvs
查看 myvg 下面的 mylv逻辑卷 的信息:lvdisplay /dev/myvg/mylv
5. 格式化逻辑卷
格式化 逻辑卷mylv:mkfs.xfs /dev/myvg/mylv
格式化逻辑卷的方式与格式化普通分区一样,这里我们将 mylv逻辑卷 格式化为 xfs类型。
6. 挂载逻辑卷到目录
Linux 中分区和逻辑卷 需挂载到目录才能使用。
创建 /mydisk目录 用于挂载逻辑卷:mkdir /mydisk
将 mylv逻辑卷 挂载到 /mydisk 目录上:mount /dev/myvg/mylv /mydisk
查看 /mydisk目录 上的挂载状况:df -h /mydisk/
可以看到:/mydisk/目录 上已经挂载了我们的 mylv逻辑卷:
7. 使用卷组扩容挂载点
假设经过一段时间后,发现容量不够。myvg卷组 总共20G,我们只使用了 1.7G 做 mylv逻辑卷,还有18G 的卷组没有使用。
mylv逻辑卷 容量只有 1.7G,我们现在需要 15G 的容量,可以扩容现有的逻辑卷到 15G。
把现有的 /dev/myvg/mylv逻辑卷 扩容到 15G:lvextend -L 15G /dev/myvg/mylv
查看是 mylv逻辑卷 否扩容:lvs /dev/myvg/mylv
查看挂载目录:df -h /share/
容量还是1.7G,因为扩容之前已经挂载了
把挂载点文件系统扩容: xfs_growfs /mydisk/
1 |
|
几种 /etc/fstab 常见错误
fstab参数信息错误
可能是没有设备
可能有设备,没有分区
可能有设备,有分区,但是后来做其他实验,删除了分区
设备有,分区有,/etc/fstab文件字母错误
模拟错误场景
假设计算机中没有 sde 设备,也没有该设备的分区,但 /etc/fstab 中最后一行有如下错误挂载信息:
/dev/sde3 /media xfs defaults 0 0
此时重启虚拟机,会进入救援模式,不能正常启动:
问题分析:
计算机没有 sde 设备,更没有分区,而计算机开机第一件事读取操作系统内核,第二件事就是读取 /etc/fstab,找设备,挂载设备。
这里找设备找不到,无法挂载,计算机就会进入**救援模式 (emergency mode)**;
解决方法:
在上面图形界面,输入 root 密码(密码不显示),进入救援模式:
更改 /etc/fstab 默认配置文件:
编辑文件,找到最后添加的一行新内容,找到错误的内容,修改正确或者删除错误内容:
重启计算机:
排除错误后重启成功:
光盘没有或者没有连接
默认无法编辑,按i键,编辑文件,在最后添加一行新内容
/dev/sr0 /media iso9660 defaults 0 0
重启计算机:
reboot
重启后,系统再次进入救援模式:
1)添加光盘文件或者连接光驱设备
2)修改/etc/fstab,删除对应的设备挂载信息
VDO卷分区
VDO卷 和 LVM卷 有很多相同的特性,比如可以组合,调整大小。另外VDO卷还可以:数据去重、预分配功能。
数据去重:
传统的硬盘,一样的文件存两次,会占用硬盘2份空间容量。比如:网络下载一个 电影 (a.mp4),后面忘记了,又下载取名为 b.mp4,如果视频为 1G 视频,则最后占用硬盘 2G 空间。
DOV分区的硬盘具有数据去重功能,重复存储一样的数据,计算机自动去除重复数据。像百度云盘,就有数据去重功能。
预分配:
是我暂时硬盘只有 20G,但是 vdo 可以创建出100G 的卷
1. 添加硬盘
在虚拟机中新添加一块硬盘 nvme02,用于创建 VDO分区。
2. 安装vdo软件
创建 VDO分区 需要用到对应的软件工具,安装的前提是 YUM 已经配置好了。
安装 vdo 软件:yum -y install vdo
启动 vdo程序 ,设置为开机自启:
3. 创建 VDO卷
查看帮助:vdo create -h
创建一个 vdo卷:
1 |
|
-n
: 指定卷的名字,名字任意;--device
:指定使用哪个硬盘做卷;--vdoLogicalSize
:指定预分配的容量大小。
命令执行后,会提示做完的卷在计算机的什么位置: /dev/mapper/myvdo
格式化 myvdo 卷:mkfs.xfs /dev/mapper/myvdo
创建一个目录,用来挂载 vdo 卷:
挂载 myvdo 卷到 /vblock 目录 :
查看 /vblock/ 目录信息,已成功挂载上了 myvdo 卷:
也可以永久挂载:
修改 /etc/fstab 分区文件:
添加挂载点目录信息:
NFS文件系统(网络文件系统)
前面的分区挂载,卷挂载,都是本地设备。如果本地没有设备了,我还需要扩容呢?比如自己的电脑 4 个硬盘接口已经用完了,无法再添加硬盘,但是还需要更多容量呢?
一个电脑把硬盘格式化挂载到某个目录,挂载后将该目录共享给其他主机,则其他主机就可以访问该共享目录,获得存储的空间容量。
PC1 做共享服务器操作:
安装nfs需要的软件:
yum -y install nfs-utils
创建一个共享目录:
mkdir /share
修改nfs软件的配置文件(文件默认是空的):
vim /etc/exports
添加以下内容: **/share (rw)*
将/share目录共享给所有人( * 代表所有人),权限是 rw,可读可写
启动服务:
systemctl start nfs-server
设置下服务为开机自启动:
systemctl enable nfs-server
设置防火墙信任所有:
firewall-cmd --set-default-zone=trusted
查看自己的IP地址:
ip a s
PC2做客户端,访问共享:
安装nfs需要的软件:
yum -y install nfs-utils
挂载共享文件夹到自己的 /mnt 目录:
mount 172.25.0.254:/share /mnt
将 172.25.0.254 这个电脑的/share共享目录,挂载到自己的/mnt目录。这里 172.25.0.254是之前查看的 PC1 的 IP 地址。
查看 /mnt 目录上是否成功挂载:
df -h /mnt
如果永久挂载,只需编辑 /etc/fstab 分区文件添加共享文件夹信息:
vim /etc/fstab
添加内容格式: 172.25.0.254:/share /mnt nfs defaults 0 0
Linux软件管理(YUM)
Linux管理软件使用的是应用商店的模式(软件仓库),提前把软件都放到一个目录下,或者访问http共享里面。这里面仓库了比如9000多软件,和手机的应用商店概念一样,华为做一个应用商店服务器,存放所有软件,每个人手机连接华为的服务器,在线下载安装软件。
配置YUM软件仓库
把光盘插入到虚拟光驱里面,添加完光盘ISO文件
把光盘挂载到 /media 目录
在命令终端编辑fstab文件:
vim /etc/fstab
在文件最后,添加新内容:
/dev/sr0 /media iso9660 defaults 0 0
/dev/sr0 就是光盘设备,把这个光盘挂载到 /media 目录,*/media* 目录是 linux系统自带的一个默认目录(默认里面是空的)iso9660 是光盘的标准格式,defaults 代表模式属性。
0 0 代表不检查光盘内容
读取 /etc/fstab 文件,刷新,挂载光盘到 /media:
mount -a
查看 /dev/sr0 是否挂载到了 /media:
df -h
如果是 CentOS8 或者 RHEL8,则在/media目录下会包含:AppStream目录、BaseOS目录,这两个目录里面有软件;
如果是CentOS7或者RHEL7,则在/media目录下会包含:没有AppStream目录、BaseOS目录,所有软件都在/media/Packages/目录。
到此,我们的软件商店(软件仓库)已经准备好!这里的 /media 就是软件仓库!
修改 YUM配置文件,告诉计算机仓库在哪里
删除系统已有的 YUM配置文件:
rm -rf /etc/yum.repos.d/*
注意后面必须有*,有*是删除目录里面的文件,没有*,是删除整个目录。
新建 YUM 配置文件:
vim /etc/yum.repos.d/nb.repo
YUM 配置文件必须在 /etc/yum.repos.d/ 目录下,YUM配置文件名可以任意,但扩展名必须是 .repo
7版本系统环境,软件在*/media下,YUM* 配置文件内容为:
1
2
3
4[nb]
name=nb
baseurl=file:///media
gpgcheck=0[nb] 是软件仓库的商标;name 是商店的名字,名称任意;baseurl 定义软件在哪里;file:// 是标准格式,*/media* 是目录;gpgcheck 是不检查软件包来源。
8版本系统环境,软件在*/media下,YUM* 配置文件内容为:
1
2
3
4
5
6
7
8[appstream]
name=appstream
baseurl=file:///media/AppStream
gpgcheck=0
[baseos]
name=baseos
baseurl=file:///media/BaseOS
gpgcheck=0[appstream] 是软件仓库的商标;name 是商店的名字,名称任意;baseurl定义软件在哪里;file:// 是标准格式;*/media/AppStream* 是目录区分大小写;gpgcheck 是不检查软件包来源。
查看已配置的所有可用仓库:
yum repolist -v
我们可以看到,以配置的软件仓库中有几千个软件包,说明我们配置成功了。可以安装软件来。
Web服务器软件
安装软件:yum -y install httpd
没有该软件则安装,已经有了,会提示已经安装:already installed(已经安装)。该软件默认存放网页的目录是 /var/www/html/,默认为空。
编写网页
新建一个html网页文件:vim /var/www/html/index.html
按i
键编辑,文件内容如下:
1 |
|
启动服务:systemctl start httpd
设置服务为开机自启动服务:systemctl enable httpd
验证网页:
在浏览器中输入IP地址:http://127.0.0.1/
调整命令字体大小:ctrl shift +
调整命令字体大小:ctrl -
防火墙相关操作
查看防火墙状态:
systemctl status firewalld
可以看到,防火墙处于开启状态。
关闭防火墙:
systemctl stop firewalld
关闭后可以看到防火墙服务已处于终止状态。
启动防火墙:
systemctl start firewalld
重启防火墙:
systemctl restart firewalld
在开机时启用防火墙:
systemctl enable firewalld
在开机时禁用防火墙:
systemctl disable firewalld
JavaEE定制
如果需要在 Linux 下进行 JavaEE 的开发,我们需要安装如下软件:
安装配置JDK8
新建 /opt/jdk 目录,并用 xftp6 上传 jdk 文件压缩包
解压 jdk 压缩包并重命名
创建 /usr/local/java 目录,将 jdk 移动到该目录
/usr/local 是用户级的程序目录,可以理解为 C:/Program Files/
配置环境变量
如果不配置环境变量,java程序只有在 /user/local/java/jdk1.8/bin 目录下才能编译和执行,非常不方便。
查看已有的环境变量:
编辑环境变量配置文件:
vim /etc/profile
在最后添加 jdk 环境变量:
刷新配置文件,让新的环境变量生效:
source /etc/profile
检查环境变量是否配置成功
如果配置成功,可以查看到 jdk 的版本信息:
编写一个 Hello.java 程序,可以运行输出:
安装 Tomcat
新建 /opt/tomcat 目录,上传安装文件并解压缩
进入解压目录/bin ,启动 tomcat的命令是
./startup.sh
放开防火墙的 8080 端口号:
重载使更改生效:
查询端口是否打开:
访问 http://ip:8080 ,检查是否配置成功
安装 idea2020
新建 /opt/idea 目录,上传安装文件并解压缩
切换到解压后文件夹的 bin 目录,在有界面环境下运行 ./idea.sh 脚本文件,即可启动 idea。
安装 mysql5.7
新建 /opt/mysql 目录,下载或上传安装文件并解压缩:
Centos7.6 自带的类 mysql 数据库是 mariadb,会与 mysql 冲突,需要先删除:
安装 mysql ,依次运行以下命令:
启动 mysql
查看默认密码,登录到 mysql
mysql 会自动给 root 用户设置随机密码,运行
grep "password" /var/log/mysqld.log
指令可以查看到当前密码:运行
mysql -u root -p
指令,输入上述密码,即可登录进入 mysql 命令行:重新设置 mysql 的 root 密码
使用
set global validate_password_policy=0
指令更改 mysql 的密码设置策略:mysql 的 validate_password_policy 默认为1,改成 0 复杂度最低,最高为2
执行
set password for 'root'@'localhost' = password('778874315');
指令重新设置密码:运行
flush privileges;
使密码生效:此时退出 mysql ,就可以用新密码重新登录了:
安装完成,测试 mysql 是否可以正常使用
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!