赞
踩
2021年「博客之星」参赛博主:Maynor大数据 (感谢礼品、红包免费送!)
https://bbs.csdn.net/topics/603955366
大家好,我是ChinaManor,直译过来就是中国码农的意思,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。
Linux是大数据中的基础,无论是运维或开发,都免不了要学,而且学的越扎实越好,下面为大家带来Linux学习笔记
操作系统作为接口的示意图:
没有安装操作系统的计算机, 通常被称为 裸机
因为创始人 经常需要浏览新闻和处理邮件, 为了方便 读写 和 下载, 所以开发了 文件系统, 当时 21岁.
linux是开源免费
后来经过全世界网友的支持, 现在能够兼容多种硬件
唐纳德·特朗普
弗拉基米尔·弗拉基米罗维奇·普京
巴勃罗·迭戈·荷瑟·山迪亚哥·弗朗西斯科·德·保拉·居安·尼波莫切诺·克瑞斯皮尼亚诺·德·罗斯·瑞米迪欧斯·西波瑞亚诺·德·拉·山迪西玛·特立尼达·玛利亚·帕里西奥·克里托·瑞兹·布拉斯科·毕加索
centOS
操作系统( linux
发行版)详情请参考 资料(环境) 中《01_开启电脑虚拟化》,《02_安装虚拟机软件》word文档!
桥接原理
因为 虚拟机的linux系统的ip地址是固定的, 更换路由器后导致无法使用, 所以 不推荐使用
NAT原理
如果宿主电脑可以上网, 内部的虚拟机也可以上网就好了
NAT原理本质上就是 虚拟机实现了交换机的功能, linux系统的IP地址就不会随宿主电脑的ip地址更改而更改
推荐使用这种方式
VMnet8
已经启动网关: 192.168.100.1
centos
系统 模拟 机房的一台服务器网卡是一个专门负责网络通讯的硬件设备
ip地址是设置在网卡上的地址信息
我们可以把 电脑 比作 手机, 网卡 相当于 手机卡槽, ip地址 相当于 手机号
IP地址
每台联网的电脑上都有IP地址, 是保证电脑之间正常通讯的重要设置
注意: 每台电脑的IP地址不能相同, 否则 会出现IP地址冲突, 并且没有办法正常通讯
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ifconfig | configuration a newwork interface | 查看/配置计算机当前的网卡信息 |
02 | ping ip地址 | ping | 检测到目标ip地址 的连接是否正常 |
03 | service network restart | 重启网卡服务 |
setup
命令设置网卡新# 开始设置网卡信息
setup
重启网卡服务
测试能否上网, 注意: 前提是 宿主机必须能够上网
C盘
、D盘
、E盘
/bin: 二进制命令所在的目录
/boot : 系统引导程序所需要的文件目录,引导系统开机
/dev :设备软件目录,磁盘,光驱,
/lib: 启动系统和运行命令所需的共享库文件和内核模块存放
/mnt:临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用
/opt:额外的应用软件包
/proc:操作系统运行时,进程信息和内核信息存放在这里
/tmp:临时文件目录,这个目录被当作回收站使用
/usr:用户或系统软件应用程序目录
/var:存放系统日志的目录
注意:一般不要 操作 非自己创建的目录和文件,否则可能导致服务器崩溃。
Windows上
登录 服务器主机的软件tab键:命令或者路径提示及补全;
ctrl+c:放弃当前输入,终止当前任务或程序;
ctrl+l:清屏;
ctrl+shift+c:复制;
ctrl+shift+v:粘贴;
alt+b :打开connect窗口;
alt+1/2/3/4/5… :切换会话窗口
a. 右键目标centos系统 -> 快照 -> 快照管理器
b. 拍摄快照
a. 右键目标centos系统 -> 快照 -> 恢复到指定快照即可
Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如 磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等
在职场中,大量的 服务器维护工作 都是在 远程 通过SSH客户端 来完成的, 并没有图形界面, 所有的维护工作都需要通过命令来完成!
在职场中, 作为后端程序员, 必须要或多或少的掌握一些Linux常用的终端命令
Linux发行版本的命令大概有200多个, 但是常用的命令只有10多个而已
学习终端命令的技巧:
- 不需要死记硬背, 对于常用命令, 用的多了, 自然就记住了。
- 不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到, 临时百度就可以
参见《资料(环境)》 内的05_windows命令。
了解终端命令格式
掌握常用命令
了解知道如何查阅终端命令帮助信息
command [-options] [parameter]
说明:
command
: 命令名, 相应功能的英文单词或单词的缩写[-options]
: 选项, 可用来对命令进行控制, 也可以省略parameter
: 传给命令的参数, 可以是 零个、一个 或者 多个序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前目录下的内容 |
02 | pwd | print working derectory | 查看当前所在文件夹 |
03 | cd [目录名] | change directory | 切换文件夹 |
04 | touch [文件名] | touch | 如果文件不存在, 新建文件 |
05 | mkdir [目录名] | make directory | 创建目录 |
06 | rm [文件名] | remove | 删除指定的文件名 |
07 | clear | clear | 清屏 |
格式:mkdir 目录名
mkdir -p 目录名1/目录名2/目录名3(嵌套)
注意: 新建目录的名称 不能与当前目录中 已有的目录或文件 同名
示例: mkdir /opt/dir1
mkdir -p /opt/dir1/dir2/dir3/dir4
格式:rm 文件夹 (有提示)
rm -f 文件夹 (取消提示)
rm -rf 文件夹 (递归删除)
rm -rf 结合通配符 * ? [abc][a-z]
rm -rf dir3*
示例:rm -rf /opt/dir1/dir2/dir3/dir4
参数 | 英文 | 含义 |
---|---|---|
-r | recursive (递归) | 递归地删除目录下的内容, 删除文件夹 时必须加此参数 |
-f | force (强制) | 强制删除,忽略不存在的文件, 无需提示 |
格式:mv 旧文件夹名 新文件夹名
改变位置:mv 就路径 新路径(已经存在)
示例: mv /opt/dir1 /opt/dir111
mv /opt/dir111 /opt/dir1/dir2/dir3
格式:ls 文件夹名 (包含权限、日期等信息)
ll 文件夹名 (不包含权限、日期等信息)
列出某一目录内的内容(内容包括子文件夹和文件)
ls 或 ll 列举出当前文件夹内的文件夹和文件
示例: ls /opt
ll /opt
格式:cd 目标路径
cd …/ (进入上级目录)
示例 : cd /opt
cd …/…/
格式:ln -s 目标文件绝对路径 快捷方式路径
示例:ln -s /opt/dir1/dir2/dir3 /dir3
格式:pwd
格式:cp -a 原文件夹 目标文件夹
1、在/tmp目录下创建一个自己姓名的文件夹
2、进入该文件夹,一次性创建文件夹/tmpdir1/tmpdir2/tmpdir3/tmpdir4/tmpdir5
3、将文件夹tmpdir4及其子文件夹移动到与tmpdir1相同的目录
4、创建tmpdir3的软连接到与tmpdir1相同的目录
5、将tmpdir5 名称改为tmpdir555
6、在目录tmpdir1下创建文件夹tmp1、tmp2、tmp3、tmp4
7、查看tmpdir1目录下有哪些文件夹(包含详细信息)
8、删除文件夹tmp1、tmp2、tmp3、tmp4
9、一次性删除文件夹/tmp/姓名
创建空文件 - 格式:touch 文件名(文件存在、不存均可)
创建有数据的文件 - 格式:echo ‘abc’ > 文件名(文件名不能存在)
示例: touch test1.txt test2.txt test3.txt
echo ‘abc’ > test4.txt
格式:rm 文件夹 (有提示)
rm -f 文件 (取消提示)
rm -rf 文件 (递归删除)
rm -rf 结合通配符 * ? [abc][a-z]
rm -rf *.txt
示例:rm -rf test1.txt test2.txt
参数 | 英文 | 含义 |
---|---|---|
-r | recursive (递归) | 递归地删除目录下的内容, 删除文件夹 时必须加此参数 |
-f | force (强制) | 强制删除,忽略不存在的文件, 无需提示 |
格式:mv 旧文件名 新文件名
示例: mv test3.txt test333.txt
格式:ls 文件夹名 文件名 (包含权限、日期等信息)
ll 文件夹名 文件名 (不包含权限、日期等信息)
列出某一目录内的内容(内容包括子文件夹和文件)
ls 或 ll 列举出当前文件夹内的文件夹和文件
示例: ls /opt
ll /opt
格式 : head 文件名 或 head -10 文件名
示例 : head test1.txt 或 head -10 test1.txt
格式: tail 文件名 或 tail -10 文件名 或 tail -f 文件名
示例 : tail test1.txt 或tail -10 test1.txt
格式:more 文件名
示例 :more test1.txt
格式:cat 文件名
格式:grep 关键字 文件名
示例: grep is profile
格式:echo ‘abcde’ >> 文件名
示例:echo ‘abcde’ >> test4.txt
复制文件夹
格式:cp 原文件 目标文件
1、创建文件夹/opt/tmp/
2、在/opt/tmp/文件夹内,一次性创建空文件 test1.txt、 test2.txt、 test3.txt、 test4.txt
3、在/opt/tmp/文件夹内,一次性创建文件 test5.txt ,文件内含有数字123456789
4、将文件 test5.txt 改为 test555.txt
5、向test555.txt 文件追加20行数据,第一行1、第二行2、第三行3、… …(或每行内容自己定)
6、查看test555.txt 文件前8行数据
7、查看test555.txt 文件后15行数据
8、删除文件test555.txt
9、删除文件 test1.txt、 test2.txt、 test3.txt、 test4.txt
选项 | 英文 | 含义 |
---|---|---|
-a | all | 显示指定目录下所有子目录与文件, 包含隐藏文件 (以 . 开头的文件为隐藏文件, 需要用 -a 参数才能显示) |
-l | 以列表方式显示文件的详细信息 | |
-h | human-readable | 配合 -l 以人性化的方式显示文件大小 |
通配符 | 含义 |
---|---|
* | 代表 任意个数 的字符 |
? | 代表任意一个字符, 且只能是一个 |
[abc] | 匹配a、b、c中任意一个 |
[a-f] | 匹配从a到f范围内的任意一个字符 |
命令 | 含义 |
---|---|
cd - | 可以在最近的两次目录之间切换 |
命令 | 含义 |
---|---|
-n | 显示行号 |
-b | 非空行 显示行号 |
grep 选项 关键字 文件名
命令 | 含义 |
---|---|
-n | 显示匹配行和行号 |
-i | 忽略大小写 |
-v | 显示 不包含关键字 的所有行 |
^a | 行首,搜索以a开头的行 |
ke$ | 行尾,搜索以ke结束的行 |
因为一个命令有很多可选项, 死记硬背肯定不行, 所以需要借助手册查阅.
command --help
说明:
command
命令的帮助信息缺点: 虽然可以查询命令的帮助信息, 但是没有提供 翻页、搜索功能.
tab
键现有目录节后如下
在dir1目录 进入dir2 或dir3
相对路径进入 cd …/dir2 或 cd …/dir3
绝对路径进入 cd /opt/dir2 或 /opt/dir3
在dir1目录 进入dir7 或dir8
相对路径进入 cd …/…/dir7 或 cd …/…/dir8
绝对路径进入 cd /tmp/dir7 或 /tmp/dir8
在mnt目录 进入dir9 或dir10
相对路径进入 cd dir9 或 cd dir10
绝对路径进入 cd /mnt/dir9 或 /mnt/dir10
总结:
相对路径 :输入路径时, 最前面不是以 “/” 开始的, 表示相对 当前目录 所在的位置
不足:参照工作目录 发生变化 相对路径也要发生变化
绝对路径 :在输入路径时, 最前面是以 /
开始的, 表示 从 根目录 开始的具体目录位置
优点: 定位准确, 不会因为 工作目录变化 而变化
命令 | 作用 |
---|---|
命令1 && 命令2 | 如果 命令1 执行成功了, 才执行 命令2 |
如果 创建 目录 成功, 就提示 创建成功
mkdir -p 正确目录 && echo "提示创建目录成功"
命令 | 作用 |
---|---|
命令1 || 命令2 | 如果 命令1 执行失败了, 才执行 命令2 |
如果 创建 目录 失败, 就提示 创建失败
mkdir 错误目录 || echo "提示创建目录失败"
我把四篇笔记整合在一篇,如果不方便阅读,从可以看其余的三篇
Linux学习笔记系列
:
大数据开发工程师基本功修炼之Linux学习笔记(二)
大数据开发工程师基本功修炼之Linux学习笔记(三)
在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远程服务器上, 并且使用 vi编辑器 进行简单的编辑即可
需要修改的文件包括
在没有图形界面的环境下, 要编辑文件, vi是最佳选择
每一个使用linux的程序员,都应该或多或少的学习一些vi的常用命令
visual interface
的简称, 是linux中最经典的文本编辑器viM 是从vi发展出来的文本编辑器, 支持代码补全、编译 及 错误跳转等方便编程的功能提别丰富, 在程序员中被广泛使用, 被称为编辑器之神
vim 文件名
1 vim 没有的文件名
2 编辑内容
2.1 输出一行语句
2.2 复制粘贴 2.1内容 19次
2.3 保存且退出
3 查看
注意: 本节重点是 打开 和 新建文件, 其他命令后面会一一讲解
vim 文件名 +行数
提示: 如果只带上+ 而不指定行号, 会直接定位到文件末尾
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存且退出(莫行模式) |
x | 保存并退出(莫行模式) | |
ZZ | 保存并退出(命令模式) |
要熟练使用vi, 首先应该学会怎么在 命令模式下 快速移动光标
编辑操作命令 能够和移动命令一起使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5rRQWfx-1624685398652)(F:/%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2/%E4%BC%A0%E6%99%BA%E4%B8%93%E4%BF%AE%E5%AD%A6%E9%99%A2/1812/01linux/%E8%AE%B2%E4%B9%89/02_%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9_vim%E7%BC%96%E8%BE%91%E5%99%A8_%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86_%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90/%E7%AC%94%E8%AE%B0/assets/1558278451153.png)]
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
vim中使用 空行 来区分段落
程序开发时, 通常 一段功能相关的代码会写在一起 – 之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
在程序世界中, **()、[]、{}**使用率很高, 而且 都是成对出现的.
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 恢复撤销的命令 |
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以ndd删除多行 |
D | delete | 删除至行尾 |
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令:
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d0 | 从光标位置删除到一行的起始位置 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
命令 | 英文 | 功能 |
---|---|---|
y(复制命令) | copy | 复制 |
yy | copy | 复制一行,可以nyy复制多行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
提示:
注意
Ctrl + C
复制的内容, 不能再 vi
中通过 p
命令粘贴命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下 ESC
可以回到 命令模式常规查找
命令 | 功能 |
---|---|
/str | 查找str |
查找到指定内容之后, 使用 Next
查找下一个出现的位置
n
: 查找下一个N
: 查找上一个如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
vi
中查找和替换命令需要在 末行模式 下执行:%s///g
一次向 替换文件中的 所有出现的旧文本
命令格式如下
:%s/旧文本/新文本/g
:s/旧文本/新文本/g
c confirm 确认
如果把末尾的 g
改成 gc
在替换的时候, 会有提示! 推荐使用
命令格式如下
:%s/旧文本/新文本/gc
y
- yes
替换n
- no
不替换a
- all
替换所有q
-quit
退出替换l
- last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RqHjJGgN-1624685398655)(F:/%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2/%E4%BC%A0%E6%99%BA%E4%B8%93%E4%BF%AE%E5%AD%A6%E9%99%A2/1812/01linux/%E8%AE%B2%E4%B9%89/02_%E6%89%93%E5%8C%85%E5%8E%8B%E7%BC%A9_vim%E7%BC%96%E8%BE%91%E5%99%A8_%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86_%E7%94%A8%E6%88%B7%E6%9D%83%E9%99%90/%E7%AC%94%E8%AE%B0/assets/1558543477231.png)]
**********
连续10个星号要实现这个效果可以在 命令模式 下
10
, 表示要重复10次i
进入 编辑模式*
也就是重复的文字ESC
返回 命令模式, 返回之后 vi
就会把 第 2、3
两步的操作重复 10
次提示: 正常开发时, 在 进入编辑模式之前,不要按数字
cd /export/ && rm -rf /export/* && tree
mkdir -p /export/aaa/bbb/ccc/ddd/eee/
touch /export/aaa/bbb/ccc/ddd/eee/abc.txt
touch /export/aaa/123.txt
touch /export/aaa/312.txt
tree /export
find
命令 在特定目录下(包含它的后代目录) 搜索 符合条件的文件1
的文件.txt
为扩展名的文件1
开头的文件序号 | 命令格式 | 作用 |
---|---|---|
01 | find [路径] -name ‘*.txt’ | 查找指定路径下扩展名是 .txt的文件, 包括子目录 |
# ===================实现目标============================
# 方式一: 指定全目录
find /export/ -name 'abc.txt'
# 方式二: 当前目录
find . -name 'abc.txt'
# 方式三: 当前目录 可以 省略 不写
find -name 'abc.txt'
# =================准备工作===============
# 1 创建测试文件
touch /export/12.txt /export/616.txt /export/321.txt
# =================实现目录===============
find /export/ -name "*1*"
find /export/ -name "*.txt"
find /export -name "1*"
find [path] -name "*1*"
完成根据名称搜索文件# 清空指定目录内容
cd /export/ && rm -rf *
# 创建测试文件
touch 1.txt 2.txt 3.txt
# 创建有内容的测试目录
mkdir -p /export/aaa/
touch /export/aaa/4.txt /export/aaa/5.txt
# 查看结果
tree /export
jar : java rar java项目的压缩包
war : web rar web项目的压缩包
2.1 第一步: 打包 和 解包
**2.2 第二步: 打包压缩 和 解包解压缩 **
类似将 冬天的衣服 放到 袋
打包之后的大文件 需要以 .tar
结尾.
tar
打包命令格式
# 将 一系列文件 打包成 一个大文件
tar -cvf 打包名.tar 被打包的目录
tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3
tar
选项说明
命令 | 英文 | 含义 |
---|---|---|
c | create | 生成档案文件, 创建打包文件 |
v | verbosely(啰嗦的) | 像 ‘唐僧’ 一样报告进度 |
f | file | 指定档案的文件名称, f后面一定是 .tar 文件, 所以必须放到左后 |
练习1: 将1.txt、2.txt、3.txt 打包成 123.tar文件
练习2: 将有内容的aaa目录 打包成 aaa.tar 文件
tar
解包命令格式
# 将一个打包后的 分解成 一系列小文件, 分解位置为 当前目录
tar -xvf 打包名.tar
# 将一个打包后的 分解成 一系列小文件, 分解位置为 指定目录
tar -xvf 打包名.tar -C 解包路径位置
命令 | 英文 | 含义 |
---|---|---|
x | extract (提取) | 解包 |
C (大写C) | directory (目录) | 默认保存到当前目录, 通过-C 更改解压目录, 注意: 解压目录必须存在 |
练习1: 将 123.tar 解压到 当前目录中
练习2: 将 aaa.tar 解包到 /export/test/a1/b1/c1/ 目录中
打包: tar -cvf 打包之后的文件名.tar 被打包的目录或文件名
解包: tar -xvf 打包之后的文件名.tar [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容
cd /export/ && rm -rf *
# 创建测试文件
touch 1.txt 2.txt 3.txt
# 创建有内容的测试目录
mkdir -p /export/aaa/
touch /export/aaa/4.txt /export/aaa/5.txt
# 查看结果
tree /export
打包 和 压缩 是两件事
类似与 先将冬天衣服放到压缩袋, 再抽取里面的空气
在 Linux
中, 最常用的压缩文件格式是 xxx.tar.gz
在 tar
命令中有一个选项 -z 可以调用 gzip
, 从而可以方便的实现压缩和解压缩的功能
命令格式如下
# 压缩文件
tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录
# 解压缩文件(记忆敲门: 至孝潍坊)
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.gz文件(gzip压缩格式)
练习2: 将有内容的aaa目录 打包成 aaa.tar.gz 文件(gzip压缩格式)
练习3: 将 123.tar.gz 解压到 当前目录中(gzip压缩格式)
练习4: 将 aaa.tar.gz 解包到 /export/bbb 目录中(gzip压缩格式)
打包压缩: tar -zcvf 打包之后的文件名.tar.gz 被打包压缩的目录或文件名
解包解压缩: tar -zxvf 打包之后的文件名.tar.gz [ -C 指定解包位置 ]
准备工作
# 清空指定目录内容
cd /export/ && rm -rf *
# 创建测试文件
touch 1.txt 2.txt 3.txt
# 创建有内容的测试目录
mkdir -p /export/aaa/
touch /export/aaa/4.txt /export/aaa/5.txt
# 查看结果
tree /export
bzip
是压缩的第二种方式Linux
中, bzip2 压缩文件格式是 xxx.tar.bz2
tar
命令中有一个选项 -j 可以调用 bzip2
, 从而可以方便的实现压缩和解压缩的功能命令格式如下
# 压缩文件
tar -jcvf 打包压缩文件名.tar.bz2 被压缩的文件/目录
# 解压缩文件 (绩效潍坊)
tar -jxvf 打包文件.tar.bz2
# 解压缩到指定路径
tar -jxvf 打包文件.tar.bz2 -C 目录路径
tar
的选项说明
命令 | 英文 | 含义 |
---|---|---|
z | gzip | 使用gzip压缩和解压缩 |
j | bzip2 | 使用bzip2压缩和解压缩 |
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.bz2文件(bzip2压缩格式)
练习2: 将有内容的aaa目录 打包成 aaa.tar.bz2 文件(bzip2压缩格式)
练习3: 将 123.tar.bz2 解压到 当前目录中(bzip2压缩格式)
练习4: 将 aaa.tar.bz2 解包到 /export/bbb 目录中(bzip2压缩格式)
打包压缩: tar -jcvf 打包之后的文件名.tar.bz2 被打包压缩的目录或文件名
解包解压缩: tar -jxvf 打包之后的文件名.tar.bz2 [ -C 指定解包位置 ]
关机
halt
重启
reboot
用户 是Linux系统工作中重要的一环, 用户管理包括 用户 与 组 管理
在Linux系统中, 不论是由本级或是远程登录系统, 每个系统都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限
对 文件 / 目录 的权限包括:
序号 | 权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | execute | x | 1 |
04 | 无权限 | - | 0 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwckbqR0-1624685398660)(assets%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1570973470529.png)]
ls -l
可以查看文件夹下文件的详细信息, 从左到右 依次是:
d
表示目录本质: 给 同一类型用户 分配权限
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd 组名 | 添加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 确认组信息 |
04 | chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
提示:
- 组信息保存在
/etc/group
文件中/etc
目录是专门用来保存 系统配置信息 的目录
演练目标
aaa
目录dev
组aaa
目录的组修改为 dev
命令 | 作用 | 说明 |
---|---|---|
useradd -m -g 组 新建用户名 | 添加新用户 | -m 自动建立用户家目录 -g 指定用户所在的组, 否则会建立一个和同名的组 |
passwd 用户名 | 设置用户密码 | 如果是普通用户, 直接用 passwd可以修改自己的账号密码 |
userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
cat /etc/passwd | grep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在 /etc/passwd 文件夹中 |
提示:
- 创建用时, 如果忘记添加
-m
选项指定新用户的家目录 – 最简单的方式就是删除用户,重新创建- 创建用户时, 默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
/etc/passwd
文件存放的是用户的信息, 由6个分好组成的7个信息, 分别是
序号 | 命令 | 作用 |
---|---|---|
01 | id [用户名] | 查看用户UID 和 GID 信息 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录用户的账户名 |
su
切换用户序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | su - 用户名 | 切换用户, 并且企划目录 | - 可以切换到用户家目录, 否则保持位置不变 |
02 | exit | 退出当前登录用户 |
su
不接用户名, 可以切换到 root
, 但是不推荐使用, 因为不安全exit
示意图如下:su -u root
可以切换到 root用户, 但是 存在严重的 安全隐患linux系统中的 root
账号通常 用于系统的维护和管理, 对操作系统的所有资源 具有访问权限
如果不小心使用 rm -rf ... ...
, 就可能将系统搞瘫痪
在大多数版本的linux中, 都不推荐 直接只用 root 账号登录系统
sudo
命令用来以其他身份来执行命令, 预设的身份为 root
用户使用 sudo
时, 必须先输入密码, 之后5分钟的有效期限, 超过期限则必须重新输入密码
提示: 若其未经授权的用户企图使用 sudo, 则会发出警告邮件给管理员
vim /etc/sudoers
# 默认存在: root用户 具备所有的权限
root ALL=(ALL) ALL
# 授予 zhangsan 用户 所有的权限
zhangsan ALL=(ALL) ALL
zhangsan
登录, 操作管理员命令# 不切换root用户, 也可以完成 添加用户的功能
sudo useradd -m -g dev zhaoliu
准备工作: 使用root用户操作
# 清空目录中的内容
rm -rf /export/*
# 创建测试目录
mkdir -p /export/aaa/
# 创建测试文件
touch /export/aaa/01.txt /export/aaa/02.txt
# 查看指定目录内容
tree /export
序号 | 命令 | 作用 |
---|---|---|
01 | chmod | 修改权限 |
chmod
可以修改 用户/组 对 文件/目录 的权限
命令格式如下:
chmod +/- rwx 文件名|目录名
提示: 已上方式会一次向修改
拥有者
/组
权限
# 1. 使用 root 删除目录的可读 可写 可执行权限
# 2. 使用 其他用户如 zhangsan 无法切换到 这个目录
# 3. 使用 root 增加目录的执行权限, 再次 使用 zhangsan 切换到目录试试
u
表示所属用户 / g
表示所属组 / o
表示其他)chmod -R u=rwx,g=rx,o=rwx 文件|目录
序号 | 权限 | 英文 | 缩写 | 数字序号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | execute | x | 1 |
04 | 无权限 | - | 0 |
# 1 使用root用户给 所属用户分配 可读、可写、可执行 权限,
所属组 分配 可读、可执行 权限,
其他人 分配 可读、可执行 权限
chmod -R 755 文件|目录
常用数字组合有( u
表示用户 / g
表示组 / o
表示其他)
777
===> u=rwx, g=rwx, o=rwx
755
===> u=rwx, g=rx, o=rx
644
===> u=rw, g=r, o=r
# 1 使用root用户给 所属用户分配 可读、可写、可执行 权限,
所属组 分配 可读、可执行 权限,
其他人 分配 可读、可执行 权限
date
cal
df
du
ps
top
kill
命令 | 作用 |
---|---|
date | 查看系统时间(默认) |
date +"%Y-%m-%d %H:%M:%S" | 查看系统时间(指定格式) |
date -s “时间字符串” | 设置系统时间 |
# 显示时间
date
# 按照指定格式显示时间
date +"%Y-%m-%d %H:%M:%S"
date -s "时间字符串"
序号 | 命令 | 作用 |
---|---|---|
01 | cal | 查看当前月的日历 |
02 | cal -y | 查看当前年的日历 |
03 | cal 2020 | 查看2020年的日历 |
04 | cal 10 2020 | 查看2020年10月的日历 |
序号 | 命令 | 作用 |
---|---|---|
01 | df -h | disk free 显示磁盘剩余空间 |
02 | du -h [目录名] | disk usage 显示目录下的目录大小 |
参数 | 含义 |
---|---|
-h | 以人性化的方式显示文件的大小 |
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细情况 |
02 | top | 动态显示运行中进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程 -9 表示强行终止 |
ps
默认只会显示当前用户通过终端启动的应用程序
ps
选项说明功能
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
提示: 使用
kill
命令时, 最好只终止由当前用户开启的进程, 而不要终止root
身份开启的进程, 否则可能导致系统崩溃
要退出 top
可以直接输入 q
top
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待输入输出的CPU时间百分比
hi 硬件中断
si 软件中断
st: 实时
PID 进程号
USER 用户名
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级m
RES 进程使用的、未被换出的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
%CPU CPU使用率
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 执行的命令
cut
sort
wc
uniq
tee
tr
split
awk
sed
grep
准备工作
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
以上是成绩表信息
使用 逗号 分割, 第一列 是 姓名, 第二列是 语文成绩, 第三列是 数学成绩, 第四列是 英语成绩
准备工作
vim 1.txt
111:aaa:bbb:ccc
222:ddd:eee:fff
333:ggg:hhh
444:iii
cut
根据条件 从命令结果中 提取 对应内容命令 | 含义 |
---|---|
cut 动作 文件 | 从指定文件 截取内容 |
参数 | 英文 | 含义 |
---|---|---|
-c | characters | 按字符选取内容 |
head -2 1.txt | cut -c 5
参数 | 英文 | 含义 |
---|---|---|
-d '分隔符' | delimiter | 指定分隔符 |
-f n1,n2 | fields | 分割以后显示第几段内容, 使用 , 分割 |
范围控制
范围 | 含义 |
---|---|
n | 只显示第n项 |
n- | 显示 从第n项 一直到行尾 |
n-m | 显示 从第n项 到 第m项(包括m) |
head -2 1.txt | cut -d ':' -f 1,2
head -2 1.txt | cut -d ':' -f 1-2
cut 动作 目标文件
可以根据条件 提取对应内容准备工作
vim score.txt
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
[root@node01 tmp]# cat 2.txt
banana
apple
pear
orange
pear
[root@node01 tmp]# sort 2.txt
apple
banana
orange
pear
pear
参数 | 英文 | 含义 |
---|---|---|
-u | unique | 去掉重复的 |
它的作用很简单,就是在输出行中去除重复行。
[root@node01 tmp]# sort -u 2.txt
apple
banana
orange
pear
参数 | 英文 | 含义 |
---|---|---|
-n | numeric-sort | 按照数值大小排序 |
-r | reverse | 使次序颠倒 |
准备数据
[root@node01 tmp]# cat 3.txt
1
3
5
7
11
2
4
6
10
8
9
默认按照字符串
排序
[root@node01 tmp]# sort 2.txt
1
10
11
2
3
4
5
6
7
8
9
升序
[root@node01 tmp]# sort -n 2.txt
1
2
3
4
5
6
7
8
9
10
11
倒序
[root@node01 tmp]# sort -n -r 2.txt
11
10
9
8
7
6
5
4
3
2
1
合并式
[root@node01 tmp]# sort -nr 2.txt
11
10
9
8
7
6
5
4
3
2
1
参数 | 英文 | 含义 |
---|---|---|
-t | field-separator | 指定字段分隔符 |
-k | key | 根据那一列排序 |
‘’
# 根据第二段成绩 进行倒序显示 所有内容
sort -t ',' -k2nr score.txt
/etc
目录下 有多少个 子内容命令 | 含义 |
---|---|
wc 文件名 | 显示指定文件 字节数, 单词数, 行数 信息 |
[root@hadoop01 export]# cat 4.txt
111
222 bbb
333 aaa bbb
444 aaa bbb ccc
555 aaa bbb ccc ddd
666 aaa bbb ccc ddd eee
[root@hadoop01 export]# wc 4.txt
6 21 85 4.txt
参数 | 英文 | 含义 |
---|---|---|
-c | bytes | 字节数 |
-w | words | 单词数 |
-l | lines | 行数 |
[root@hadoop01 export]# wc 4.txt
6 21 85 3.txt
[root@hadoop01 export]# wc 1.txt 2.txt 3.txt
4 4 52 1.txt
11 11 24 2.txt
6 21 85 3.txt
21 36 161 总用量
[root@hadoop01 export]# wc *.txt
4 4 52 1.txt
11 11 24 2.txt
6 21 85 3.txt
6 6 95 score.txt
27 42 256 总用量
/etc
目录下 有多少个 子内容[root@hadoop01 export]# ls /etc | wc -w
240
wc 文件
就可以 统计 文件的 字节数、单词数、行数.uniq 命令用于检查及删除文本文件中重复出现的行,一般与 sort 命令结合使用。
命令 | 英文 | 含义 |
---|---|---|
uniq [参数] 文件 | unique 唯一 | 去除重复行 |
# 准备内容
[root@hadoop01 export]# cat 5.txt
张三 98
李四 100
王五 90
赵六 95
麻七 70
李四 100
王五 90
赵六 95
麻七 70
# 排序
[root@hadoop01 export]# cat 5.txt | sort
李四 100
李四 100
麻七 70
麻七 70
王五 90
王五 90
张三 98
赵六 95
赵六 95
# 去重
[root@hadoop01 export]# cat 5.txt | sort | uniq
李四 100
麻七 70
王五 90
张三 98
赵六 95
参数 | 英文 | 含义 |
---|---|---|
-c | count | 统计每行内容出现的次数 |
[root@hadoop01 export]# cat 5.txt | sort | uniq -c
2 李四 100
2 麻七 70
2 王五 90
1 张三 98
2 赵六 95
uniq [选项] 文件
就可以完成 去重行 和 统计次数tee
可以将命令结果 通过管道 输出到 多个文件中命令 | 含义 |
---|---|
命令结果 | tee 文件1 文件2 文件3 | 通过 tee 可以将命令结果 通过管道 输出到 多个文件中 |
tee
可以将命令结果 通过管道 输出到 多个文件中tr
命令用于 替换 或 删除 文件中的字符。命令 | 英文 | 含义 |
---|---|---|
命令结果 | tr 被替换的字符 新字符 | translate | 实现 替换效果 |
# 将 小写i 替换成 大写 I
# 把itheima的转换为大写
# 把 HELLO 转成 小写
# 将 小写i 替换成 大写 I
echo "itheima" | tr 'i' 'I'
# 把itheima的转换为大写
echo "itheima" |tr '[a-z]' '[A-Z]'
# 把 HELLO 转成 小写
echo "HELLO" |tr '[A-Z]' '[a-z]'
命令 | 英文 | 含义 |
---|---|---|
命令结果 | tr -d 被删除的字符 | delete | 删除指定的字符 |
echo 'abc1d4e5f' | tr -d '[0-9]'
[root@hadoop01 export]# cat words.txt
hello,world,hadoop
hive,sqoop,flume,hello
kitty,tom,jerry,world
hadoop
1 将, 换成 换行
2 排序
3 去重
4 计数
# 统计每个单词出现的次数
[root@hadoop01 export]# cat words.txt | tr ',' '\n' | sort | uniq -c
1 flume
2 hadoop
2 hello
1 hive
1 jerry
1 kitty
1 sqoop
1 tom
2 world
准备工作
# 查看 /etc目录下 以.conf以结尾的文件的内容
cat -n /etc/*.conf
# 将命令结果 追加到 /export/v.txt 文件中
cat -n /etc/*.conf >> /export/v.txt
split
命令将大文件 切分成 若干小文件命令 | 英文 | 含义 |
---|---|---|
split -b 10k 文件 | byte | 将大文件切分成若干10KB的小文件 |
命令 | 英文 | 含义 |
---|---|---|
split -l 1000 文件 | lines | 将大文件切分成若干1000行 的小文件 |
通过 split 选项 文件名
命令将大文件 切分成 若干小文件
准备工作1:
vim score.txt
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
awk
实现 模糊查询, 按需提取字段, 还可以进行 判断 和 简单的运算等.第一步: 模糊查询
第二步: 指定分割符, 根据下标显示内容
第三步: 指定输出字段的分割符
第四步: 调用 awk 提供的函数
第五步: 通过if语句判断$4是否及格
第六步: 段内容 求和
命令 | 含义 |
---|---|
awk ‘/zhangsan|lisi/’ score.txt | 模糊查询 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
选项
选项 | 英文 | 含义 |
---|---|---|
-F ',' | field-separator | 使用 指定字符 分割 |
$ + 数字 | 获取第几段内容 | |
$0 | 获取 当前行 内容 | |
NF | field | 表示当前行共有多少个字段 |
$NF | 代表 最后一个字段 | |
$(NF-1) | 代表 倒数第二个字段 | |
NR | 代表 处理的是第几行 |
命令 | 含义 |
---|---|
awk -F ’ ’ ‘{OFS="==="}{print $1, $2, $3}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
选项
选项 | 英文 | 含义 |
---|---|---|
OFS="字符" | output field separator | 向外输出时的段分割字符串 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{print toupper($2)}’ 1.txt | 操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容 |
常用函数如下:
函数名 | 含义 | 作用 |
---|---|---|
toupper() | upper | 字符 转成 大写 |
tolower() | lower | 字符 转成小写 |
length() | length | 返回 字符长度 |
命令 | 含义 |
---|---|
awk -F ‘,’ ‘{if($4>60) print $1, $4 }’ score.txt | 如果及格,就显示 $1, $4 |
awk -F ‘,’ ‘{if($4>60) print $1, $4, “及格”; else print $1, $4, “不及格”}’ score.txt | 显示 姓名, $4, 是否及格 |
选项
参数 | 含义 |
---|---|
if($0 ~ “aa”) print $0 | 如果这一行包含 “aa”, 就打印这一行内容 |
if($1 ~ “aa”) print $0 | 如果**第一段 **包含 “aa”, 就打印这一行内容 |
if($1 == “lisi”) print $0 | 如果第一段 等于 “lisi”, 就打印这一行内容 |
命令 | 含义 |
---|---|
awk ‘BEGIN{初始化操作}{每行都执行} END{结束时操作}’ 文件名 | BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 } |
awk -F ',' 'BEGIN{}{total=total+$4}END{print total, NR, (total/NR)}' score.txt
准备工作
vim 1.txt
aaa java root
bbb hello
ccc rt
ddd root nologin
eee rtt
fff ROOT nologin
ggg rttt
命令 | 含义 |
---|---|
sed 可选项 目标文件 | 对目标文件 进行 过滤查询 或 替换 |
可选参数
可选项 | 英文 | 含义 |
---|---|---|
p | 打印 | |
$ | 代表 最后一行 | |
-n | 仅显示处理后的结果 | |
-e | expression | 根据表达式 进行处理 |
sed -n -e '1,5p' 1.txt
sed -n -e '1,$p' 1.txt
可选项 | 含义 |
---|---|
= | 打印当前行号 |
sed -n -e '1,$=' -e '1,$p' 1.txt
简化版
cat -n 1.txt
cat -b 1.txt
nl 1.txt
答案:
sed -n -e '/root/p' 1.txt
可选项 | 英文 | 含义 |
---|---|---|
I | ignore | 忽略大小写 |
答案:
nl 1.txt | sed -n -e '/root/Ip'
nl 01.txt | grep -i root
cat -n 01.txt | grep -i root
可选项 | 英文 | 含义 |
---|---|---|
-r | regexp-extended | 识别正则 |
答案:
nl 01.txt | sed -nr -e '/r+t/p'
或者
sed -nr -e '/r+t/p' -e '/r+t/=' 01.txt
可选项 | 英文 | 含义 |
---|---|---|
d | delete | 删除指定内容 |
答案:
nl 01.txt | sed -e '1,3d'
答案:
nl 01.txt | sed -e '5,$d'
nl 1.txt | sed -n -e '1,4p'
参数 | 英文 | 含义 |
---|---|---|
i | insert | 目标前面 插入内容 |
a | append | 目标后面 追加内容 |
答案:
nl 01.txt | sed -e '2a aaaaa'
答案:
nl 01.txt | sed -e '1i bbbbb'
英文 | 含义 | |
---|---|---|
s/oldString/newString/ | replace | 替换 |
答案:
nl 1.txt | sed -e 's/nologin/huawei/'
选项 | 英文 | |
---|---|---|
2c 新字符串 | replace | 使用新字符串 替换 选中的行 |
答案:
nl passwd | sed -e '1,2c aaa'
参数 | 英文 | 含义 |
---|---|---|
-i | in-place | 替换原有文件内容 |
答案:
sed -i -e 's/nologin/huawei/' 01.txt
答案:
sed -i -e '2,3c aaa' 01.txt
注意:在进行操作之前,最好是对数据进行备份,放置操作失误,数据无法恢复!
答案:
sed -i -e '1,2d' 01.txt
nl passwd 查看数据
答案:
ifconfig eth0 | grep "inet addr" | sed -e 's/^.*inet addr://' | sed -e 's/Bcast:.*$//'
答案:
nl 01.txt | grep 'root' | sed -e 's/nologin/itheima/'
或者
nl 01.txt | sed -n -e '/root/p' | sed -e 's/nologin/itheima/'
或者
nl 01.txt | sed -n -e '/root/{s/nologin/itheima/p}' #只显示替换内容的行
答案:
nl 01.txt | sed -e '1,2d' | sed -e 's/nologin/itheima/'
命令 | 英文 | 含义 |
---|---|---|
lsblk -f | list block devices | 查看所有设备的挂载情况 |
参数 | 英文 | 含义 |
---|---|---|
-f | file system | 文件系统 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F5x3IfHz-1624685690449)(assets/1558957195965.png)]
lsblk
的记忆小窍门: 老师不离开 的首字母命令 | 英文 | 含义 |
---|---|---|
fdisk /dev/sdb | partition | 开始指定磁盘分区 |
分区命令可选项
选项 | 英文 | 含义 |
---|---|---|
m | menu | 显示命令列表 |
n | new | 新增分区 |
p | partition | 显示磁盘分区 |
d | delete | 删除分区 |
w | write and exit | 写入 并 退出 |
fdisk /dev/sdb
开始分区m
, 进入 目录列表n
, 新增分区p
, 开始分区, 后面按回车w
, 保存 且 退出lsblk -f
查看是否成功命令 | 英文 | 含义 |
---|---|---|
mkfs -t ext4 /dev/sdb1 | build a Linux file system | 格式化指定分区 |
参数 | 英文 | 含义 |
---|---|---|
-t | file system type | 指定文件系统类型 |
mkfs -t ext4 /dev/sdb1
格式化指定分区lsblk -f
查看是否成功命令 | 含义 |
---|---|
mount 设备名称 挂载目录 | 建立 设备分区 和 系统目录 的映射关系 |
umount 设备名称 或 umount 挂载目录 | 取消 设备分区 和 系统目录 的映射关系 |
mkdir -p /home/newdisk
mount /dev/sdb1 /home/newdisk
建立 设备分区 和 系统目录 的映射关系lsblk -f
查看是否挂载成功/etc/fstab
mount -a
重新加载/etc/fstab
文件 ; mount
显示 /etc/fstab
文件内容lsblk -f
目标虚拟机, 右键 设置
选中 CD/DVD, 浏览 选中本地的 centOS 镜像
创建目录 mkdir -p /mnt/cdrom
挂载镜像文件 mount /dev/sr0 /mnt/cdrom
进入挂载目录, 找到 安照包
# 切换到安装包目录中
cd /mnt/cdrom/Packages/
# 搜索tree安装包
ls | grep tree
rpm命令
实现对软件 的安装、查询、卸载选项 | 英文 | 含义 |
---|---|---|
-q | query | 查询 |
-a | all | 所有 |
-i | info | 信息 |
-l | list | 显示所有相关文件 |
-f | file | 文件, 显示文件对应 rpm 包 |
查询已安装的rpm列表
rpm -qa | grep XXX
rpm -qa | less
查询软件包信息
rpm -qi 软件全包名
查看一个rpm包中的文件安装到那里去了?
rpm -ql 软件全包名
查看指定文件归属于那个软件包
rpm -qf 文件的全路径
命令 | 英文 | 含义 |
---|---|---|
rpm -e 软件包名称 | erase 清除 | 卸载rpm软件包 |
rpm -e --nodeps 软件包名称 | Don’t check dependencies | 卸载前 跳过 依赖检查 |
命令 | 含义 |
---|---|
rpm -ivh rpm包的全路径 | 安装 rpm 包 |
参数 | 英文 | 含义 |
---|---|---|
-i | install | 安装 |
-v | verbose | 打印提示信息 |
-h | hase | 显示安装进度 |
# 1 查询
rpm -qa | grep rpm包
# 2 卸载
rpm -e rpm全包名
rpm -e --nodeps rpm全包名
# 3 安装
rpm -ivh rpm包的全路径
Yum
(全称为 Yellow dog Updater, Modified
)本质上 也是一个 软件包管理器。RPM
包管理,能够从指定的服务器 自动下载、 自动安装、 自动处理依赖性关系注意: 必须联网
命令 | 含义 |
---|---|
yum list | grep 需要的软件名 | 查询服务器是否有需要安装的软件 |
yum -y install 需要的软件包 | 下载安装 |
yum -y remove 需要卸载的软件包 | 卸载 |
yum repolist | 列出设定yum源信息 |
yum clean all | 清除yum缓存信息 |
# 切换到保存yum信息的目录
cd /etc/yum.repos.d/
# 备份所有的配置文件
rename .repo .repo.bak *
# 查看是否备份成功
ll
vi CentOS-Local.repo
编辑内容如下
[base]
name=CentOS-Local
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0RnaPeNs-1624685690462)(assets%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1571065658421.png)]
.repo
结尾yum -y install httpd
service httpd start
http://192.168.100.201:80
http://192.168.100:201:80
# 拷贝yum源到httpd服务的默认工作路径下
cp -r /mnt/cdrom/* /var/www/html/CentOS-6.9
http://192.168.100.201/CentOS-6.9/
yum clean all
yum repolist
yum install -y tree
# 安装软件
yum -y install 软件包
卸载软件
yum -y remove 软件包
/export/soft
, 解压到 /export/install
# 查询已安装的jdk
rpm -qa | grep java
# 卸载
rpm -e --nodeps 软件包名
/export/soft
, 解压到 /export/install
# 1 创建保存软件包目录
mkdir -p /export/soft/
cd /export/soft/ && ll
# 2 上传软件包
# 3 创建安装软件目录
mkdir -p /export/install
# 4 将压缩包解压到指定目录
tar -zxvf jdk-8u141-linux-x64.tar.gz -C /export/install
cd /export/install && ll
javac
和 java
JAVA_HOME=/export/install/jdk1.8.0_141
PATH=/export/install/jdk1.8.0_141/bin:$PATH
export JAVA_HOME PATH
source /etc/profile
# 测试
java -version
需求: 编写一个简单的Hello.java, 输出 Hello World!
vim Hello.java
[root@hadoop01 export]# cat Hello.java
public class Hello{
public static void main(String[] args) {
System.out.println("Hello java!");
}
}
使用 javac Hello.java
编译
执行 java Hello
/export/soft
, 解压到 /export/install
# 切换到保存软件的目录
cd /export/soft
# 解压到 /export/install 安装目录
tar -zxvf apache-tomcat-7.0.82.tar.gz -C /export/install/
# 切换启动命令的目录
cd /export/install/apache-tomcat-7.0.82/bin
# 启动 且 查看日志
./startup.sh && tail -100f ../logs/catalina.out
http://192.168.100.201:8080/
[root@hadoop01 yum.repos.d]# rpm -qa | grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64
yum install -y mysql-server
service mysqld start
# 设置密码
/usr/bin/mysqladmin -u root password '123456'
# 进入mysql
mysql -uroot -p123456
由于MySQL编码原因会导致数据库出现乱码。
解决办法:
修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。
具体操作:
# 进入mysql
mysql -uroot -p123456
# 查看编码集 发现不是utf8
show variables like 'character_set_%';
# 清空 mysql 配置文件内容
[root@Hadoop-NN-01 ~]# >/etc/my.cnf
# 修改mysql 软件的编码集
[root@Hadoop-NN-01 ~]# vi /etc/my.cnf
修改内容如下:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[root@Hadoop-NN-01 ~]# service mysqld restart
#查看MySQL字符集
show variables like 'character_set_%';
MySQL数据库字符集编码修改完成!
问题: 使用客户端 远程 连接mysql报错?
原因: 因为 用户 没有 远程访问的权限
解决: 授权
mysql> use mysql;
mysql>select host, user ,password from user;
# 给root授权:既可以本地访问, 也可以远程访问
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新权限(可选)
mysql> flush privileges;
mysql> select host, user ,password from user;
连接之前需要关闭防火墙
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgnWkwzo-1624685690471)(assets/1559030329561.png)]
vim /etc/udev/rules.d/70-persistent-net.rules
vim /etc/sysconfig/network-scripts/ifcfg-eth0
reboot
三台机器执行以下命令(root用户来执行)
# 查看防火墙的状态
service iptables status
# 启动防火墙服务
service iptables start
# 重启 防火墙 服务
service iptables restart
# 停止 防火墙 服务
service iptables stop
# 彻底关闭防火墙
chkconfig iptables off
vim /etc/selinux/config
vim /etc/sysconfig/network
vim /etc/hosts
192.168.100.201 hadoop01
192.168.100.202 hadoop02
192.168.100.203 hadoop03
ping 192.168.100.202
ping hadoop02
scp
远程文件拷贝# 创建目录
mkdir -p /export/aaa/bbb/ccc
# 创建文件
touch /export/aaa/01.txt /export/aaa/02.txt
# 显示
tree /export/aaa
# 拷贝文件
scp local_file remote_username@remote_ip:remote_folder
scp /export/aaa/01.txt root@192.168.100.202:/export
scp /export/aaa/02.txt root@hadoop02:/export
scp /export/aaa/02.txt hadoop02:/export
语法格式
# 拷贝目录
scp -r local_folder remote_username@remote_ip:remote_folder
scp -r /export/aaa root@192.168.100.202:/export
scp -r /export/aaa root@hadoop02:/export
scp -r /export/aaa hadoop02:/export
# 创建目录
mkdir -p /export/a1/b1/c1
# 创建文件
touch /export/a1/111.txt
touch /export/a1/222.txt
# 显示内容
tree /export/a1
语法格式
scp remote_username@remote_ip:remote_file local_folder
scp root@192.168.100.202:/export/a1/111.txt /export
scp root@hadoop02:/export/a1/222.txt /export
scp hadoop02:/export/a1/222.txt /export
语法格式
scp -r remote_username@remote_ip:remote_folder local_folder
scp -r root@192.168.100.202:/export/a1 /export
scp -r hadoop02:/export/a1 /export
ssh
基于密码的远程登录命令 | 含义 |
---|---|
ssh ip地址 | 远程登录到指定服务器上(必须知道正确的密码) |
在第三台机器上登录到第二台机器上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DrcoW4V2-1624685690479)(assets/1559302684534.png)]
细节: 首次远程登录会询问 yes/no
, 以后可能就不会了
ssh
基于密匙 实现 免密码登录(掌握)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbswp140-1624685690479)(assets%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1571066755061.png)]
第一步: ssh-keygen -t rsa 在hadoop1和hadoop2和hadoop3上面都要执行,产生公钥和私钥
第二步:ssh-copy-id hadoop01 将公钥拷贝到hadoop1上面去
第三步:
ssh-copy-id hadoop02
ssh-copy-id hadoop03
注意1: 第三步需要在/root/.ssh/目录下.
/export/文件
中第一步: date >> /export/mydate1.txt
测试命令
第二步: 通过 crontab -e
进入 定时任务
第三步: 编辑定时任务命令
*/1 * * * * date >> /export/mydate1.txt
第四步: 检测是否成功
cd /export/ && tail -f mydate1.txt
第一步: 书写测试命令
echo `date +"%Y-%m-%d %H:%M:%S"` >> mydate2.txt
第二步: 将命令放到脚本中 vim /export/task.sh
echo `date +"%Y-%m-%d %H:%M:%S"` >> /export/mydate2.txt
第三步: 增加可执行权限
chmod +x /export/task.sh
第四步: 执行脚本
/export/task.sh
第五步: 进入 定时任务 crontab -e
*/1 * * * * date >> /export/mydate1.txt
*/1 * * * * /export/task.sh
第六步: 测试 观察结果
tail -f /export/mydate2.txt
5个占位符的说明
含义 | 范围 | |
---|---|---|
第一个 * | 一小时当中的第几分钟 | 0~59 |
第二个 * | 一天当中的第几小时 | 0~23 |
第三个 * | 一个月当中的第几天 | 1~31 |
第四个 * | 一年当中的第几月 | 1~12 |
第五个 * | 一周当中的星期几 | 0~7(0和7都代表星期日) |
例子
命令 | 含义 |
---|---|
* * * * * command | 实例1:每1分钟执行一次command |
3,15 * * * * command | 实例2: 每小时的第3和第15分钟执行 |
3,15 8-11 * * * command | 实例3: 在上午8点到11点的第3和第15分钟执行 |
3,15 8-11 */2 * * command | 实例4: 每隔两天的上午8点到11点的第3和第15分钟执行 |
3,15 8-11 * * 1 command | 实例5: 每个星期一的上午8点到11点的第3和第15分钟执行 |
30 21 * * * /etc/init.d/smb restart | 实例6: 每晚的21:30重启smb |
45 4 1,10,22 * * /etc/init.d/smb restart | 实例7: 每月1、10、22日的4 : 45重启smb |
10 1 * * 6,0 /etc/init.d/smb restart | 实例8:每周六、周日的1 : 10重启smb |
0,30 18-23 * * * /etc/init.d/smb restart | 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb |
命令 | 英文 | 含义 |
---|---|---|
ntpdate 互联网时间服务器地址; | Network Time Protocol | 同步时间 |
阿里云时钟同步服务器
ntpdate ntp4.aliyun.com
三台机器定时任务 : 直接与阿里云服务器进行时钟同步
crontab -e
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
准备工作: 删除三台服务器定时任务
crontab -r
rpm -qa | grep ntpd
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z3YZJYn9-1624685690482)(assets/1559323516074.png)]
如果 没有安装,可以进行在线安装
yum -y install ntpd
查看ntpd的状态
service ntpd status
启动ntpd的服务
service ntpd start
设置ntpd的服务开机启动
chkconfig ntpd on
/etc/ntp.conf
编辑第一台机器的 /etc/ntp.conf
vim /etc/ntp.conf
在文件中添加如下内容, 配置我们的时钟广播地址
#允许192.168.100.0 网段中的服务器访问本ntp服务器进行时间同步
restrict 192.168.100.0 mask 255.255.255.0 nomodify notrap
注释一下四行内容
#server0.centos.pool.ntp.org
#server1.centos.pool.ntp.org
#server2.centos.pool.ntp.org
#server3.centos.pool.ntp.org
去掉以下内容的注释,如果没有这两行注释,那就自己添加上
#如果上面的服务器都无法同步时间,就和本地系统时间同步。127.127.1.0在这里是一个IP地址,不是网段。
server 127.127.1.0 # localclock
#127.127.1.0 为第10层。ntp 和127.127.1.0同步完后,就变成了11层。 ntp是层次阶级的。
fudge 127.127.1.0 stratum 10
配置以下内容,保证BIOS与系统时间同步
vim /etc/sysconfig/ntpd
添加一行内容
SYNC_HWLOCK=yes
重启ntpd 服务
service ntpd restart
先手动同步时间
ntpdate 192.168.100.201
再使用 定时任务 同步时间
crontab -e
*/1 * * * * /usr/sbin/ntpdate 192.168.100.201
另外两台机器与192.168.52.201进行时钟同步
注意: 报错
原因: ntp服务已运行
解决办法: 断开再连
练习路径:
1 设置防火墙
2 一台机器上: rpm 安装 jdk tomcat mysql
3 搭建服务器集群(下午)
4 挂载 硬盘 和 光驱
5 yum源: 网络yum源 本地yum源 局域网yum源
以上便是大数据开发工程师基本功修炼之史上最全Linux学习笔记 ,喜欢的小伙伴欢迎一键三连
!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。