Java开发之路
javaSE、MySQL、前端(HTML、CSS、JS)、Javaweb、SSM框架
SpringBoot、Vue、SpringCloud、(MP、Git)
Linux(CentOS 7)
消息队列(Kafka、RabbitMQ、RockeetMQ)、缓存(Redis)、搜索引擎(ES)
集群分布式(需要购买多台服务器,如果没有服务器就只能使用虚拟机)
学习方式
Linux一切皆文件:文件就 读、写、(权限)
- 认识Linux
- 基本的命令(重点:Git讲了一些基本的命令(文件操作、目录管理、文件属性、VIM编辑器、账户管理、磁盘优化))
- 软件的安装和部署!(Java、Tomcat、docker)
【Linux-Redis-Docker】
入门赘述
Linux在服务器端,在开发领域linux越来越受欢迎。所有的java岗位都需要掌握Linux的基本使用。
Linux内核最初只是由芬兰人林纳斯·拖瓦斯在赫尔辛斯大学上学时出于个人爱好编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口)和UNIX得到多用户、多任务、支持多线程和多CPU的操作系统。
Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux集成了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Kali Linux:安全渗透测试使用。(补天平台)
环境搭建
Linux的安装,安装步骤比较繁琐(操作系统本身也是一个软件),现在其实云服务器挺普遍的,价格也便宜,如果不想直接搭建,也可以直接买一台学习使用。
安装CentOS
- Linux是一个操作系统;
- 可以通过镜像进行安装;
- 可以使用已经制作好的镜像;
- 安装VMware虚拟机,然后打开镜像即可使用。
在虚拟机上安装CentOS7
安装操作系统和安装软件是一样的,注意:Linux磁盘分区的时候需要注意分区名即可! /boot /home
VMware的使用方式
- 点击屏幕进入虚拟机、Ctrl+Alt 将聚焦退出虚拟机!
- 登录root用户,点击not listed? ,输入root 123456
Xshell远程连接服务器
云服务器就是一个远程电脑,服务器一般不会关机。
Linux防火墙的端口开完之后,一定还需要再阿里云设置安全组规则!开放端口号,否则外界无法访问。【开端口号,看部署视频】
获取公网IP地址,重置实例密码。
安装xshell【远程连接工具 22端口】
安装Xftp【文件上传 21端口】
登录用户名密码之后就进入Linux系统
1. ctrl + 鼠标滚轮,放大和所辖字体
2. 上传文件使用xftp即可
如果要将本地文件,jar包,安装包等,放在linux下只需要从本地窗口拖过去即可。
走进Linux系统【开关机和基本目录介绍】
开机登录
开机会启动许多程序,它们在windows叫做“服务”(Service),在Linux中叫做“守护进程”(daemon)。
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个界面会提示输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输入完成回车即可。
一般情况下,用户登录有三种方式:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限用户是root,可以操作一切。
关机
在Linux领域内大多用在服务器上,很少遇到关机的操作,毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
关机指令:shutdown ;
sync # 将数据由内存同步到硬盘中;
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。 例如你可以运行如下命令关机:
shutdown -h 10 # 计算机在十分钟后关机
shutdown -h now # 马上关机
shutdown -h 20:25 # 系统在今天20:25关机
shutdown -h +10 # 十分钟后关机
shutdown -r now # 立即重启
shutdown -r +10 # 系统十分钟后重启
reboot # 重启
halt # 关闭系统
Note:不管是充气还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。
没有输出表示没有错误!
系统目录结构
- 一切皆文件
- 根目录 / ,所有的文件都挂载在这个节点下
登录系统后,在当前命令窗口下输入命令:
ls /
树状目录结构
对应目录解释
/mut 【我们后面会把一些本地文件挂载到这个目录下】
/etc 【这个目录用来存放所有的系统管理所需要的配置文件和子目录】
/home 【用户的主目录,在Linux中,每个用户都有一个自己的目录,一般改目录名以用户的账号命名】
常用的基本命令
目录管理
绝对路径、相对路径
绝对路径是路径的全称;
相对路径是相对位置。
cd :切换目录命令
./ :当前目录
cd … :返回上一级目录
ls # 列出目录【最常被使用】
-a参数:all 查看全部的文件,包括隐藏文件
-l参数:列出所有的文件,包含文件的属性和权限,没有隐藏文件
cd命令 切换目录
cd目录名(绝对路径【都是以 / 开头的】、相对路径【对于当前目录该如何寻找 …/…/】)
pwd显示当前用户所在的目录!
mkdir 创建一个目录 【白色表示文件,蓝色表示文件夹】
递归创建文件夹 -p
rmdir 删除目录
rmdir仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 -p 参数即可。
cp 【复制文件或者目录】
cp 原来的地方 新的地方!
拷贝文件至目录,如果文件重复,就选择覆盖或放弃。
rm 【移除文件或目录】
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除询问是否删除!
rm -rf / # 系统中的所有文件都被删除了,删库跑路。。。
mv 【移动文件或者目录】【还可以重命名文件】
-f 强制
-u 只替换已经更新过的文件
基本属性
看懂文件属性 root kaungshen
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,linux系统对不同的用户访问同意文件(包括目录文件)的权限做了不同的规定。
在linux中我们可以使用 ll 和 ls -l 命令来显示一个文件的属性以及文件所属的用户和组,如:
boot文件的第一个属性用“d”表示。“d”在linux中代表该文件是一个目录文件。
在Linux中得一个字符代表这个文件是目录、文件或链接文件等等:
- d 目录
-
- 文件
- l 链接文档 link file
- b 表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- c 表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为 【rwx】的三个参数的组合;
其中 【r】代表可读,【w】代表可写,【x】代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,会出现【-】而已。
每个文件的属性由左边第一部分的10个字符来确定。
属主和属组
修改文件属性
- chgrp【更改文件属组】
chgrp [-R] 属组名 文件名
# -R: 递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R参数,那么该目录下的所有文件的属组都会更改。
- chown:更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3. chmod:更改文件的9个属性
chmod [-R] xyz 文件或目录
# linux文件属性有两种设置方法,一种是数字(常用),一种是符号。
r:4 w:2 x:1 chmod 777【最高权限】
文件内容查看【经常使用】
Linux系统重使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容【用来读取文章或者配置文件】
- tac 从最后一行开始显示,可以看到tac是cat的倒着写。
- nl 显示的时候,顺道输出行号【看代码时,希望显示行号】(常用)
- more 一页一页的显示文件内容【空格代表翻页,enter代表向下看一行, :f 行号】
- less 与more 类似,但是more更好的是,它可以往前翻页。【空格翻页,上下键代表翻动页面 退出使用 q 命令 查找字符串 /set (向下查询) ?set(向上查询) n基序搜寻下一个,N 搜寻上一个】
- head只看头几行
- tail只看末尾几行
可以使用 man [命令] 来查看各个命令的使用文档,如:man cp
网络配置目录: cd /etc/sysconfig/newtwork-scripts
ifcfg-eth0 默认的网络配置文件
ifconfig 命令查看网络配置
Linux链接的概念
Linux的链接分为硬链接和软链接。
硬链接:A–B,假设B是A的硬链接,那么他们两个指向了同一个文件;允许一个文件拥有多个路径,用户可以通过这个机制建立硬链接到一些重要文件上,防止误删。
软链接[符号链接]:类似windows下的快捷方式,删除源文件,快捷方式也访问不了。
创建链接 ln 命令。
touch 创建链接。
echo 输入字符串,也可以输入到文件中。
torch f1
ln f1 f2
ln -s f1 f3
echo "i love you" >>f1
cat f1
cat f2
cat f3
删除f1之后,查看f2和f3的区别:f2硬链接还在,软链接失效。
Vim编辑器
vim通过一些插件可以实现和IDE一样的功能。
Vim是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤其是Linux中,必须会使用Vim(查看内容、编辑内容、保存内容)!
http://www.vim.org(官网自己也说vim是一个程序开发工具,不是文字处理软件)
三种使用模式
【vim wenjianming】如果这个文件存在,那就是修改这个文件;如果这个文件不存在,就会新建这个文件。
基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:
命令模式
用户刚刚启动vi、vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i切换到输入模式,以输入字符
- x删除当前光标所在处的字符
- **😗*切换到底线命令模式,以在最底一行输入命令。【如果是编辑模式,需要先退出编辑模式 ESC 】
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用一下按键: - 字符按键以及Shift组合,输入字符
- ENTER 回车换行
- BACK SPACE 退格键,删除光标前一个字符
- DEL 删除键,删除光标后一个字符
- 方向键 在文本中移动光标
- HOME、END 移动光标到行首/行尾
- Page Up、Page Down 上下翻页
- Insert 切换光标为输入、替换模式,光标将变成竖线、下划线
- ESC 退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式,光标就移动到了最底下,就可以在这里输入一些底线命令了。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在帝乡命令模式中,基本的命令有: - q退出程序
- w保存文件
- 【:wq】
按ESC可随时退出底线命令模式。
完整的演示说明
新建或者编辑文件,按i进入编辑模式,编写内容,编写完成后退出编辑模式,esc,退出之后进入底线命令模式 :wq 保存退出。
账号管理
你一般在公司中,用的应该都不是root账户!
简介
linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行追踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作有如下几个方面:
- 用户账号的添加、删除与修改;
- 用户口令的管理;
- 用户组的管理。
用户账号的管理
用户账号的管理工作主要设计用户账号的添加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
属组 属主
创建用户命令
useradd -选项 用户名 【创建一个用户】
-m :自动创建这个用户的主目录 /home/laomao
删除用户命令
userdel -r laomao 删除用户的时候将他的目录页一并删掉。
修改用户
usermod 对应修改的内容, 修改哪个用户。
usermod -d /home/233 laomao
修改完毕之后查看配置文件即可!
切换用户
root用户
- 切换用户的命令,su username
- 从普通用户切换到root用户,还可以使用 sudo su
- 在终端输入exit或logout或使用快捷方式ctrl + d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
- 在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加 - 例如 【su - root】
$ 表示普通用户 # 表示超级用户root
更改主机名
hostname # 查看主机名
hostname laomao # 修改主机名,修改完毕后重新连接即可
用户的密码设置问题
我们一般通过root创建用户时,要配置密码!
在公司中,你们一般拿不到公司服务器的root权限,都是一些分配的账号。
超级用户
passwd username :
new password:
re password:
普通用户
passwd
(current) UNIX password:
new password:
re password:
锁定账户
root 比如张三辞职了,冻结这个账号,一旦冻结,这个人就登录不上系统了。
passwd -l laomao # 锁定之后这个用户就不能登录了
passwd -d laomao # 没有密码也不能登录
用户组管理
属组、属主
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理设计用户组的添加、删除和修改。
组的增加、删除和修改实际上就是对、etc/group文件的更新。
创建一个用户组 groupadd
创建完用户组后可以得到一个组的id,这个id是可以指定的。
-g 520 如果不指定就是自增。
-G 给用户分配组
删除一个用户组 groupdel
修改用户组的权限信息和名字 groupmod -g [666] -n [new name]
用户如果要切换用户组怎么办?
# 登录当前用户 laomao
$ newgrp root
拓展:文件的查看。
/etc/passwd
用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
这个文件中的每一行都代表一个用户,我们可以从这里看出这个用户的主目录在哪,可以看待属于哪一个组。
登录口令:把真正的加密后的用户口令存放在 /etc/shadow文件中,保证我们密码的安全性。
用户组的所有信息存放在/etc/group文件中。
磁盘管理
df(列出文件系统整体的磁盘使用量)【默认使用字节表示】 du(检查磁盘空间)
df -h # 按Mb表示
du -sm /* # 检查根目录下每个目录所占用的容量
Mac 或者想使用Linux挂载我们的一些本地磁盘或者文件!
挂载:mount
mount /dev/laomao /mnt/laomao
# 将外部设备laomao 挂载到mnt目录下,来实现访问。
卸载:umount -f [挂载位置] 强制卸载
除了这个之外,以后我们安装了JDK,其实可以使用Java中的一些命令来查看信息。
进程管理
对于我们开发人员来说,其实Linux更多偏向于使用即可。
什么是进程
- 在Linux中,每一个程序都有自己的一个进程,每个进程都有一个id号;
- 每一个进程,都会有一个父进程;
- 进程可以有两种存在方式:前台,后台运行;
- 一般的话 服务都是后台运行的,基本的程序都是前台运行的。
命令
ps 查看当前系统中正在执行的各种进程的信息
ps -xx:
- -a 显示当前终端运行的所有的进程信息
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数。
ps -aux|grep mysql
ps -aux|grep redis
# | 在Linux这个叫管道符 A|B
# grep 查找文件中符合条件的字符串
ps -ef :可以查看到父进程的信息
ps -ef|grep mysql
# 看父进程我们一般通过目录树结构来查看
pstree -pu
-p 显示父id
-u 显示用户组
结束进程:杀掉进程,等价于windows结束任务
kill -9 进程的id
但是,我们平时写的java代码死循环了,可以选择结束进程。杀进程。