linux系统的基本命令

1、众筹-SpringSecurity断点调试

上周bug: 关闭SpringSecurity的 csrf功能

​ 1.1 使用SpringSecurity时,引入依赖后,需要在项目的web.xml中配置filter启用springsecurity:filter可以将请求过滤进行权限检查

​ 1.2 如果需要查看springsecurity执行流程,可以在配置的filter的拦截方法中打断点

​ 在DelegatingFilterProxy的 doFilter方法254行中打断点调试

​ 1.3 debug研究 提交登录请求时,springsecurity如何创建主体

​ 在浏览器中打开登录页面,从登录页面提交登录请求

​ 1.4 处理登录请求时,会在DelegatingFilterProxy的254行断点处停止

Filter delegateToUse = this.delegate;
获取项目启动时,springsecurity初始化的filter链对象的集合
invokeDelegate(delegateToUse, request, response, filterChain);  让获取的filter链继续执行

1.5 在FilterCHainProxy的177行

doFilterInternal(request, response, chain);
通过springsecurity的filter链处理当前请求

1.6 在FilterChainProxy的214行

vfc.doFilter(fwRequest, fwResponse);
执行springsecurity的filter链

1.7 在FilterChainProxy中320行打断点

currentPosition 代表已经执行过的filter链中的filter的数量

1.8 执行到FilterChainProxy currentPosition取出UsernamePasswordAuthenticationFilter时,开始去查看代码的执行过程

1.9 查看AbstractAuthenticationProcessingFilter中212行

authResult = attemptAuthentication(request, response);

做认证

2.0 在 UsernamePasswordAuthenticationFilter中

​ 75和76行获取了提交登录请求的账号密码

UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(
				username, password);
将获取到的账号密码创建为对象携带

94行进行认证

return this.getAuthenticationManager().authenticate(authRequest);

2.1 在ProviderManager的199行

result = parent.authenticate(authentication);
尝试使用用户自定义的Provider处理请求
执行时,可以获取到通过Security配置类封装的DaoAuthenticationProvider进行认证

174行

result = provider.authenticate(authentication);
使用DaoAuthenticationProvider进行认证(根据在配置类中设置给他的UserDetailsServiceImpl和PasswordEncoder尽心认证)

2.2 在DaoAuthenticationProvider中114行

loadedUser = this.getUserDetailsService().loadUserByUsername(username);
调用我们设置给他的userdetailsserviceimpl对象的loadUserByUsername方法并传入登录提交的账号进行主体的创建,并使用loadedUser接受数据库中查询得到的主体对象(密码是数据库中的加密过的密码)

2.3 在AbstractUserDetaisAuntenticationProvider中165行

preAuthenticationChecks.check(user);
查看账号是否可用

166行

additionalAuthenticationChecks(user,
					(UsernamePasswordAuthenticationToken) authentication);
进行密码判断,参数1:usr代表数据库查询到的主体,参数2:authentication代表浏览器登录提交的账号密码对象

2.4 在DaoAuthentionProvider中122行

String presentedPassword = authentication.getCredentials().toString();
获取登录提交的密码

94行

passwordEncoder.isPasswordValid(userDetails.getPassword(),presentedPassword, salt)
使用设置的MD5PasswordEncoder验证密码是否一致			

2、Linux-vi/vim编辑器

主机中使用xshell和xftp连接虚拟机时,其实就是主机连接虚拟机

在xshell和xftp中需要输入虚拟机的ip地址进行连接

问题:

​ 1、如果虚拟机和主机不能ping通

​ 主机需要关闭防火墙:

​ 控制面板->windows防火墙->启动或关闭防火墙

​ 关闭或卸载杀毒:

​ 2、虚拟机必须先关闭然后再关电脑

​ 可以备份虚拟机做准备

Linux几个基本的命令:

​ ip addr(ifconfig): 查看虚拟机的ip地址

​ ctrl+L :清屏

​ ls: 查看当前目录下的所有的内容

​ ll : 查看当前目录下的所有内容以单列形式显示

​ cd 路径:切换文件夹

​ 以后Linux系统服务器一般不会装桌面,都是通过命令行的方式操作

​ 有大量需求,例如修改配置文件、编写文本、文本追加…

​ 编辑文本

​ Linux中提供了vi/vim 编辑器,可以在命令行中使用vi或vim的命令编辑文本

​ vi/vim 新建文本文档.txt :可以对文本进行编辑

​ 输入: [shift] :q 回车 可以退出编辑器

2.1 一般模式

通过 vi/vim 文档名称,默认进入 一般模式

​ 1、dd :删除光标所在行

​ 2、u :撤销上一步操作

​ 3、dNd: 删除光标开始的n行

​ d+数字+d

​ 4、 yy :复制光标所在行

​ 5、p :粘贴复制的内容到光标的下一行

​ 6、x :删除当前字符

在vi或vim命令下,需要使用上下左右 按键移动光标翻动文档,不能使用鼠标实现

​ 7、:set nu 显示文档的行号

​ 8、 1 shift+g:跳转到最前

​ 9、行数 shift+g :跳转到第n行

​ 10、shfit+g : 跳转到最后

​ 11、shift+6 :跳转到行首

​ 12、shift+4 :跳转到行尾

2.2 编辑模式

是对文档内容做细化的修改

​ 在一般模式下,输入 i 、 a、 o、 r进入编辑模式

i: 在光标前插入内容

a: 在光标后插入内容

o :offline,在光标的下一行输入内容

s :删除光标所在的字符并开始插入

R: 替换模式

在编辑模式下,使用ESC返回到一般模式

2.3 命令模式

批量操作、保存退出、显示行号

​ 必须在一般模式下输入 /或者: 进入命令模式

​ 1、:q 退出

​ :q! 强制退出不保存修改的内容

​ 2、:w 保存

​ :w! 强制写

​ 3、:wq! 保存退出强制执行

​ 4、/字符串 在文档中搜索关键字

​ N :查找上一个匹配的关键字

​ n :查找下一个匹配的关键字

​ 5、:set nu 显示行号

​ 6、:set nonu 取消显示行号

​ 7、:%s/要替换的字符串/新字符串/g 批量替换指定字符串

​ :%s/SH/上海/g

三个模式的转换:

​ 1、只有一般模式才可以进入到编辑和命令模式

​ 2、一般模式输入i、a、o、r会进入到编辑模式

​ 3、一般模式输入 : 或者/会进入命令模式

​ 4、编辑模式按下ESC会返回到一般模式

​ 5、命令模式esc回到一般模式、只要不是退出的命令模式的命令执行后也会回到一般模式

3、Linux-帮助手册

Linux的命令非常多,Linux内置了帮助手册,可以查看命令如何使用

如果在xshell中 误操作按下了 ctrl+s 代表锁屏

再按下 ctrl+q 代表退出锁屏

man ls: 查看ls命令的帮助手册

​ -R 递归列出所有文件

​ -a 列出所有的文件包括隐藏文件

​ -l 单列输出

​ ls -Ral / :以单列的形式列出根目录下的所有的文件

​ q退出帮助手册( esc或者ctrl+c或者 q )

ls --help: 查看ls的帮助手册

cal : 显示日历

date :显示当前时间日期

​ 指定格式显示日期: 2020-05-25 10:55:00

date  +%Y'-'%m'-'%d' '%I':'%M':'%S

4、Linux-文件目录命令

​ pwd: 显示当前所在的位置

​ ls :以多列的形式列出目录下的所有的资源

​ ll :以单列的形式列出目录下的资源 等价于 ls -l

​ 如果Linux系统安装时选择了最小化安装,没有此命令

​ ls -al :以单列列出所有的文件包含隐藏文件

​ grep: 结合管道符 筛选查询的结果

​ ll |grep .txt

​ 列出当前路径下的包含.txt字符串的文件显示

​ ls -lR / |grep .txt

​ 列出系统中所有的包含txt的文件

​ cd :切换目录:

​ ~ 代表当前用户的家目录

​ 相对路径:

​ …/代表上一级目录

​ ./代表当前目录下,默认可以省略

​ 如果快速跳转到当前用户的家目录:

​ 如果是root用户就是 /root目录

​ cd

​ cd ~

​ 绝对路径:

​ 以/开始的路径

​ cd /root/桌面

====================

​ mkdir 文件夹名 :创建单个文件夹

​ mkdir /opt/a

​ mkdir -p a/b/c/d 一次性创建多个目录

​ rmdir 文件夹名: 删除文件夹 一般不用

​ rm 文件名:删除文件

​ -r 提示递归进入子目录进行删除操作

​ -f 强制执行不用提示

​ -v 显示执行的信息

​ rm -rvf 文件名 :递归执行强制删除操作并打印执行的信息

​ rm -rvf / : 递归删除Linux系统根目录下的所有的资源(千万不要用)

========================

​ touch 文件名: 创建新文件

​ rm -vf 文件名: 删除文件

============================

​ 查看文件内容:

​ vim 文件名

​ cat 文件名 :查看轻量级的文本内容

​ cat 文件1 文件2: 查看文件1和文件2的文本内容

​ cat 文件1 文件2>文件3: 将文件1和文件2 的内容合并到文件3中

​ cat 文件1>>文件2 :将文件1 的内容追加到文件2的末尾

​ more 文件名:查看大文本文件(类似分页) 一般不用

​ 回车代表向下加载一行

​ 空格键代表加载下一页

​ ctrl+c退出查看模式

​ less 文件名: 作用和more一样

​ 支持搜索关键字: /关键字

​ n 匹配下一个

​ N 匹配上一个

​ q 退出查看模式

​ tail -n行数 文件名: 从文档的最后开始查看n行

​ tail -n10 文件名

tail -f -n行数 文件名 : 从文档的最后查看n行并跟随查看

​ 查看文档的进程不要关闭,当文档有新的内容时立即刷新现实

​ 在一个xshell的连接中。使用tail -f -n10 a.txt跟随查看

​ 再新建一个xshell的连接,使用cat 1.txt>>a.txt向a.txt中追加文本

​ ctrl+c关闭跟随查看的模式

========================================

​ cp 源文件 复制后的文件名 : 移动复制文件

​ cp -r 源目录 拷贝后的目录: 递归将原目录中的内容拷贝到指定的目录下

​ 如果拷贝后的目录中有文件和原目录名称一样,内容不一样。拷贝时需要确认覆盖

​ mv 源文件 移动后的文件名: 文件移动到指定位置

​ mv 需要修改名称的文件 改后的文件名: 文件改名

​ mv a.txt 笑傲江湖.txt

​ echo :打印字符串或变量的值

[root@atguigu a]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

5、Linux-搜索查找命令

find:

​ find / -name ‘*.txt’ 从根目录开始查找所有的以.txt结尾的文件

locate:

​ locate /root/*.txt 在root目录下查找所有的以.txt结尾的文件

​ 今天创建的txt文件没有查询到,原因linux系统每天0点更新一次文件索引存到指定表中,locate相当于在表中根据查找路径匹配表中的文件索引的路径

​ updatedb :更新linux的文件索引

​ 更新后再查询

​ ln: 软连接

​ ln -s 文件 链接名:给文件创建软连接

6、Linux-压缩解压缩命令

tar:

​ 压缩文件: tar -zcvf mypackage.tar.gz *.txt

​ 解压缩文件:tar -zxvf /root/桌面/mypackage.tar.gz

​ zip:

​ 压缩文件: zip 压缩包名 要压缩的文件列表

​ zip my.zip 1.txt 2.txt

​ 解压缩: unzip 压缩包名

​ unzip my.zip

7、Linux-磁盘操作(了解)

mbr:最多有4个主分区,最大支持2T的硬盘

​ 扩展分区无限,但是需要占用主分区实现

​ gpt: 底层也采用mbr的方式实现,主分区和扩展分区的数量无限

​ 支持硬盘大小不受限制

​ 磁盘分区的查看:

​ lsblk: 主要查看磁盘分区的大小

​ lsblk -f: 查看磁盘的挂载 文件系统类型 唯一标记

​ 给虚拟机服务器添加一块硬盘:

​ 1、给虚拟机先添加一块硬盘
在这里插入图片描述
重启虚拟机

​ 通过 lsblk 查看新增的硬盘
在这里插入图片描述

2、如果需要使用新增硬盘,需要格式化硬盘[分区、设置fstype和唯一标记uuid/label]

​ Linux中任何东西都是文件,sdb硬盘也是一个文件,硬件设备对应的文件存在 /dev目录下
在这里插入图片描述

分区,其实就是对/dev/sdb进行分区操作

​ 2.1 分区:

​ fdisk /dev/sdb

​ m 获取帮助

​ n 给硬盘创建一个新的分区

​ 一路回车

​ w 保存分区数据

​ lsblk -f :可以查看到sdb的分区 sdb1

​ 2.2 永久:设置文件系统格式+设置别名

​ 注意: 格式化分区

​ mkfs -t ext4 /dev/sdb1

​ 硬盘的分区情况存在 /etc/fstab ,只要参考sda的分区的数据可以手动编写配置实现永久挂载硬盘

​ vim /etc/fstab :手动新增sbd1分区的配置
在这里插入图片描述
创建挂载点的文件夹: mkdir /newdisk

​ 2.4 让Linux系统重新加载/etc/fstab文件获取硬盘分区信息

​ mount -a
在这里插入图片描述
查看指定路径下的磁盘使用情况:

​ du -ach --max-depth=1 /root

8、Linux-网络进程命令(重点)

8.1 ifconfig

查看网卡信息,默认网卡名称ens33

8.2 图形界面修改ip

在这里插入图片描述

8.3 配置文件设置固定ip(重要)

在这里插入图片描述

动态分配ip的网络配置文件:
在这里插入图片描述
手动修改配置文件:
在这里插入图片描述

DEVICE=ens33   # 网卡名
ONBOOT=yes		# 开机加载网络配置启动网络服务
BOOTPROTO=none  # 分配ip的协议      none static :不自动分配,手动设置ip   /  dhcp:动态分配ip
IPADDR=192.168.1.130  # 手动指定的ip
GATEWAY=192.168.1.2   # 网关
DNS1=8.8.8.8		# 连接外网时解析域名使用, 如果不配置不能连接外网

修改了配置,需要重启网络服务:service network restart

8.4 进程查看

ps -aux :以systemv的风格 查看进程
在这里插入图片描述
主要查询 进程的PID以及CPU和内存的占用情况

ps -ef :

​ 主要查询进程的PID和该进程的父进程的PPID

在这里插入图片描述
查询进程的目的一般都是为了杀死该进程

​ 为了查询到想要找的进程 ps 可以结合 grep管道符 筛选查询结果

​ ps -aux|grep gedit
在这里插入图片描述

8.5 杀死进程

kill 进程id :通知进程自己关闭

kill -9 进程id: 系统强制杀死指定的进程
在这里插入图片描述
killall 进程名称:通过进程名称杀死该名称所有的进程
在这里插入图片描述

关于ll命令无法使用的解决方案

问题:
在这里插入图片描述
原因:

"ll"命令不是linux的基本命令,它是"ls -l"的别名,部分版本并不直接支持“ll”命令输出。

解决方法:

运行“vi ~/.bashrc”,查看该文件里是否有“alias ll=‘ls -l’”这样的数据,如有,将数据前的“#”去掉,如果没有,将“alias ll=‘ls -l’”加进去并保存,然后运行“source ~/.bashrc”命令,即可成功。如下图:
在这里插入图片描述

在这里插入图片描述

开放指定端口号

firewall-cmd --zone=public --add-port=1935/tcp --permanent

 命令含义:
--zone #作用域
--add-port=1935/tcp  #添加端口,格式为:端口/通讯协议
--permanent  #永久生效,没有此参数重启后失效

Linux 为shell脚本增加执行权限

  • chmod是 Linux 中权限管理命令change the permissions mode of a file的缩写。
  • 为所有 .sh 脚本添加执行权限
    • chmod u+x *.sh,表示对当前目录下的.sh文件的所有者增加可执行权限。
    • u 代表所有者;
    • x 代表执行权限;
    • 表示增加权限。
  • 也可以指定单个文件chmod u+x abc.sh

windows下编写的脚本文件格式转linux下编写的脚本文件格式

  1. 在linux系统下,用vi/vim打开脚本文件。在命令模式下输入:set ff=unix,保存就行。
  2. 在windows下使用文本编辑器打开脚本文件,将其DOS格式改成UNIX格式。
  3. 在Linux下新建一个.sh脚本文件,复制粘贴内容。

查看端口占用的进程

netstat -ntlp //查看当前所有的tcp端口
  • 结合grep可以进一步查看具体端口号的占用情况
netstat -tunlp|grep 端口号,查看端口占用情况

-t , 显示tcp的相关选项
-u, 显示udp的相关选项
-n, 拒绝显示别名,能显示数字的全部转化为数字
-l, 仅列出在Listen(监听)的服务状态
-p, 显示建立相关链接的程序名

根据程序名称查询进程ID

ps -ef|grep 进程名
ps -ef 是显示所有进程

在这里插入图片描述
在这里插入图片描述
UID:进程拥有者
PID:进程ID
PPID:上级父程序的ID
C: CPU 使用的资源百分比
STIME: 系统启动时间
TTY:登入者的终端机位置
TIME:使用掉的 CPU 时间
CMD:所下达的指令名称

例如查询nginx相关进程状态
[root@ops01 ~]# ps -ef|grep nginx

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

destiny- freedom

感觉怎么样呐?

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

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

打赏作者

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

抵扣说明:

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

余额充值