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

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

(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 - 回到上一次操作的目录
  • 如何快速回到家目录?
    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 116 2016 /usr/sbin/useradd
-rwxr-x---. 1 root root  80360 116 2016 /usr/sbin/userdel
-rwxr-x---. 1 root root 113840 116 2016 /usr/sbin/usermod

(2)查看用户组相关命令

[root@bigdata22 ~]# ll /usr/sbin/group*
-rwxr-x---. 1 root root 65480 116 2016 /usr/sbin/groupadd
-rwxr-x---. 1 root root 57016 116 2016 /usr/sbin/groupdel
-rwxr-x---. 1 root root 57064 116 2016 /usr/sbin/groupmems
-rwxr-x---. 1 root root 76424 116 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 411 2018 .
drwxr-xr-x. 135 root root 12288 111 09:51 ..
-rw-r--r--.   1 root root    18 411 2018 .bash_logout
-rw-r--r--.   1 root root   193 411 2018 .bash_profile
-rw-r--r--.   1 root root   231 411 2018 .bashrc
drwxr-xr-x.   4 root root  4096 412 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的最大权限

  1. vim /etc/sudoers
    uzi ALL=(root) NOPASSWD: ALL
  2. [uzi@bigdata22 root]$ sudo ls
    1.log bigdata dir3 dir4

场景:

su 和 sudo 能不能一起使用? 使用的场景是什么?
1.sudo :切换用户
2.root sudo

7 /etc/passwd

  1. /sbin/nologin 有提示
  2. /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 1031 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 -hdu -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
解决:

  1. 删除交换文件 .2.log.swp
  2. error 定位信息【log 1w多行】
    行号:
    尾行模式 :set nu
    取消行号:set nonu
  3. 常用快捷方式
    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

  1. ip =》hostname
    172.10.100.1 <=> baidu01
  2. 端口:
    1-65535 =》 防火墙决定的

a => b :

  1. ping b_ip 网络ok 可以进行通讯的
  2. 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
  • 归档文件 做一个压缩: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
  • 查端口:

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值