Bootstrap

数据处理与统计分析篇-day02-Linux进阶

day02-Linux进阶

补充昨日内容

Linux基础

文件编辑

命令模式

编辑模式

esc回到命令模式

正常编辑

底行(底线)模式

查看Linux命令帮助文档

# --help   可以查看命令的详细信息
命令名 --help
​
# 例如:   ls --help
​
# man      可以查看命令的主要(简单)信息
man 命令名
​
# 例如
man ls

Linux进阶

一. 权限

权限入门

# 1. 创建用户
useradd 用户名
​
# 2. 给用户设置密码
passwd 用户名
​
# 3. 查看本机所有用户
getent passwd       # get environment
​
# 格式为: 用户名:描述信息(无):组id:用户id::组所在的家目录:Shell解析器.
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
​
​
# 4. 切换用户
su 用户名      # root -> 其它, 无需密码.  其它情况, 需要密码.
​
# 5. 临时借调权限(赋权)
sudo Linux命令    # 有效期一般为: 5 ~ 30分钟
​
# 6. 赋权需要通过root账号, 来设置 /etc/sudoers 文件
vim /etc/sudoers        # 在文件的第 100 行左右设置.
​
# 7. 登出账号
exit 或者 ctrl + D

用户和用户组

用户相关:

useradd [-g] [组名] 用户名
    没有指定祖名, 则: 新建组(组名为用户名)
    指定组名, 就放到指定的组中
passwd 用户名
getent passwd               # 查看所有用户
id 用户名                   # 查看用户信息
# 结果如下  uid=用户id gid=组id 组=用户所在的组
uid=1000(zhangsan) gid=1000(zhangsan) 组=1000(zhangsan)
​
usermod -aG 用户组 用户名     # 把用户添加到指定组
userdel -r 用户名            # 删除用户

用户组相关:

groupadd 组名             # 新建组
groupdel 组名             # 删除组
getent group             # 查看所有组

权限控制

文件或文件夹的用户权限图示:

权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。

数字的细节如下:r记为4,w记为2,x记为1,可以有:

0:无任何权限, 即 ---

1:仅有x权限, 即 --x

2:仅有w权限 即 -w-

3:有w和x权限 即 -wx

4:仅有r权限 即 r--

5:有r和x权限 即 r-x

6:有r和w权限 即 rw-

7:有全部权限 即 rwx

所以751表示: rwx(7) r-x(5) --x(1)

ls -l文件图示

chmod

chmod [-R] 权限 文件或者文件夹路径  
不加[-R]:只修改当前一级, 加[-R]:修改当前和其所有子集
​
chmod u=x,g=w,o=r-x 1.txt
chmod u-w,g-w,o+w 1.txt
chmod 567 1.txt

chown修改拥有者

chown [-R] 用户名:用户组 文件或文件夹路径
chown [-R] 用户名 文件或文件夹路径
chown [-R] :用户组 文件或文件夹路径

二. 实用操作

常用快捷键

ctrl + c    # 取消执行
ctrl + d    # 强制登出
ctrl + l    # 字母L, 清屏, 等价于 clear
ctrl + a    # 光标移动到行首
ctrl + e    # 光标移动到行尾
ctrl + ←    # 光标向前移动1个单词
ctrl + →    # 光标向后移动1个单词
ctrl + r    # 检索
history     # 查看历史命令
!命令前缀    # 根据前缀匹配最近的哪个命令.

安装软件

方式1:yum

# 全称叫: Yellow Dog Updater, Modified, 黄狗更新程序.
它是RPM方式的升级版, 即: 会联网自动检索要安装的 工具, 并会自动解决依赖.
​
# 格式
yum [-y] install | remove | search 要安装的工具名
​
# 解释
-y      需要输入yes or no的时候, 全部输入yes
install 安装
remove  卸载
search  查找并安装, 如果不存在就会自动安装.
​
# 例如:
yum -y install wget
yum -y install lrzsz        # 负责上传 和 下载的.
​
# wget命令, 可以根据http地址, 下载其对应资源.
wget http连接
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.159.tar.gz

方式2: RPM方式

它是IBM公司的RedHat提供的一种包管理器, 全称叫: RedHat Package Management(小红帽包管理器).
会根据下载链接, 去联网下载资源.
​
# 弊端
不能自动解决依赖关系, 需要手动解决依赖.
​
# 例如: 安装MySQL

方式3: 手动下载安装包

# 比较灵活, 可以自己通过windows系统下载安装包, 然后上传到Linux系统中.
# 解压, 修改配置文件即可. 
​
# 例如
安装JDK...

服务管理命令

# systemctl     它可以控制某些软件, 服务的状态, 开启, 关闭...
# 语法
systemctl start | restart | stop | disable | enable | status 服务名
​
# 常见的服务名
sshd        远程连接协议, FinalShell就是通过它连接的虚拟机.(非对称加密)
firewalld   防火墙服务
network     副网络服务
NetworkManager  主网络服务, 如果某天, 你的IP突然变成 127.0.0.1 就是它的问题.
​
# 遇到的问题, 啥也没做, ip突然改成了 127.0.0.1, 怎么办? 
systemctl stop NetworkManager       # 关闭主网络服务
systemctl disable NetworkManager    # 禁用主网络服务开启自启
systemctl restart network           # 重启副网络服务
ifconfig                          # 查看IP即可.

软连接和硬链接

软连接

# 类似于windows的快捷方式
# 格式
ln -s 要被连接的地址 软连接方式
​
# 例如:
ln -s 1.txt 2.txt   # 2.txt就是1.txt的软连接.
​
[root@node1 ~]# ln -s 1.txt  2.txt
[root@node1 ~]# ll
总用量 23176
-rw-r--r--. 1 root root       12 4月  13 16:00 1.txt
lrwxrwxrwx. 1 root root        5 4月  13 16:01 2.txt -> 1.txt
-r--------. 1 root root    68746 3月  15 2020 a.jpg
lrwxrwxrwx. 1 root root       42 4月  13 15:58 ip -> /etc/sysconfig/network-scripts/ifcfg-ens33
-rw-r--r--. 1 root root 23658093 4月  13 15:18 linux-5.10.159.tar.gz
[root@node1 ~]# 
[root@node1 ~]# cat 1.txt 
hello world
[root@node1 ~]# echo 112233 >> 2.txt
[root@node1 ~]# 
[root@node1 ~]# cat 1.txt 
hello world
112233

硬链接

# 作用
相当于 动态 备份文件中的内容, 提高容错率.
​
# 格式
ln  要被连接的地址 硬连接方式       # 不写 -s就是硬链接, 写了就是软连接.
​
# 例如:
ln 1.txt 2.txt    # 2.txt 是 1.txt的硬链接, 无论改哪个文件, 两个文件都会同步一起修改.(删除时不一起)

IP相关

# 查看本机ip
ifconfig
​
# 如何修改ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
​
# 查看主机名, 即: 机器的名字
hostname
​
# 修改主机名.
# 方式1: hostnamectl
hostnamectl set-hostname 新的主机名      # 即刻生效.
​
# 方式2: 修改配置文件
vim /etc/hostname       # 重启有效.
​
# 配置域名映射, 目的是: 把 域名 当做 IP来用.
# windows的配置路径.  C:\Windows\System32\drivers\etc\hosts
192.168.88.161 node1 node1.itcast.cn
​
# Linux配置路径.    vim /etc/hosts
192.168.88.161 node1 node1.itcast.cn
​
# 两个好玩儿的命令.
reboot              # 重启
shutdown -h now     # 关机

网络传输

# 测试网络是否通畅
ping [-c num] 域名
​
# 例如
ping -c 3 www.baidu.com     # ping测试连接, 发送3个数据包
​
# wget  可以联网下载资源.
# 格式
wget url地址
​
# curl 模拟浏览器,向url地址发出请求, 获取响应信息.
curl url地址
​
curl www.baidu.com >> baidu.txt
​
# 端口号, 指的是程序在设备上的唯一标识, 范围: 0 ~ 65535, 其中0~1023尽量不要用.
netstat -anp    # 查看本机所有的端口号, all network port
​
# 例如
netstat -anp | grep sshd    # 查看本机和 sshd服务相关的端口号
netstat -anp | grep 3306    # 查看3306端口号的占用情况

进程相关

# 进程介绍
程序在系统中的表现形式, 即: 每个进程都是一个应用程序,可以理解为是: *.exe
​
# 查看本机所有进程
ps -ef      e:全部进程, f:完全格式展示
​
# 查看本机和某些服务相关的进程
ps -ef | grep sshd
ps -ef | grep mysqld
​
# 强制杀死某些进程
kill -9 进程的pid编号

环境变量

# 查看Linux的环境变量
env     # 来源于: environment, 环境.
​
# 设置变量
变量名=变量值     # 等号两端没有空格.
​
# 如何使用变量值
${变量名}      # 如果是单独用的, 大括号可以省略不写.
​
echo ${变量名}
​
# 如何配置环境变量.
vim /etc/profile
export 变量名=变量值    # 按i进入编辑模式开始修改, 最后 :wq保存退出
​
source /etc/profile   # 刷新配置文件.

上传和下载

# 1. 安装 lrzsz包.
yum -y install lrzsz        # rz: 上传.   sz: 下载.
​
# 2. 上传.        
# 方式1: 在终端命令行处, 写: rz, 然后敲回车.       注意: 中文可能会乱码.
  选中要上传的文件, 上传即可.
  
# 方式2; 拖拽上传.   推荐.
​
​
# 3. 下载.
# 方式1: sz命令方式.              注意: 中文可能会乱码.
​
# 方式2: 选中文件, 右键下载. 

压缩和解压缩

# 了解, 区分压缩协议的好坏, 可以参考3个维度:
1. 压缩比(即: 压缩后文件大小)
2. 压缩速度.    # 写
3. 解压速度.    # 读
​
​
# tarball方式, 压缩 和 解压缩  (速度快, 压缩比大)  
# 细节, 如果加-z了, 则后缀名一般写, *.tar.gz   不加-z, 后缀名一般写 *.tar
# 压缩
tar -zcvf 压缩包名 要被压缩的文件...
​
# 解压
tar -zxvf 压缩包名 -C 解压后的路径
​
# 参数解释:
-z 使用gzip协议, 可以不写, 使用默认压缩方式. (只是归档, 大小可能变大)
-x 解压
-C 解压到指定路径
-c 压缩
-v verbose, 显示详细(过程)
-f file, 压缩文件
​
​
​
# zip方式, 压缩 和 解压缩.      (相对速度慢, 压缩比小) 
# 压缩
zip [-r] 压缩包名.zip 要被压缩的文件或者目录   # -r: 递归
​
# 解压缩
unzip 压缩包名 -d 解压到的路径

shell脚本

vim my.sh
​
# my.sh文件中编写如下内如:
​
#!/bin/bash
​
name='zhangsan'
age=23
​
echo "姓名: ${name}"
echo "年龄: ${age}"
​
# 执行my.sh
方式1
sh my.sh
​
方式2
source my.sh
​
方式3(需要增加权限: chmod 777 my.sh)
相对路径: ./my.sh
绝对路径: /root/day02/my.sh
;