目录
为什么用linux
原因:很多大型项目都是部署在linux服务器中,在服务器端,开发领域上linux越来越受欢迎
linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix(可移植操作系统接口)和unix的多用户,多任务支持多线程,和多cpu的操作系统
linux能运行主要的unix工具软件,应用程序和网络协议,它支持32位和64位硬件,linux继承了unix为核心的设计思想,是一个性能稳定的多用户网络操作系统
注意:linux内一切皆文件,权限最高为root(若想要以root权限执行指令,那么就在指令之前加sudo)
linux软件分类
应用软件
- 为了实现某些业务功能
- 应用软件要基于对应的系统软件(不同的操作系统要安装不同的软件)
系统软件
- 就是为了和硬件打交道
- 屏蔽软件与硬件的差异
Linux分支
RedHat(收费)
- 代表作:centOS
- 主要用于服务器版本
Debain(免费)
- 代表作:Ubuntu
- 主要用于视窗界面
linux环境变量
环境变量:其是操作系统给程序运行提供支持的文件夹路径设置
环境变量理解:变量在任何程序中的作用都是被赋值和被取值,这个变量全局操作系统可以使用,其内部的小软件也可以使用
环境变量的配置形式
- 如果在用户变量下配置环境变量,表示该环境变量只对当前用户生效
- 如果在系统环境下配置环境变量,表示该环境变量对所有用户都生效
理解:在dos窗口输入命令执行文件时,其会先从当前文件夹下寻找该执行文件,若没有该文件则会从环境变量下配置的path路径下寻找该文件,若有则执行,若没有则不执行,如果从运行窗口直接输入该命令则电脑会直接去环境变量的path路径下寻找该文件
环境变量配置文件所在位置:/etc/profile
用户变量配置文件所在位置:/root/.bash_profile(家目录的.bash_profile文件)
Linux里的特殊字符
.点
- 若文件的开始是点,则说明当前文件是一个隐藏文件
- .指向当前目录
- ..指向当前目录的上级目录
$:说明这是一个变量
*:通配符
~:当前用户的家的目录
空格:Linux的命令与参数用空格隔开
/:整个Linux文件的根目录
命令参数-
- 若是单词,一般加两个杠
- 若是字母则一般加一个杠
linux开关机
前言:开机时会启动许多程序,他们在windows内叫做服务(service),在linux内叫做守护进程(daemon)
关机命令:shutdown
shutdown -h 10:计算机将会在10分钟后关机
shutdown -h now:立马关机
shutdown -c:撤销关机
shutdown -h 11:00:计算机将会在今天11:00关机
shutdown -r now:系统立马重启
shutdown -r +10:系统10分钟后重启
reboot:系统现在重启
halt:关闭系统
注意:不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
Linux日期和时间
查看时间:date
修改时间:date -s '时间'
注意:这里的时间举例——2019-11-11 11:11:11
时间同步
安装ntp:yum install ntp -y
语法:ntpdate 时间同步服务器域名(如cn.ntp.org.cn)
同步本地服务器时间
- 打开本地ntp服务:service ntpd start(用于让其他服务器同步时间,关闭防火墙)
- 查看ntp服务状态:service ntpd status
- 另外服务器同步本地ntp服务器:ntpdate 本地服务器域名
linux的基本命令
将数据内存同步到硬盘:sync(一般关机前使用)
查看当前服务器的内存使用率:top
登出:exit
伪清屏:clear或者reset
查看命令历史:history
清空命令历史:history -c
打印当前环境变量:echo $PATH
命令行暂停n秒:sleep n
目录管理
linux的目录结构
注意:linux的目录结构为一个树状目录结构,根节点为/,用户想要扩容,那么他会把磁盘挂载到根节点之后的具体文件夹,那么该文件夹就只会使用新挂载磁盘的空间了,从而间接地使根节点的磁盘空间容量增大。
基本命令
切换目录:cd 路径
返回根目录:cd /
返回usr目录:cd ~
返回上一级目录:cd ..
查看当前文件目录:pwd
列出目录
命令:ls [options]
options
- -a:查看全部的文件,包括隐藏文件
- -l:列出所有的文件,包含文件的属性和权限,没有隐藏文件
注意:linux内的所有属性可以组合使用(eg:ls -al/ls -la)
详细列出文件及属性:ll
文件夹的操作命令
创建和删除目录
创建文件夹:mkdir 文件夹名
创建多层目录:mkdir -p dir1/dir2
删除一级目录:rmdir dir1
递归删除多个目录:rmdir -p dir1/dir2(dir1也被删除了)
并列创建ab、ac文件夹:mkdir -p a{b,c}
注意:
- -p表示删除或创建多个文件夹
- rmdir仅能删除空的目录,若下面含有文件,则需要删除文件
复制目录
语法:cp [options] 原来地方的文件 新的地方(也可以顺便重命名)
options
- -r:递归复制
注意:cp拷贝问件夹要加-r,拷贝文件不需要加-r
案例
cp a.txt ../a(将当前文件下的a.txt文件复制到上级目录的a目录内)
cp a.txt ../a/b.txt(将当前文件下的a.txt文件复制到上级目录的a目录内,并将其重命名为b.txt)
移除文件或者目录
命令:rm [options] 文件或目录
options
- -f:忽略提示警告
- -r:递归删除目录
- -i:互动,删除询问是否删除元素
注意:若删除的是目录,则必须加-r参数,不管里面有没有文件
移动文件或目录
语法:mv [options] 移动的文件或目录 移动文件或目录的地址(也可以重命名文件/目录)
options
- -f:强制移动(目标文件存在时强制覆盖)
- -u:只替换已经更新过的文件
简单举例
- eg:mv c/a.txt d/b.txt(将c目录下的a.txt移动到d目录下并重命名为b.txt)
- eg:mv c d(将c目录移动到d目录,若d存在则直接将c移动到d里;不存在则直接将c目录重命名为d)
linux文件属性
前言
linux是一种典型的多用户系统,不同的用户拥有不同的地位,拥有不同的权限。为了保护系统的安全性,linux系统对于不同的用户访问同一文件(或目录)的权限做了不同的规定
分析(drwxr-xr-x)
分析第一个字母
- d:目录
- -:文件
- l:链接文档
- b:可供存储的接口设备
- c:端口设备(eg:鼠标、键盘)
接下来的几个字母以三个为一组,均为(rwx)组合,这三组分别为:属主权限、属组权限、其他权限
解析字母的意思
- r:该文件/目录可读-read
- w:该文件/目录可写-write
- x:该文件/目录可执行-execute
注意:若都没有权限,则用“-”替代
解析ll后文件排列格式
drwxr-xr-x. 2 root root 6 10月 4 22:57 公共
drwxr-xr-x:文件类型与权限
2:文件个数
root:属主
root:数组
6:文件大小
10月 4 22:57:时间
公共:文件名
更改文件属组
命令:chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个文件的属组时,若加上此参数,那么该目录下的所有东西都会属组更改
更改文件属主与属组
更改文件属主:chown [-R] 属主名 文件名
更改文件属主属组:chown [-R] 属主名:属组名 文件名
-R:递归更改文件属性,就是在更改某个文件的属性时,若加上此参数,那么该目录下的所有东西都会属性更改
chmod更改9个属性
命令:chmod [-R] 三个数字 文件/目录
rwx中r占4、w占2、x占1
- 7=4+2+1——rwx
- 6=4+2+0——rw-
- 3=2+1+0——-wx
- 5=4+1+0——r-x
- 以此类推
eg:chmod 777 文件/目录(三个权限都有读写与可执行权限)
-R:递归更改文件属性,就是在更改某个文件的属性时,若加上此参数,那么该目录下的所有东西都会属性更改
重定向
输出重定向
理解:改变数据输出的位置,方向
将ll的输出结果存放到test文件中:ll n> test(正确或错误输出)
将ll的输出结果存放到test文件中:ll >> test 2>&1(不管对错)
注意:
- 一个>箭头表示覆盖(下次在输出到该test文件内则原内容会被覆盖),两个箭头>>表示追加(下次在输出到该test文件内则新内容会被追加)
- n有两个值1(正确输出)2(错误输出),1可以省略不写;2>&1(不管对错都输出)
- 数据黑洞:将数据追加到/dev/null内,那么数据就永远取不出来了
- 注意:重定向符号>代表覆盖文件内容(若没有文件则创建新文件);>>代表换行追加文件内容
输入重定向
理解:将本来需要键盘获取输入的命令转移到文件读取内容
[root@CentOS7-1 ~]# cat input
i am a boy
you are a gril
it is a dog
执行:wc -l <input
结果为3
注意:若命令不能从标准设备(stdin)读取数据,那么这个命令就不能做输入重定向
文件的基本操作
创建文件:touch 文件名
向文件中输入内容:echo "文件内容" >> 文件名
在控制行输出hello:echo hello
注意:源文件若有内容,则新内容会追加到文件的后面
在整个硬盘中查找文件:find / -name 文件名
查看文件属性:file 文件的路径以及名称
查看文件/文件夹状态:stat 具体路径的文件/文件夹
查询文件/目录位置:whereis 文件或目录
文件的查看
基本命令
nl 文件名:从第一行开始显示文件内容(显示行号信息)
tac 文件名:从最后一行开始显示文件信息(倒着显示)
tail -n 20 文件名:显示文件结尾的20行内容
head -n 20 文件名:从第一行开始显示文件的20行内容
tail命令
语法:tail [options] 文件名
options
- -f:监听指定inode的数据变化,当文件被删除后即使新创建,inode也会发生变化
- -F:监听指定名字的文件,若文件删除后重新创建,监听不受影响
- -n:显示结尾内容行数
举例:tail -n 20 文件名(显示文件结尾的20行内容)
more命令
语法:more 文件名
功能:页面内容若太多的话,则可以实现翻页(只是可以向下翻页)
注意:“空格键”实现翻页,“enter”代表向下看一行,“:f”可以看当前的行号信息
less命令
语法:less 文件名
功能:页面太多的话可以实现翻页功能其可以实现向上翻页和向下翻页
翻页与查看
- “空格键/pgdn”代表向下翻页
- “b按键/pgup”代表向上翻页
- “←键”代表向左翻页
- “→键”代表向右翻页
- “↑键”代表向上看一行
- “↓键”代表向下看一行
搜索
- /搜索内容:向下搜索
- ?搜索内容: 向上搜索
- n代表查找匹配了的字符 向上查找
- N代表查找匹配了的字符 向下查找
退出命令:q按键
cat命令
向文件写入内容
#向文件里写入特定的文件内容,遇到eof则停止写入
cat <<eof> 文件名
写入文件的内容
eof
#向文件中写入内容,ctrl+c退出
cat > 文件名
cat 文件名:从第一行开始显示文件内容
cat -A 文件名:从第一行开始显示文件内容(包括隐藏内容)
硬链接与软链接
前言
linux内的链接分为两种:硬链接、软链接
- 硬链接:用户可以通过此链接机制建立硬链接到一些重要的文件上以防止误删(若删了源文件则由于其链接源文件的文件没删,则还是可以访问到源文件)
- 软连接:类似于window下的快捷方式,删了源文件,其链接也就没法用了
硬链接和软链接的区别
每个文件内部都有个Inode属性来确定唯一性(地址),这个属性通过stat关键字来查看。硬链接后文件的Inode属性和源文件相同,软连接后文件的Inode属性和源文件不同,当删除源文件后,若没有硬链接则会将文件内容删除,若有硬链接则不会将文件内容删除。
注意:粉色文件为硬链接,黄色文件为软链接,当且仅当links为0时,才会将文件内容删除。
实践操作
- 创建文件:touch f1
- 将f2硬链接到f1:ln f1 f2
- 将f2软链接到f1:ln -s f1 f2
注意:只要将源文件f1改变,那么通过f2访问到的内容也改变(不管是硬链接于软链接)
vim编辑器
vim的功能以及三种模式
理解:vim是从vi发展出来的文本编辑器,具有代码补全,编译及错误跳转等功能,在程序员中被广泛应用
主要功能:查看内容,编辑内容,保存内容
vim的三种模式:命令模式、输入模式、底线命令模式
三种模式的切换
- 用户刚创建文件便进入了命令模式
- 命令模式下按i键后切换到输入模式
- 命令模式下按:键切入到底线命令模式以退出
- 其他模式下按esc键退出到命令模式
vim的使用
命令:vim 文件
注意:若该文件存在则是修改该文件,若不存在则是新建该文件
命令模式
- /键搜索内容
- n代表查找匹配了的字符 向上查找
- N代表查找匹配了的字符 向下查找
- pgup/pgdn:上下翻页
- 删除当前行:dd
- 快速定位到某一行:行号 gg
- 从当前词跳到下一个词:w
- 删除当前光标下的n个单词:ndw
- 光标处剪切n个字母:nx
- 复制n行:nyy
- 向下粘贴n遍:np
- 从当前光标复制n个单词:nyw(光标必须在单词首字母上)
- 撤销:u
- 转到行首:shift+6
- 转到行尾:shift+4
- 替换两个字母:2r(之后再输入要替换的字母)
- ctrl+s:锁屏
- ctrl+q:解锁
输入模式
- 字符按键:输入字符
- enter:回车换行
- backspace:退格
- delete:删除光标的后一位字符
- 方向键:移动光标
- pgup/pgdn:上下翻页
底线命令模式
- q键:退出程序
- w键:保存文件
- w!:强制保存
- q!:强制退出
- wq:保存并退出
- set nu:显示行号
- set nonu:不显示行号
- /字符:搜索内容(按n键切换搜索到的内容)
- s/要替换的内容/替换成什么内容/(一次只能替换一个,只能替换当前行)
- s/要替换的内容/替换成什么内容/g(全部替换,只能替换当前行)
- g/要替换的内容/替换成什么内容/g(全部局替换,所有行)
linux账号管理
前言
- linux是一个多用户,多任务的分时操作系统,任何一个使用系统资源的用户都必须首先向管理员申请一个账号,然后根据这个账号进入系统
- 用户使用账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件并为用户提供安全性防护
- linux内最高权限的账户叫做root账户,其可以操作一切
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录、和的登陆shell等资源(linux中一切皆文件,添加用户说白了就是往某一个文件中写入用户信息)
基础命令
查看当前在线的用户:who
查看自己现在登录用户名:whoami
添加用户
语法:useradd [options] 用户名
options
- -m:自动创建这个用户的主目录
- -g 用户组:指定用户所属的用户组
- -d 目录:指定用户的主目录,若目录不存在,则同时使用-m选项,可以创建主目录
- -u 用户号:指定用户的用户号
查看所有用户及密码
查看所有用户:cat /etc/password
查看所有用户密码:cat /etc/shadow
注意:在这里面看到的用户密码是加密后的
删除用户
语法:userdel [options] 用户名
options
- -r:删除用户的时候将他的目录页一并删除
修改用户
语法:usermod [options] 用户名
options
- -d 目录:修改用户的主目录
- -g 用户组:修改用户的用户组
- -u 用户号:修改用户的用户号
- -L:锁定用户名
- -U:解锁用户名
切换用户
[root@localhost home]#
root:当前用户名
@localhost:当前主机名
home:当前所在的目录
#:表示当前为root用户($表示当前为普通用户)
语法:su 用户名
注意:切换后使用新用户的工作环境
退出用户到root:exit
用户密码设置
命令:passwd 用户名
锁定用户命令
锁定用户:passwd -l 用户名(锁定后该用户便不能登录)
清空用户密码:passwd -d 用户名(没有密码也不能登录)
用户组管理
前言:每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同的linux系统对用户组的规定有所不同,如linux下的用户组属于与他同名的用户组,这个用户组在创建用户时创建
创建用户组
命令:groupadd [options] 用户组名
options
- -g 组的id:用于指定组的id
注意:创建用户组可以得到一个组id,这个id是可以指定的
查看删除切换用户组
查看用户组:cat /etc/group
删除用户组:groupdel 用户组名
用户切换用户组:newgrp 组名(将当前用户的当前组切换为新组)
修改用户组
命令:groupmod [options] 用户组名
options
- -g 用户组id:用于修改用户组id
- -n 新用户组名:用于修改用户组名
磁盘管理
查看分区情况
命令:df [options]
options
- -h:以mb的方式详细列出磁盘使用情乱
检查文件夹的使用量
命令:du [options] 文件夹名
options
- -h:详细列出使用情况
- -a:检查磁盘空间使用量,包括隐藏的
- -sm /*:检查根目录下的每个目录所占用的容量
- --max-depth=n:迭代深度为n(表示从此检查n层文件夹)
文件挂载
将外部设备挂载到mnt目录下以实现访问
挂载:mount dev/外部设备 mnt/目录名
卸载:umount -f /mnt/目录名
注意:-f表示强制卸载该设备
内存管理
命令:free [options]
options
- -m:以字节的方式显示当前内存的使用
进程管理
前言
- 在linux中每一个程序都有自己的一个进程,每一个进程都有一个id号
- 每一个进程都有一个父进程
- 进程可以有两种存在方式:前台、后台
- 一般服务都是在后台运行,基本的程序都是前台运行
查看当前系统正在运行的进程信息
命令:ps [options]
options
- -a:显示当前系统中的所有进程信息
- -u:以用户为单位显示开启的进程
- -x:显示非控制终端上的进程信息
- -e:显示所有进程
- -f:以全格式的形式显示
- --forest:以树状形式显示
常用:ps -aux(查看所有进程)
常用:ps -ef(相对于上面可以查询到父进程信息)
管道符与过滤
理解:管道符|就像管道一样,以上一个输出的结果来操作下一个命令
grep:查找文件中符合条件的字符串
findstr:查找文件中符合条件的字符串,只不过相对grep来说后面的字符串要加“”
eg:ps -aux | grep mysql(查找和mysql相关的进程)
eg:ps -aux | findstr "mysql"(查找和mysql相关的进程)
查看进程树
安装:yum -y install psmisc
命令:pstree [options]
options
- -p:显示父id
- -u:显示用户组
将进程变成后台进程
方法:在新建的进程任务后加&号
将打印进程变为后台进程:ping www.baidu.com >> baidu &
查看当前的后台进程:jobs
防止后台进程被挂起就可以在前面加nohup:nohup ping www.baidu.com >>baidu 2&1 &
结束进程
一般类型杀死进程:kill pid号
较为强硬的杀进程:kill -15 pid号
强制杀进程:kill -9 pid号
注意:可以一次杀死多个进程,也就是pid号可以写多个
主机与虚拟机的信息传输
安装lrzsz 工具包:yum install lrzsz -y
电脑文件上传到虚拟机当前目录:rz
虚拟机文件上传到电脑:sz 文件名
虚拟机与虚拟机之间的信息传输
将具体路径的文件拷贝到具体用户名,具体IP地址的主机内的具体目录中(送文件)
scp 具体路径的文件 用户名@IP地址:/需要拷贝到的具体目录/
将具体用户名,具体IP地址的主机内具体路径的文件拉到本机的要拷贝的文件目录中(拿文件)
scp 用户名@IP地址:/具体路径的文件 /需要拷贝到的文件目录
注意:拷贝文件夹需要在用户名前加-r
linux自启动与定时任务
编写一个脚本
命令:vi begintext.sh
#!/bin/sh
#开机自启的内容
#或得到的实践追加到/home里的test文件中
date >> /home/test
赋予脚本可执行权限:chmod 777 begintext.sh
自启动设置
- 将要自启动的程序添加到/etc/rc.d/rc.local
- 给自己运行rc.local的权限:chmod 777 rc.local
- 在rc.local内写入自己要自启动脚本的具体路径后保存
#!/bin/bash
touch /var/lock/subsys/local
#在下面写入自启动脚本的路径
/root/begintext.sh
结果:重启(reboot)后就发现脚本已经执行了。
注意:
- 第一个时间是我测试脚本用的,第二个时间是启动后生成的
- 取消这个开机自启动任务直接把rc.local下的脚本路径删除后保存退出即可
linux定时任务
前言:crontab命令主要用于设置周期性的任务处理,比如每天凌晨2点更新数据等,经常用于系统任务调度
命令
- crontab -e:编辑当前用户定时任务列表
- crontab -l:查看当前用户定时任务列表
- crontab -r:删除当前用户定时任务列表
注意:此种定时任务是根据当前用户而言的
定义定时任务
命令格式:分 时 日 月 周 任务
参数解释
- minute:表示分钟(0-59之间的任何整数)
- hour:时(0-23之间的任何整数)
- day:天(1-31之间的任何整数)
- month:月(1-12之间的任何整数)
- week:周(0-7之间的任何整数[0和7是星期日])
- command:命令(要执行的命令,可以是系统命令)
特殊取值
- *:通配符匹配,代表所有可能的值
- ,:指定一个值得不确定范围(1,2,5,9——表示这个值可能的取值)
- -:一个值得确定范围(2-6——表示这个值在2-6之间)
- /:表示频率(时——0-23/2表示每2小时执行一次)
需求:脚本每周每月每日每时每分钟执行一次
* * * * * /root/begintext.sh
结果:每周每月每日每时每分钟脚本运行一次(*也可以写成0-59/1)
定义开机自启任务
命令格式:@reboot 自启动脚本的路径
保存并推出后,重新启动发现脚本执行
注意:关闭开机自启动就可以直接把上面在crontab文件中定义的命令删除即可
解压缩命令
tar命令
命令:tar [options] 压缩包名 -C 目标目录
options
- -z:支持zip解压文件
- -x:从压缩文件中提取文件
- -v:显示操作过程
- -f:指定压缩文件
常用命令
解压这个压缩包到当前目录:tar -zxvf 压缩包名
解压这个压缩包到指定目录:tar -zxvf 压缩报名 -C 目标目录
将具体路径文件压缩并命名:tar -zcf 压缩后的文件名 具体路径下的文件名
注意:这里的c表示压缩
zip与unzip
使用前:yum install zip unzip -y
压缩文件:zip -r 压缩后的文件名 具体路径下的文件名
解压文件:unzip 具体路径文件名
安装卸载命令
rpm安装命令
命令:rpm [options] 包名
options
- -i:安装
- -v:查看安装过程
- -e:卸载
- -h:hash加密算法
- -a:所有的rpm包
- -q:查看
- --nodeps:安装软件时忽略依赖性
常用命令
安装:rpm -vih 包名
查看已安装的rpm包:rpm -qa
查看特定的rpm包:rpm -qa | grep 包名
卸载:rpm -e --nodeps 包名
yum安装
更换yum源
首先下载wget软件:yum install wget -y
//进入源所在目录
cd /etc/yum.repos.d/
//将之前的源进行备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back
//下载自己想要的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
//清楚旧的缓存数据
yum clean all
//建立新缓存
yum makecache
yum基本命令
清空yum缓存:yum clean all
建立新缓存:yum makecache
查看ifconfig命令属于哪个包:yum search ifconfig
查看包的信息(是否安装):yum info net-tool
查询所有的rpm包:yum list
安装软件:yum -y install 软件名称(-y为所有的提示都为y)
卸载软件:yum remove 软件名称
重装软件:yum reinstall 软件名称
注意:
- yum安装为在线安装,确保linux联网
- yum安装的软件若有其他依赖,则会帮我们安装依赖后再安装软件
wget下载命令
前言:
- wget是一个从网络上自动下载文件的工具,它支持http、https、ftp协议,可以使用http代理。
- 安装wget:yum -y install wget
命令:wget [options] 要下载的文件url
options
- --no-check-certificate:以不安全连接的方式下载
- --continue:延续之前的下载(之前没下载完的资源加该参数)
- -O:指定要下载的路径并为文件赋予新名字
注意:下载的必须是文件,目录不可以
结果:我们在/root/download/目录下就可以看到下载的test.jar文件
curl命令
前言:curl全名client url即客户端url工具;其可以让我们不需要浏览器也能作为http客户端发送请求;可以在终端输入命令也可以作为脚本传输数据,而且是跨平台的。
命令:curl [options1] url地址 [options2]
四种请求发送
servlet接口测试
访问路径:192.168.18.6:8080/qingqiu
@WebServlet("/first")
public class Gettest extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
StringBuilder builder = new StringBuilder();
BufferedReader reader = req.getReader();
String line;
while (null!=(line=reader.readLine())){
builder.append(line);
}
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("post请求,值为:"+builder.toString());
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String name = req.getParameter("name");
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("get请求,name的值为:"+name);
}
}
注意:
- 我的linux机器与192.168.18.6处于同一网段
- put请求类似于post请求,delete请求类似于get请求,由于空间问题就不写了
get请求
命令:curl -XGET url地址
注意:这种请求是默认的,XGET参数可以省略
post请求
命令:curl -XPOST url地址 -d 发送的数据
put请求
命令:curl -XPUT url地址 -d 发送的数据
delete请求
命令:curl -XDELETE url地址
HTTP头
添加请求头信息
命令:curl [-XPOST] url地址 -H "首部信息" [-d 发送的数据]
获取响应所有首部信息
命令:curl -I url地址
文件处理
不改名下载
命令:curl -O 文件url地址
注意:这种方式下载文件不改变文件名,并且会把下载好的文件保存在当前目录下
自定义文件名下载
命令:curl -o 文件名 文件url地址
注意:这种方式下载文件可自定义文件名,并且会把下载好的文件保存在当前目录下
限制下载速度
命令:curl --limit-rate 速度大小 [-o 文件名] url文件地址
最终:磨磨唧唧半天终于墨迹完了
断点续传
命令:curl -C- -o 文件名 url地址
注意:文件名为之前的文件名,下载地址为之前的下载地址。
连接ftp下载
前言:之前我们下载所用的协议都为http
下载文件命令:curl -u 用户名:密码 -O ftp的url地址
上传文件命令:curl -u 用户名:密码 -T 要上传的文件 ftp的服务器地址
说明:通过IIS建立FTP站点并把public目录挂向了FTP服务站点,允许匿名访问
curl测试连接
查看底层连接信息
命令:curl -v url地址
注意:这里信息太多,不再举例
代理连接
命令:curl --proxy 协议://用户名:密码@代理地址:端口 要访问的url地址
注意:这里我匿名访问,允许所有的用户都可使用该代理。
Linux普通剑客
cut
作用:用于切分文件
语法:cut -d '分隔符' -f1,2,3 文件名
options
- -d:以什么分隔符进行分割
- -f:分割对应的列
理解:将文件名对应的文件按照分隔符的分割方式分割1,2,3列
对于test文件
[root@CentOS7-1 ~]# cat test
i am a dog : i am a boy : i am a paper : i am a pat
i am a cat : i am a gril : i am a pig : i am a cow
使用命令:cut -d ':' -f1,2,3 test
[root@CentOS7-1 ~]# cut -d ':' -f1,2,3 test
i am a dog : i am a boy : i am a paper
i am a cat : i am a gril : i am a pig
sort
作用:对文本进行排序
语法:sort [options] 文件名
options
- -t:用什么分割符进行分割
- -k:分割后用第几列进行排序
- -r:按26个字母逆序排列
- -n:若有数字则先按照数字大小进行排序(默认升序,优先级高于-k)
注意:若不加options,那么行就会按照第一列26字母顺序排列(若第一个字母一样则找第二个字母)
对于test文件
[root@CentOS7-1 ~]# cat test
hello : orange : bird : cat
apple : cow : cup : desk
deep : dog : app : country
computer : phone : bag : paper
使用命令:sort -t ':' -k3 -r test
[root@CentOS7-1 ~]# sort -t ':' -k3 -r test
apple : cow : cup : desk
hello : orange : bird : cat
computer : phone : bag : paper
deep : dog : app : country
wc
作用:统计单词的数量
语法:wc [options] 文件名
options
- -l:表示显示有几行
- -w:显示有几个单词(空格换行隔开单词)
- -c:表示有几个字符
对于test文件
[root@CentOS7-1 ~]# cat test
hello : orange : bird : cat : 21
apple : cow : cup : desk : 12
deep : dog : app : country : 11
computer : phone : bag : paper : 8
使用命令:wc -l -w -c test
[root@CentOS7-1 ~]# wc -l -w -c test
4 36 130 test
主机相关信息
临时修改主机名:hostname 新主机名
长久修改主机名:vi /etc/hostname
修改主机域名:vi /etc/host
查看当前用户名:hostname
查看主机内核信息
语法:uname [options]
options
- -a:查看全部信息,包括隐藏文件
注意:修改完主机名后应重启方可生效,但这个修改是临时的,重启电脑后就失效了
主机间的相互免密钥
前言:可以通过ssh命令免密钥链接到其他主机
具体方法
- 主机1生成一对公钥、私钥
- 主机1将公钥发送给主机2
- 主机2将公钥放入/root/.ssh/authorized_keys目录中
- 主机1就可以免密登录主机2了
生成密钥对
语法:ssh-keygen -t rsa -P '密码内容' -f ~/.ssh/id_rsa
- -t:使用的加密算法
- -P:使用生成该密钥对的密码
- -f:将生成的密钥对存放的路径
注意:这里面的‘’表示默认密码生成密钥对,id_rsa决定了密钥对的命名(私钥:id_rsa,公钥:id_rsa.pub)
发送公钥
语法:ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@IP地址
- -i:要发送的公钥
免密钥流程
主机1生成了密钥对后将公钥发给主机2,此时当主机1向主机2发起请求时,主机2会先检查/root/.ssh/authorized_keys有没有公钥,若有主机1公钥,那么会随机生成一个uuid通过公钥对uuid进行加密发给主机1,主机1收到加密的uuid,会用自己的私钥解密发给主机2,主机2对比,若相同则主机1可以免密登录主机2
linux网络相关
配置网络
修改网卡:vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
//设置IP地址为静态IP
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
//是否开启网络配置
ONBOOT=yes
IPADDR=192.168.188.100
NETMASK=255.255.255.0
GATEWAY=192.168.188.2
DNS1=114.114.114.114
重启网卡:systemctl restart network.service
基础命令
查看ip地址:ip addr
查看网络配置:ifconfig
查看IP地址是否可连通:ping 域名或IP地址
查看与目标IP指定的端口是否可连通:telent 目标IP地址 目标端口
获取对应网站信息:curl -X GET http://www.baidu.com
注意:使用前安装yum install telnet -y
查看端口状态
命令:netstat [options]
options
- -n:不必进行dns轮询,显示ip,以数字的形式显示地址和端口号(numeric)
- -a:显示所有连接和侦听端口(all)
- -o:显示拥有每个连接关联的进程的id(own)
- -p:显示进程标识符和程序名称(每个套接字/端口都属于一个程序)
- -r:显示核心路由表
常用命令
查看所有3306端口的使用情况:
- netstat -ano | grep 3306
- netstat -ano | findstr “3306”
防火墙
前言:防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术
防火墙基础命令
手动开启防火墙:systemctl start firewalld.service
手动关闭防火墙:systemctl stop firewalld.service
关闭开机自启防火墙:systemctl disable firewalld.service
设置开机自启防火墙:systemctl enable firewalld.service
检查防火墙状态:systemctl status firewalld
防火墙使用命令
命令:firewall-cmd [options]
options
- --state:查询防火墙的运行状态
- --reload:重启防火墙
- --list-all:查询防火墙的全部信息
- --list-ports:查看防火墙开启的所有端口
- --zone=public:作用域为public
- --permanent:永久有效,没有此参数重启后会失效
- --add-port=80/tcp:添加80端口
- --query-port=80/tcp:查询80端口是否开放
- --remove-port=80/tcp:移除80端口
- --get-zone:列出支持的zone
- --get-services:列出支持的服务
- --query--service:查询服务是否支持
- --add-service=ftp:开放ftp服务
- --remove-service=ftp:移除ftp服务
常用命令
重启防火墙:firewall-cmd --reload
查看防火墙运行状态:firewall-cmd --state
查看防火墙全部信息:firewall-cmd --list-all
检查防火墙开放的全部端口:firewall-cmd --list-ports(不是永久的)
检查80端口是否开放:firewall-cmd --query-port 80/tcp(不是永久的)
手动开放80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
手动关闭80端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
列出支持的zone:firewall-cmd --get-zone
列出支持的服务:firewall-cmd --get-services
查询ftp服务是否支持:firewall-cmd --query--service ftp
永久开放ftp服务:firewall-cmd -add-service=ftp --permanent
永久移除ftp服务:firewall-cmd --remove-service=ftp --permanent
注意:带有--permanent参数的命令只能操作带有--permanent参数的端口