Linux
1为什么要使用Linux
1.1 生产上:
大部分大数据组件是基于Linux进行开发部署的
1.2 Java 前端 算法等软件同样基于Linux进行部署
2Linux概述
2.1 开源的操作系统
2.2 Linux开发的系统内核
2.3 版本:
Ubuntu 、 centos、debian、redhat。。。
win:
- 大版本:旗舰版 家庭版 学生版
- 小版本:win7 win10
- centos :
+ 6.x
+ 7.x (主流)
+ 8.x
3部署Linux系统
3.1 win:
(1)虚拟机 要求:
- Windows的配置 内存:8G及以上
- 虚拟机长时间不关闭容易损伤磁盘
(2) 云主机:
云厂商:
阿里云、腾讯云、华为云、京东云
- 3个月69
- 按需分配
4虚拟机 部署Linux系统
4.1win:
- 虚拟化的软件:
vmware、vbox。。。 - Linux镜像
4.1 安装 vmware
- 注册码
- windows不支持vmware安装:
- bios (虚拟化的设置)没有打开
4.2Linux部署
- 稍后安装
- 机器的名字+路径:机器存储路径 + 存储路径
- 资源:
- CPU:2core
- mem:4g 、2g
- df 40g
- 关联Linux镜像
4.3Linux启动:
4g 40G
centos7.5 :简单配置
- 语言:
- English(企业)
- 中文(初学者)
- 软件:
- 软件选择:带桌面安装
- 系统配置:
- kdunp 关闭 => 保护机制
- 网络:
- 网卡打开
- hostname
- 磁盘划分
- boot => 存放Linux启动资源1g file system => etx4
- swap:2g 把磁盘资源当做内存来使用
- / 根目录:Linux全部存储空间 磁盘大小 file system => etx4
4.4Linux系统
- 用户:root 最高权限用户
4.5远程登录访问
- win/mac:
- 安装xshall
- 远程登录工具:xshell、crt、finlshell 【百度搜想要的远程工具推荐】
- 远程登录: —打开xshell
- 机器的ip:192.168.10.22 【ifconfig 查看自己的ip 】
- 用户名 root
- 密码 123456
- 端口 22
- 安装xshall
4.6Linux系统
- 层级式文件存储系统:根目录 /
4.7Linux命令
[root@bigdata22 ~]#
- root 默认的管理员 最大权限用户
- bigdata22 机器的名字
- ~ 当前用户的 家目录
(1)pwd 查看当前光标所在的目录
[root@bigdata22 ~]# pwd
/root
(2)ls 查看光标所在的目录下面
- ls 显示 文件夹和文件
- ls -l 显示额外的信息【权限、用户用户组 大小 时间】
- ls -l -a 显示以.开头的文件和文件夹
- 以.开头的文件和文件夹 隐藏文件
- ls -l -h 查看文件的大小
- 命令帮助:xz
- 命令 - - help
- ls --help:
- 用法:
ls [选项]... [文件]...
- [] 可选
- … 多个
- 用法:
- ls -l => ll 等价 别名
- 需求:
- 一个目录下面 有1000多个文件 查找 最新更改的文件 ?
ll -r -t => ll -rt
- 一个目录下面 有1000多个文件 查找 最新更改的文件 ?
(3)mkdir 创建文件夹
[root@bigdata22 ~]# mkdir bigdata
- 并级
[root@bigdata22 ~]# mkdir dir1 dir2 dir3
- 串级
[root@bigdata22 ~]# mkdir -p dir4/dir5/dir6
(4)cd 切换目录、路径、文件夹
[root@bigdata22 ~]# cd bigdata/
/ ##根目录
- 路径:
- 绝对路径:光标从 根目录开始的
cd /root/dir2
- 相对路径:光标从 当前开始
cd ./dir2/
- 绝对路径:光标从 根目录开始的
cd ../
: 退回到上一层级目录cd ../../
: 退回到上两层级目录./
当前目录~
当前用户的 家目录- root 家目录
/root
- 其他用户
xx
家目录/home/xx
cd -
回到上一次操作的目录
- root 家目录
- 如何快速回到家目录?
1.cd /root
2.cd 回车
==>推荐
3.cd ~
(5)创建文件
- 常用:
- touch 1.log
- vi/vim 2.log
- 不常用:
- echo “bigdata” > 3.log
- echo “bigdata” 打印
> 创建或者覆盖一个文件
>> 追加
(6)编辑文件 vi/vim
- 三种模式:
- 命令行模式
- 编辑模式
- 尾行模式:
vim xx.log
=> 命令行模式- 按键盘
i
键 =》 编辑模式 - 按键盘
esc
键 编辑模式 =》命令行模式 - 按键盘
shift+; => :
键 命令行模式 =》尾行模式 输入wq
保存退出 - 尾行模式:
- w 保存
- q 退出
- !强制
(7)查看文件
- cat 查看文件所有内容 输出到控制台
- more 文件内容 一页一页的 按空格 往下翻 q退出
- less 文件内容 一页一页的 按上下键 q退出
- 看小文件: cat
- 看大文件: vim / more 、 less
- 实时查看文件新产生的内容 tail:
tail -f 1.log
tail -F = -f +retry
ctrl +c / ctrl +z 中断命令
- 场景:
- log:日志级别 info、warn、 error
- 如何定位 error信息?
- vim xxx.log 搜索 error词 :
尾行模式:输入 /要找的词
键盘 n 查找下一个词
N 找上一个词
(日志文件 1G 100w个 ) - cat :
cat vmware-vmsvc.log | grep error > error.log
定位 error 上下文
cat vmware-vmsvc.log | grep -A 3 error > error.log
=> error 后10行
cat vmware-vmsvc.log | grep -B 3 error > error.log
=> error 前10行
cat vmware-vmsvc.log | grep -C 3 error > ~/error.log
=> error 前后各10行
- | 管道符 =>上一个命令的结果 作为下一个命令的输入
- grep 过滤 文本所在的一行
- 场景:
(8)文件上传下载
- 上传:win => linux
- 下载: linux => win
- xshell工具 xftp
- linux命令
yum install -y lrzsz
(9)自动补全
- tab :
- 按一次 匹配的东西 就一个 自动补全
- 按两次 把匹配东西全部匹配出来
(10)清屏
- clear
- Ctrl + l
(11)查看历史命令
- history
- 快速执行
!+对应的编号
- 快速执行
(12)mv移动 cp复制
mv [选项]... 源文件... 目录
=>mv dir1 bigdata
cp [选项]... 源文件... 目录
=>cp -r dir2 bigdata
- mv 始终是一份 快
- cp 两份 慢
(13)rm删除文件和文件夹【高危命令】
rm [选项]... 文件...
- 有删除提示:
- 删除文件:
rm error.log
- 删除文件夹:
[root@bigdata22 ~]# rm -r dir3_blk
- 删除文件:
rm -r -f xxx => rm -rf xxx
- 有删除提示:
rm -rf /
= >删库跑路 root 权限限制
(14)别名 alias
1.创建别名:
alias aa="cd /tmp
= > 仅仅是当前会话生效
[root@bigdata22 ~]# aa
bash: aa: 未找到命令...
是因为没有在 环境变量文件里面 进行配置
(15)环境变量
- Java:jdk
- Linux:path
- 环境变量路径:
[root@bigdata22 ~]# echo $PATH
/usr/local/sbin: /usr/local/bin: /usr/sbin: /usr/bin: /root/bin
- 全局环境变量:
/etc/profile
所有用户都可以使用 - 个人环境变量:只能当前用户使用 其他用户 不能使用
~/.bashrc
建议使用~/.bash_profile
- 生效环境变量:
- 全局环境变量:
source /etc/profile
- 重新打开一个会话
- 个人环境变量:
alias cc="cd /tmp"
- 全局环境变量:
5 用户管理命令
- Linux用户:
用户
用户组 - yizi:
hr 、财务
(1)查看用户相关命令
[root@bigdata22 ~]# ll /usr/sbin/user*
-rwxr-x---. 1 root root 118192 11月 6 2016 /usr/sbin/useradd
-rwxr-x---. 1 root root 80360 11月 6 2016 /usr/sbin/userdel
-rwxr-x---. 1 root root 113840 11月 6 2016 /usr/sbin/usermod
(2)查看用户组相关命令
[root@bigdata22 ~]# ll /usr/sbin/group*
-rwxr-x---. 1 root root 65480 11月 6 2016 /usr/sbin/groupadd
-rwxr-x---. 1 root root 57016 11月 6 2016 /usr/sbin/groupdel
-rwxr-x---. 1 root root 57064 11月 6 2016 /usr/sbin/groupmems
-rwxr-x---. 1 root root 76424 11月 6 2016 /usr/sbin/groupmod
(3)创建用户
[root@bigdata22 ~]# useradd uzi
[root@bigdata22 ~]# id uzi
uid=1005(uzi) gid=1006(uzi) 组=1006(uzi)、
-
创建一个普通用户 uzi 用户名称 uzi
也会创建一个 uzi 用户组
会把主组 设置成 uzi -
同时 也会创建一个家目录: /home/uzi
-
用户的信息 /etc/passwd
-
用户组的信息 /etc/group
(4)切换用户
su uzi
su - uzi
切换用户的同时 也会获得 该用户的环境变量以及执行 【推荐】
(5)场景
[root@bigdata22 ~]# useradd uzi
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
=>提供样式 以及环境变量的文件
正在创建信箱文件: 文件已存在
[root@bigdata22 ~]# ll -a /etc/skel/
总用量 32
drwxr-xr-x. 3 root root 4096 4月 11 2018 .
drwxr-xr-x. 135 root root 12288 11月 1 09:51 ..
-rw-r--r--. 1 root root 18 4月 11 2018 .bash_logout
-rw-r--r--. 1 root root 193 4月 11 2018 .bash_profile
-rw-r--r--. 1 root root 231 4月 11 2018 .bashrc
drwxr-xr-x. 4 root root 4096 4月 12 2022 .mozilla
用户样式丢失的问题?
[root@bigdata22 uzi]# cp /etc/skel/.* ./
添加用户组:[root@bigdata22 ~]# groupadd bigdata
场景:【uzi:uzi】
1.uzi 用户 额外追加一个bigdata组?
[root@bigdata22 ~]# usermod -a -G bigdata uzi
2.修改主组 并添加附属组
[root@bigdata22 ~]# usermod -a -G bigdata uzi
[root@bigdata22 ~]# id uzi
uid=1005(uzi) gid=1006(uzi) 组=1006(uzi),1003(bigdata)
[root@bigdata22 ~]# usermod -g bigdata uzi
[root@bigdata22 ~]# id uzi
uid=1005(uzi) gid=1003(bigdata) 组=1003(bigdata)
[root@bigdata22 ~]# usermod -a -G uzi uzi
[root@bigdata22 ~]# id uzi
uid=1005(uzi) gid=1003(bigdata) 组=1003(bigdata),1006(uzi)
2设置用户密码
passwd:
1.修改当前用户的密码
[root@bigdata22 ~]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2.修改其他用户密码
[root@bigdata22 ~]# passwd uzi
更改用户 uzi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
6 sudo 普通用户 临时具有 使用root的最大权限
vim /etc/sudoers
uzi ALL=(root) NOPASSWD: ALL
[uzi@bigdata22 root]$ sudo ls
1.log bigdata dir3 dir4
场景:
su 和 sudo 能不能一起使用? 使用的场景是什么? 能
1.sudo :切换用户
2.root sudo
7 /etc/passwd
/sbin/nologin
有提示/usr/bin/false
没有提示
CDH平台:
hadoop、hive、yarn、hdfs、flume、hue
su - yarn
/sbin/nologin /usr/bin/false => /bin/bash
8 文件权限相关命令
[root@bigdata22 ~]# ll
总用量 16
-rw-r--r--. 1 root root 4 10月 31 14:52 1.log
第一个字母: d 文件夹 - 文件 l 连接
后面9个字母 三个为一组 :
rw- r-- r–
r: read 读的权限 4
w:write 写的权限 2
x:执行权限 1
-:没权限 0
第一组:rw- 4+2+0=6 代表文件或者文件夹的所属用户的 权限
第二组:r-- 4+0+0=4 代表文件或者文件夹的所属用户组的权限
第三组:r-- 4+0+0=4 代表文件或者文件夹的其他用户组的权限
rw-r–r-- 644
7:4 2 1
6:4 2 0
5:4 1
-rwxr-xr-x root root bigdata uzi
关于权限修改命令:
chmod 修改文件或者文件夹的权限:
chmod 640 1.log =》 文件
chmod -R 640 /bigdata => 文件夹
chown 修改文件或者文件夹的用户和用户组
chown [选项]... [所有者][:[组]] 文件...
chown uzi:uzi 1.log
=> 文件
chown -R uzi:uzi /bigdata
=> 文件夹
9 大小
文件:ll -h
、 du -sh
文件夹: du -sh
10 搜索文件
find
locate 【不用它】
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
find [path...] [expression]
expression: -name "xxx"
find / -name "1.log"
11 vi、vim命令
1.编辑文件
尾行模式 wq
保存退出 正常
不正常:ctrl +c
ctrl + z
解决:
- 删除交换文件 .2.log.swp
- error 定位信息【log 1w多行】
行号:
尾行模式 :set nu
取消行号:set nonu - 常用快捷方式
dd 删除当前行
dG删除当前行 以及 以下所有行
ndd 删除当前行 以及 以下n行
u 撤回
gg 跳转到第一行的第一个字母
G 跳转到最后一个的第一个字母
shift +$ 跳转到 行尾
shift +^ 跳转到 行头
i o
场景:
清空这个文件内容 ?
gg => dG
清空文件内容?
1.gg => dG
2.linux =》 空的文件
cat /dev/null > 3.log
echo "" > 3.log
场景:
shell 脚本 数据文件清空的操作 根据文件字节大小判断是否清空完成
往文件里面写入数据
if filesize > 0 then
不操作
else
log写入数据
12 系统相关命令
内存:free
[root@bigdata22 ~]# free -h
磁盘:df
[root@bigdata22 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 56G 23G 31G 42% /
添加磁盘:
/dev/vdb1 10T 23G 31G 42% /data01
/dev/vdb2 10T 23G 31G 42% /data02
/dev/vdb3 10T 23G 31G 42% /data03
/dev/vdb4 10T 23G 31G 42% /data04
负载:top
top - 14:20:11 up 5:28,
2 users
load average: 0.00, 0.01, 0.05
5min 10min 15min
经验值:
超过10 说明你的机器 卡卡的
20
99=》datax 同步任务 cpu
重启 =>
1.检查硬件是否有问题
13 yum / rpm
linux centos 软件
yum search xxx – 需要联网
yum install xxx – 需要联网
14 通讯命令
ping ip
telnet ip port
ip =》hostname
172.10.100.1 <=> baidu01
- 端口:
1-65535 =》 防火墙决定的
a => b :
- ping b_ip 网络ok 可以进行通讯的
- a 访问b机器某个 服务的 端口
telnet b_ip port
9527
a:
win
ping ip =》 检查网络是否通畅
b:
linux 内网ip:192.168.10.22
- 22 ssh 远程登录并执行
- 连不上原因:
- 80 没有开放
- 80 没有服务
win开启telnet功能:
1.控制面板=》程序=》打开或关闭wins功能=》telnet客户端选中
补充:
1.工作中的安全问题
- ping ip 【不允许ping】
- telnet ip port
2.linux telnet:
- yum install -y telnet
15 补充命令[查看linux 系统命令、某个软件shell脚本 (命令)是否存在]
-
which
- which ls
-
whereis
1.
[root@bigdata22 ~]# banzhang bash: banzhang: 未找到命令...
- 命令确实没有安装
- 安装了 没有配置环境变量
2.
whereis banzhang
16 修改机器名字
[去公司 0-1 搭建服务器]
hostname
hostnamectl set-hostname bigdata99
17 解压缩
zip
gz => gzip
zip:
-
压缩:
zip log.zip 1.log 2.log 3.log
-
解压:
unzip
unzip file[.zip] [-d exdir]
-
eg:
unzip ./log.zip
unzip ./log.zip -d ./dir1
-
gzip:
文件
归档文件 tar -
文件:1.log 2.log 3.log
-
归档文件: test.tar
- tar :
- 归档:
tar -cf test.tar 1.log 2.log 3.log
- 解归档:
test.tar
tar -xf test.tar -C ./dir2
- 归档:
- tar :
-
归档文件 做一个压缩:gzip
test.tar =》 test.tar.gz
- 压缩:
tar -zcvf test2.tar.gz 1.log 2.log 3.log
- 解压:
tar -zxvf ./test.tar.gz -C ./dir3
- 压缩:
18 yum
yum search xxx
yum install -y xxx
httpd
centos 6:
service httpd start|status|restart|stop
centos 7:
service httpd start|status|restart|stop 兼容
systemctl start|status|restart|stop name...
-
启动:
systemctl start httpd
-
进程:
ps -ef | grep httpd
-
杀死进程:
kill -9 pid
kill -9 $(pgrep -f httpd)
- 补充:
- 浏览器: http://ip:80
https://ip:443
- 浏览器: http://ip:80
- 补充:
-
查端口:
netstat -nlp | grep httpd
:::80 => ip:80 web
ip:80
0.0.0.0:80
外部机器可以访问
外部机器不可以访问
127.0.0.1:80 自己可以访问
localhost:80
curl localhost:80
-
补充:
kill -9 $(pgrep -f httpd)
-
app =》pid
思考:每个进程都会有 对外提供服务的端口么?
不一定 -
场景:
大数据平台 webui 老板 找一下webui? port 忘记了 ?
启动=》 进程名字 =》 ps -ef | grep name =>pid
netstat -nlp | grep pid => port
ip:port