什么是Linux
是一套免费的 和 自由传播的 操作系统
windows macos linux andorid ios 鸿蒙
测试环境:jdk(java开发工具箱、用来支持运行Java的程序)+ mysql(数据库) +tomcat(web应用服务器,公司的项目软件会直接部署安装在tomcat里面), 外界可以通过互联网访问tomcat中的项目软件
查日志: 查看软件运行时的报错信息、以及运行信息、提示信息,这些个信息都会保存在一个.log 或.out 文件中
开源:一个软件系统、它的所有的代码可以给任何人、任何组织使用并且开发 发行 传播
只有开源才有未来
多进程: 多个任务同时运行
多用户: 多个用户同时访问 操作
肯汤普森: 世界最杰出的程序员
丹尼斯里奇:
C语言之父、
2006:加入到谷歌, go语言: golong C+python
unix操作系统是Linux系统的前身
UTF-8 编码的作者
服务器:不仅可以安装linux 还可以安装 windows MacOS
Linux主要的发行版本:
国外: Red Hat、 CentOS 、 ubuntu (乌班图):桌面形式的Linux操作系统
国内: 优麒麟UbuntuKylin(桌面形式操作系统,根据乌班图编译而且)
红旗Linux(自研的命令行模式操作系统)
Xshell原理: 在windows本地使用Xshell、通过互联网,连接云端远程的服务器(腾讯云服务器)
在远程服务器进行的操作,不会影响到本地环境
显示这种情况,说明与服务器断开连接了
显示这种 说明连接成功
=============================================================
目录、文件操作命令
目录:文件夹或文件列表
根目录: 系统最底层的目录,任何一个目录都是从最底层写起, 根目录也叫作一级目录
windows下的根目录: C:\ D:\ E:\
Linux下的根目录: /
路径: 一个完整目录位置名称
比如:C:\windows\boot
【root@VM-0-7-centos /】#
root: 表示当前用户 超级管理员
@VM-0-7-centos:表示主机的名称
/ : 表示你当前在哪, 表示当前的位置
#:表示权限, #代表的是管理员权限
$:表示普通用户
基本命令:
1、cd: 切换路径 、切换目录
语法: cd 空格 路径
cd /
返回上一级:
cd 空格 ..
2、 ls : 查看目录
语法: ls
参数: -l
用法: ls 空格 -l
ls -l 以列表的形式展示出目录的详细信息
ll 效果与ls -l 一致, 一般这种用法比较多
3、pwd : 显示当前所在位置, 当前你在哪
语法: pwd
4、clear : 清屏,清空当前屏幕区域
5、history: 查看历史记录,所有敲过的命令
语法: history
6、who : 查看当前系统下所有登录的用户
7、whoami: 显示登录的用户名
8、hostname: 显示主机名称
9、ifconfig : 查看IP地址
语法: ifconfig
windows下 查看IP地址:
win+R 输入cmd 在命令提示符窗口中,输入ipconfig
10、 ping : 查看网络连接状态
语法: ping 空格 网址
停下来: ctrl +z 或 ctrl + c都可以
11、shutdown 关机
12、 reboot 重启
========================================================================
========================================================================
进入根目录下的usr目录下的local文件夹, 并且查看都有哪些内容
第一种: 一级一级的去进入
cd / cd usr cd local
第二种: 一步到位
cd /usr/local
========================================================================
文件操作相关的命令
1、创建文件: touch
语法:touch 空格 文件名
在/usr/local下, 创建helloworld文件
touch命令创建的文件,都是一个普通文件
同时创建多个文件:
语法: touch 空格 文件名1 空格 文件名2 空格 文件名3
在当前目录下,创建a1 a2 a3 三个文件
————————————————————————————————————————————————————————-
2、创建文件夹或目录: mkdir
语法:mkdir 空格 文件夹名称
在当前目录下,创建test71文件夹
创建多个文件夹:
语法: mkdir 空格 文件夹1 空格 文件夹2 。。。
在当前目录下,创建taofei01 taofei 02 taofei 03 三个文件夹
创建多级目录、多级文件夹:
语法: mkdir 空格 -p 空格 文件夹名称1/文件夹名称2/文件夹名称3
在当前目录下,创建fanmao01/fanmao02/fanmao03 这样的目录
————————————————————————————————————————————————————-
3、删除文件或文件夹: rm
参数:
-r:强制删除
-f :陆续删除目录下的所有内容
-v:显示删除的过程
-i : 删除前的提示
用法: rm 空格 -rf 既可以删文件,也可以删目录,彻底删除
语法: rm 空格 -rf 空格 文件名称
删除多个文件: rm 空格 -rf 空格 文件名称1 空格 文件名称2 。。。
清空当前目录下的所有内容:
语法: rm 空格 -rf 空格 *
思考: rm -rf / 可不可以执行?? ** 慎重!!**
rm -rf /usr/local/*
————————————————————————————————————————————
4、编辑文件: vi 或 vim vim 与 vi 用法一样
语法: vi 空格 文件名
在当前目录下创建一个aaa文件, 并且进行编辑保存
输入内容:按一下i 键, 可以输入内容
保存退出:先按esc键,在输入冒号, 在输入wq, 敲回车
不保存退出: 输入 :q
强制退出: 输入 :q!
强制退出 ctrl +z ctrl +c
强退不会保存
————————————————————————————————————————————
5、复制文件 cp
语法: cp 空格 文件名称(要复制啥) 空格 目标位置(要复制到哪儿去)
将当前目录下的aaa文件,复制到test文件夹里面去
复制多个文件:
cp 空格 文件名1 空格 文件名2 空格 文件名3 空格 目标位置
在当前目录下,创建bbb ccc文件, 并且将这两个文件复制到 test文件夹里
复制整个目录包含所有内容:
cp 空格 -r 空格 文件夹名称 空格 目标位置
总结: 复制单个文件 cp 复制整个目录 cp -r
———————————————————————————————————————————————————————————
6、文件移动或剪切: mv
语法: mv 空格 文件名 空格 目标位置
剪切多个文件:
mv 空格 文件名1 空格 文件名2 空格 文件名3 空格 目标位置
重命名:(只能当前目录下)
语法: mv 空格 文件/文件夹名称 空格 新名字
—————————————————————————————————————————————————————————
练习题:
进入到 /usr/local 目录下,清空当前目录
cd /usr/local
rm -rf *
创建 a1 a2 a3 3个文件夹
mkdir a1 a2 a3
创建名为Test71的3级目录,二级目录名为Test71-02,三级目录名为Test71-03
mkdir -p Test71/Test71-02/Test71-03
创建 fanmao1 fanmao2 fanmao3 文件
touch fanmao1 fanmao2 fanmao3
将a1 重命名为 fanmao
mv a1 fanmao
将fanmao1 fanmao2 fanmao3 文件剪切到 fanmao目录
mv fanmao1 fanmao2 fanmao3 fanmao
删除 a2
rm -rf a2
将fanmao 目录下所有的文件 复制到 a3 目录
cp -r fanmao a3
———————————————————————————————————————————————————————-
查看文件相关命令:
7、cat 查看文件全部内容
8、head 查看文件的头几行 前几行
语法: head 空格 -n 空格 行数 空格 文件名
例:查看文件的前5行
9、sed 查看文件中间几行到几行
语法:sed 空格 -n 空格 ‘行数,行数p’ 空格 文件名
例: 查看文件中的3行到8行
sed -n ‘3,8p’ haha
10、tail 查看文件末尾几行
语法: tail 空格 -n 空格 行数 空格 文件名
查看文件末尾5行
tail -n 5 haha
*
动态查看文件末尾几行, 参数:-f
语法: tail 空格 -fn 空格 行数 空格 文件名
动态查询文件末尾100行
tail -fn 100 文件名
tail -fn 一般用来查询日志文件, 加了fn 相当于对这个日志文件进行监控
取消监控 ctrl +z
**
11、 wc 查看文件总共多少行,统计行数
语法: wc 空格 文件名
参数:
-l : 统计行数或个数
-c : 统计字数
12、more 查看文件(一般查看大文件)
语法: more 空格 文件名
翻页查看:
按【Enter】,往下翻一行
按【Space】,往下翻一页
按【q】,中断退出
13、less 查看文件
语法: less 空格 -N 空格 文件名
参数:-N 显示每行的行号
less -N 文件名
操作方法:
按【Enter】,往下翻一行
按【Space】,往下翻一页
按【page down】:往下翻一页
按【page up】:往上翻一页
按【q】:退出查看
关键字搜索: 使用less命令打开文件后:
输入/关键字: 向下搜索关键字
输入?关键字: 向上搜索关键字
总结查看文件的命令: cat head sed tail more less
================================================================================================================================================
绝对路径与相对路径
绝对路径:
从根目录写起,有层级关系、一直写到具体的目标文件,一个完整的路径
/usr/local/taofei/test.txt
相对路径:
不从根目录写起,指的是你当前位置的路径
比如你当前在local下, local里面包含test1 test2文件夹
因为test1 test2属于local的下一级目录,所以可以直接用相对路径直接进入
cd test1 或 cd test2 不用从/写起
只要一个路径,从/目录写起的,都叫做绝对路径 不是从/目录写起,就叫相对路径
同一级目录下,进入任意一个文件夹,可以直接cd进入,不用从/目录写起
只要跨目录操作(复制或剪切),都要写绝对路径
cp /var/log/messages /usr/local
练习:
1、在/usr/local下,清空所有文件,并且创建fanmao1/01/02三级目录;
2、进入到 fanmao1/01/02 目录下,创建fanmao2文件夹
3、使用相对路径切换到 fanmao2 文件夹下
4、使用绝对路径切换到 /usr/local/fanmao1 目录
5、使用绝对路径切换到 /usr/local目录
6、使用相对路径切换到fanmao1 目录
—————————————————————————————————————————————————————————
—————————————————————————————————————————————————————————
管道符 ‘|’
也叫连接符,是将两个或多个命令连接在一起执行
例:在创建test1文件的同时,又创建test2文件夹
touch test1 | mkdir test2
查看test1文件,并统计有多少行
查看/目录下有多少个文件
ls | wc -l
|
左边命令的结果 是右边命令的输入
cat test | wc -l
先展示查看结果, 在统计行数
—————————————————————————————————————————————————
使用管道符,查看test文件中的3行-5行
head -n 5 test | tail -n 3
首先执行head -n 5, 先查看文件前5行,
在执行tail -n 3, 再查看后3行,
先获取前5行, 在获取前5的行的结果上,再获取后3行
先拿到前5, 在5行里面,再取后3
也可以直接写(省略n):head -5 test | tail -3
——————————————————————————————————————————————————-
查看3-6行
head -6 test | tail -4
先看前6, 在前6里面,再看后4
——————————————————————————————————————————————————-
重定向 : >
将命令执行的结果,保存到一个指定的新文件中,新文件名自定义,新文件是系统自动创建的
如果重定向到同一个文件的话,最后一次的结果,会覆盖上一次执行的结果
追加:>>
将执行命令的结果,追加到一个已有的文件中,并不会覆盖原有的结果, 继续在原有的结果后面继续添加新的内容
练习
清空/usr/local目录
1、在/usr/local目录下,创建一个名为myself.txt的文件
2、在myself.txt文件中录入10行数据,数据内容任意
3、查找前1-5行数据、 查找5-10行数据
4、将查找出的1-5行数据,重定向为一个新的文件名为myself01.txt
5、将查找出的5-10行数据,重定向为一个新的文件名为myself02.txt
6、查找出3-6行数据,追加到myself01.txt中
7、查找出7-9行数据,追加到myself02.txt中
————————————————————————————————————————————————————————————-
vi命令进阶
进入编辑模式: i, a , o 左下角出现insert ,表示进入编辑模式
vi命令所支持的功能
显示跟取消行号
显示行号: 输入冒号set 空格 nu (:set nu)
取消显示行号: 输入冒号set 空格 nonu (:set nonu)
显示的行号不会也不能保存
——————————————————————————————————————————————-
移动光标
n
操作方式: 先按数字5键,在按空格键 不需要输入冒号
nG: n表示具体的数据,比如 5G 效果:移动到第5行
GG: 移动到文件最后一行第一位
gg: 移动到文件第一行第一位
——————————————————————————————————————————————-
查找与替换
需要用户确认
首先用vi命令进入到要编辑的文件内,输入冒号
:n1,n2s/关键字1/关键字2/c
n1,n2为具体的数字,表示在n1到n2行, 3,5s
关键字1,表示要查找的关键字
关键字2,表示要替换的关键字
c,表示需要用户一个一个的确认
g, 表示不需要确认
:3,5s/aaa/bbb/c 把3-5行的所有的aaa替换成bbb,并且需要逐一确认
不需要用户确认
:n1,n2s/关键字1/关键字2/g
:1,9s/a/b/g 把1-9行的所有的a替换成b,并且不需要确认
全文替换:
:1,$s/a/b/g 把整个文件中的a 替换成b ,并且不需要确认
文件另存为:
vi进入到文件内
用法:
:w 空格 路径斜杠文件名字
:w /usr/local/new.txt
路径要写绝对路径
提取文中某几行,并保存在一个新文件中
:n1,n2w 空格 路径斜杠新文件名字
:1,10w /usr/local/new2.txt
将1到10行的内容提取出来,保存在/usr/local下的new2.txt文件中
================================================================================================================================================
tar:文件打包与压缩
常用参数:
c : 创建新的文件集合包, 相当于打包
x:释放新的文件,相当于解包
v: 打包或解包过程中,显示打包或解包的文件, 就是显示过程
f: 创建新打包文件后 使用自己起的名字 自己命名的
z:在打包或解包的同时,启动gzip工具进行压缩或解压
gzip工具是linux自带的压缩工具
用法一:打包或者解包
语法: tar 空格 参数 空格 文件名(自己命名的).tar 空格 源文件(你要打包的文件)
比如:我现在有test01 test02 test03 3个文件, 我要将这3个文件打包起来,并且命名为dabao.tar
tar -cvf dabao.tar test01 test02 test03
将整个目录内的所有内容打包?
tar -cvf daobao.tar *
解包:
语法: tar 空格 参数 文件名.tar
将dabao.tar这个文件释放出来
tar -xvf dabao.tar
在当前目录下解包
指定路径释放文件 或 解压: 参数 : -C
tar 空格 -xvf 空格 dabao.tar 空格 -C 空格 /usr
用法二:打包并且压缩和解压缩
打包并且压缩:
语法:tar 空格 -zcvf 空格 yasuo.tar.gz 空格 源文件
将test 01 test02 test03 打包并且压缩, 压缩包名为yasuo.tar.gz
解压缩:
语法: tar 空格 -zxvf 空格 文件名.tar.gz
将yasuo.tar.gz解压缩到当前目录下
tar -zxvf yasuo.tar.gz
将yasuo.tar.gz解压缩到指定目录下
tar -zxvf yasuo.tar.gz -C /usr
————————————————————————————————————————————————————————
文件上传与下载
文件下载: sz
语法: sz 空格 文件名
将/usr/local下的alltest.tar.gz文件下载到windows桌面上
指定路径下载:
sz /usr/local/test01
文件上传:rz
将windows桌面上alltest.tar.gz 上传到/usr/local下
首先要进入到/usr/local里面
然后在输入rz
在弹出的对话框中选择alltest.tar.gz文件,点击打开上传
或者在windows桌面上选中alltest.tar.gz文件, 直接拖拽到/usr/local中
—————————————————————————————————————————————————
find 查找文件
语法: find 空格 指定搜索路径 空格 -name 空格 文件名
搜索/usr/local下的alltest.tar.gz文件
若不知道文件具体在什么位置,可以直接从/目录开始搜索
在local下查找以test开头的文件
find /usr/local/ -name ‘test‘
在local下查找以test结尾的文件
find /usr/local/ -name ‘test’
在local下查找包含test的文件
find /usr/local/ -name ‘test‘
grep:条件过滤 **
用处最多的地方: 查询进程, 查询端口号,查看文件内的关键字
用法: 一般结合 ‘|’ 管道符使用
查看/etc/man_db.conf 文件中的包含‘80’的内容显示出来
ps:查询进程 **
启动一个应用程序后,都会以进程的方式来显示
查看服务器的所有运行的进程:ps
常用的参数:
-e: 显示全部进程
-f: 显示全部信息,全部格式
最常用用法: ps 空格 -ef
UID: 用户id
PID:进程号
PPID : 父进程号
C : cpu的使用率
STIME: 启动时间
TTY: 终端的位置
TIME: 使用cpu的时间
CMD:所下达的是什么指令
在实际工作中,最常见的用法: ps -ef | grep 应用名称(比如:nginx)
安装nginx:
nginx: 反向HTTP代理web服务器
yum 在线安装软件的命令
用法:yum 空格 install 空格 应用名称
安装nginx服务:
命令:yum install nginx
启动nginx服务:
命令:systemctl start nginx
验证服务是否正确:打开浏览器, 输入自己的服务器ip地址(公网),比如我的服务器ip地址为 1.117.45.85, 那么在浏览器的地址栏中输入 http://1.117.45.85
查看 nginx 进程信息:
ps -ef | grep nginx
杀进程:kill
windows下结束进程: 打开任务管理器,选中进程,右键,点击结束任务
一般要结合 -9 这个参数来使用
-9是强制结束
用法: kill 空格 -9 空格 pid
用法二: killall 结束相关应用的全部进程
killall 空格 nginx
结束Nginx的全部进程
—————————————————————————————————————————————————————
—————————————————————————————————————————————————————
netstat : 查询端口号
端口号: 一个应用程序在一个屋子里, 端口相当于门, 通过这个门去查看访问应用
常用的默认端口号:
nginx默认端口号:80
tomcat默认端口号:8080
mysql默认端口号:3306
linux默认端口号:22
抓包工具默认端口号:8888
用法:
netstat 空格 参数 空格 | grep 空格 要查询端口号
参数:-an -ap -anp
-a : 显示所有
-n,不用别名显示,只显示数字
-p: 显示进程号和进程名
netstat 空格 -anp 空格 | 空格 grep 空格 3306
不知道端口号去查端口:
用法: netstat 空格 参数 空格 | grep 空格 应用名称
如何查询3306端口号?
———————————————————————————————————————————————————-
———————————————————————————————————————————————————-
top 实时查看任务状态
主要用在做性能测试测试的时候,需要用top命令,监控cpu和内存的使用率
面试题:怎么监控系统任务状态? 或监控cpu的使用率? 或监控内存的使用率?
就是使用top命令
结束监控: ctrl + z
%MEM (内存)
———————————————————————————————————————-
查看磁盘: df
常用用法: df 空格 -h 查看磁盘大小
Filesystem :文件系统
Size: 大小
—————————————————————————————————————————————-
远程登录: ssh
语法: ssh 空格 用户名@ip地址
例: ssh 空格 root@服务器ip地址
远程复制 :scp
语法: scp 空格 文件名 空格 用户名@IP地址:路径(目标位置)
将当前目录下的abc.tar.gz文件,复制到121.4.18.70(目标服务器)地址里的/usr/local下
远程复制整个目录:
scp -r
================================================================================================================================================
用户相关的命令
创建与删除用户:
创建用户: useradd
语法: useradd 空格 用户名
给创建的用户设置一个密码: passwd
语法: passwd 空格 用户名
在任意地方都可以创建用户,只能是root用户才可以创建
root用户不能创建root用户, 只能创建普通用户
查看创建的用户: cat /etc/passwd
切换用户: su
语法: su 空格 用户名
删除用户: userdel
语法: userdel 空格 参数 空格 用户名
参数: -r 连同用户的主目录一同删掉, 彻底删除用户
退出当前登录的用户: exit
——————————————————————————————————————————————-
创建与删除用户组:
创建用户组: groupadd
语法: groupadd 空格 组名
创建用户组,不需要创建密码
查看创建的用户组: cat /etc/group
核心用法:将用户添加到创建的用户组里去
将用户添加到组: gpasswd 空格 -a 空格 用户名 空格 组名
把zhangsan添加到test71组里去
将用户从组里删除: gpasswd 空格 -d 空格 用户 组名
把lisi从组里删除
删除用户组: groupdel
语法:groupdel 空格 组名
—————————————————————————————————————————————————————————-
—————————————————————————————————————————————————————————-
修改权限: chmod
d rwx rwx rwx
第一位:代表文件类型
d:代表一个文件夹 或者目录
-:代表一个普通文件
l: 代表一个链接文件 :把当前这个文件指向另一个文件
后面9位: 我们用3组来划分: 第一组和第二组和第三组,每一组有3个字母
在Linux里,关于权限角色的划分:
第一类:用户 (u)
第二类:用户组(g)
第三类:其他人(o)
对应关系: 用户(u)对应第一组前3个字母, 用户组(g)对应第二组中间3个字母,其他人(o)对应最后一组最后3个字母
在Linux里,关于权限种类:
第一个:r 读取
第二个:w 写入
第三个:x 执行
在Linux里,关于权限二进制:
1、读取: r = 4
2、写入:w =2
3、执行:x = 1
考虑: chmod 7 7 7 什么意思?
7就是 可读可写可执行
用户 用户组 其他人 都是可读可写可执行权限
chmod 635 什么意思
以数字表示权限的方法:
语法: chmod 空格 数字 空格 文件名
练习: chmod 766 635 000 权限具体含义是?
——————————————————————————————————————————————————-
以‘=’号来赋予权限,ugo可以写在一起,分开写的话用逗号隔开
u = rwx , g = wx , o = w
ugo = rx
语法: chmod 空格 具体的赋值语句 空格 文件名
考虑:用赋值法怎么清空全部权限?
——————————————————————————————————————————————————————
用“+” 或 “-” 来增加或减少权限
u+rw,g+rx,o+w
u-r,g-x,o-w
语法: chmod 空格 具体增加或减少权限 空格 文件名
=======================================================================
=======================================================================