Linux 复习


一、Linux复习

0.网络配置

1.ip addr 查看IP

2.xshell远程连接

xshell和xsftp下载地址 https://www.xshell.com/zh/free-for-home-school/

虚拟机下载地址: https://www.vmware.com

CentOs官网下载 官网:https://www.centos.org/

1).查看自己网段和网关

image-20220915085119494

2).修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#添加IP地址和自己网段相同  老师是192.168.139网段

IPADDR=192.168.139.10

#添加网关 

GATEWAY=192.168.139.2   

#添加域名解析器

DNS1=192.168.139.2

#修改BOOTPROTO="dhpc" 为 static 

BOOTPROTO="static"
#修改ONBOOT="yes"
ONBOOT="yes"  #系统启动的时候网络接口是否有效(yes/no)
3).重启网络

service network restart

4).关闭防火墙

(1)查看防火墙服务的状态

systemctl status firewalld

(2)停止防火墙服务

systemctl stop firewalld

(3)启动防火墙服务

开机自动关闭防火墙

systemctl disable firewalld.service

yum install -y epel-release
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git zip unzip
   -- 设置固定ip地址,重启网络
   -- 用shell工具连接Linux
   -- 关防火墙
   -- 通过yum安装方式安装必要的软件

1.Linux目录结构

FHS 标准图

  • /:根目录

  • boot:bootstrap 系统启动的地方

  • bin:binary 命令(可执行文件),一般用户可用,启动时会用到的命令

  • sbin:system binary 多数是 root 才能用的命令

  • dev:device 设备文件

  • etc:配置文件

  • lib:library 程序动态链接库

  • media:用于挂载本地磁盘或其他存储设备

  • mnt:mount 挂载,挂载其他临时文件系统

  • opt:optional 可选的软件包的安装目录

  • srv:service 服务,服务进程所需的数据文件和一些服务的执行脚本

  • tmp:temporary,临时的,存放各种临时文件

  • root:超级用户的家

  • home:普通用户的家在 home 下建立,如/home/zhengwei 就是 zhengwei 的家

  • usr:user shared resource 或 unix software resource,绝大多数用户工具和应用程序

  • var:variable,可变的,存放不断变化的文件

2.VI/VIM编辑器

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器。

VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM与VI编辑器完全兼容。

2.1一般模式

以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。

常用语法

语法功能描述
yy复制光标当前一行
y数字y复制一段(从第几行到第几行)
p箭头移动到目的行粘贴
u撤销上一步
dd删除光标当前行
d数字d删除光标(含)后多少行
x剪切一个字母,相当于del
X剪切一个字母,相当于Backspace
yw复制一个词
dw删除一个词
shift+6(^)移动到行头
shift+4 ($)移动到行尾
1+shift+g移动到页头,数字
shift+g移动到页尾
数字+shift+g移动到目标行

2.2编辑模式

在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!要等到你按下『i, I, o, O, a, A』等任何一个字母之后才会进入编辑模式。

注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERT或 REPLACE』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。

1)进入编辑模式

按键功能
i当前光标前
a当前光标后
o当前光标行的下一行
I光标所在行最前
A光标所在行最后
O当前光标行的上一行

2)退出编辑模式

按『Esc』键 退出编辑模式,之后所在的模式为一般模式。

2.3指令模式

在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。

在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!

1)基本语法

命令功能
:w保存
:q退出
:!强制执行
/要查找的词n 查找下一个,N 往上查找
:noh取消高亮显示
:set nu显示行号
:set nonu关闭行号
:%s/old/new/g替换内容 /g 替换匹配到的所有内容

2)实操练习

(1)强制退出

:q!

2.4课堂练习

1)创建hello.java

2)完成老师课堂的操作

3.文件目录常用命令

3.1.pwd 显示当前工作目录的绝对路径

pwd:print working directory 打印工作目录

1)基本语法

pwd (功能描述:显示当前工作目录的绝对路径)

2)实操练习

(1)显示当前工作目录的绝对路径

[root@hadoop software]# pwd
/opt/software

ls 列出目录的内容

ls:list 列出目录内容

1)基本语法

ls [选项] [目录或是文件]

2)选项说明

选项功能
-a全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-l长数据串列出,包含文件的属性与权限等等数据;(常用)等价于“ll”

3)显示说明

每行列出的信息依次是: 文件类型与权限 链接数 文件属主 文件属组 文件大小用byte来表示 建立或最近修改的时间 名字

4)实操练习

(1)查看当前目录的所有内容信息

[root@hadoop software]# ls -al
总用量 826140
drwxr-xr-x. 2 root root      4096 8月  18 11:35 .
drwxr-xr-x. 6 root root      4096 8月  18 11:31 ..
-rw-r--r--. 1 root root 312850286 8月   6 15:33 apache-hive-3.1.2-bin.tar.gz
-rw-r--r--. 1 root root 338075860 8月   4 17:09 hadoop-3.1.3.tar.gz
-rw-r--r--. 1 root root 195013152 8月   4 17:28 jdk-8u212-linux-x64.tar.gz
-rw-r--r--. 1 root root      9224 9月  12 2016 mysql57-community-release-el7-9.noarch.rpm

3.2cd 切换目录

cd:Change Directory切换路径

1)基本语法

​ cd [参数]

2)参数说明

参数功能
cd 绝对路径切换路径
cd相对路径切换路径
cd ~或者cd回到自己的家目录
cd -回到上一次所在目录
cd ..回到当前目录的上一级目录
cd -P跳转到实际物理路径,而非快捷方式路径

3)实操练习

(1)使用绝对路径切换到opt目录

[root@hadoop ~]# cd /opt/

(2)使用相对路径切换到software目录

[root@hadoop opt]# cd software/

(3)表示回到自己的家目录,亦即是 /root 这个目录

[root@hadoop software]# cd ~

(4)cd- 回到上一次所在目录

[root@hadoop ~]# cd -
/opt/software

(5)表示回到当前目录的上一级目录,/opt/software上一级目录的意思;

[root@hadoop software]# cd ..

3.3mkdir 创建一个新的目录

mkdir:Make directory 建立目录

1)基本语法

​ mkdir [选项] 要创建的目录

2)选项说明

选项功能
-p创建多层目录

3)实操练习

(1)创建一个目录

[root@hadoop ~]# mkdir bigdata03
[root@hadoop ~]# mkdir bigdata03/group1

(2)创建一个多级目录

[root@hadoop ~]# mkdir -p bigdata04/group1

3.4rmdir 删除一个空的目录

rmdir:Remove directory 移动目录

1)基本语法

​ rmdir 要删除的空目录

2)实操练习

​ (1)删除一个空的文件夹

[root@hadoop ~]# rmdir bigdata03/group1/

3.5 touch 创建空文件

1)基本语法

​ touch 文件名称

2)实操练习

[root@hadoop ~]# touch bigdata03/group1/zhangsan.txt

3.6 cp 复制文件或目录

1)基本语法

cp [选项] source dest (功能描述:复制source文件到dest)

1)选项说明

选项功能
-r递归复制整个文件夹

3)参数说明

参数功能
source源文件
dest目标文件

4)实操练习

(1)复制文件

[root@hadoop ~]# cp bigdata03/group1/zhangsan.txt bigdata04/group1/

(2)递归复制整个文件夹

cp -r bigdata03/group1/ bigdata04/

3.7rm删除文件或目录

1)基本语法

rm [选项] deleteFile (功能描述:递归删除目录中所有内容)

2)选项说明

选项功能
-r递归删除目录中所有内容
-f强制执行删除操作,而不提示用于进行确认。
-v显示指令的详细执行过程

3)实操练习

(1)删除目录中的内容

[root@hadoop ~]# rm bigdata03/group1/zhangsan.txt

(2)递归删除目录中所有内容

[root@hadoop ~]# rm -rf bigdata03/

3.8mv 移动文件与目录或重命名

1)基本语法

(1)mv oldFile newFile

2)实操练习

(1)重命名

[root@hadoop group1]# mv zhangsan.txt lisi.txt

(2)移动文件

[root@hadoop group1]# mv lisi.txt ../group2/

3.9cat 查看文件内容

查看文件内容,从第一行开始显示。

1)基本语法

​ cat [选项] 要查看的文件

2)选项说明

选项功能描述
-n显示所有行的行号,包括空行。

3)经验技巧

一般查看比较小的文件,一屏幕能显示全的。

4)实操练习

​ (1)查看文件内容并显示行号

[root@hadoop group1]# cat -n zhangsan.txt 

3.10tail 输出文件尾部内容

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。

1)基本语法

(1)tail 文件 (功能描述:查看文件尾部10行内容)

(2)tail -n 5文件 (功能描述:查看文件尾部5行内容,5可以是任意行数)

(3)tail -f 文件 (功能描述:实时追踪该文档的所有更新)

2)选项说明

选项功能
-n<行数>输出文件尾部n行内容
-f显示文件最新追加的内容,监视文件变化

3)实操练习

(1)查看文件尾3行内容

[root@hadoop group1]# tail -n 3 zhangsan.txt 

(2)实时追踪该档的所有更新

[root@hadoop group1]# tail -f  zhangsan.txt 

3.11 > 输出重定向和 >> 追加

1)基本语法

(1)ls -l > 文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))

(2)ls -al >> 文件 (功能描述:列表的内容追加到文件aa.txt的末尾)

(3)cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)

(4)echo “内容” >> 文件

2)实操练习

(1)将ls查看信息写入到文件中

[root@hadoop group1]# ls -al >lisi.txt

(2)将ls查看信息追加到文件中

[root@hadoop group1]# ls -al >>lisi.txt

(3)采用echo将hello单词追加到文件中

[root@hadoop group1]# echo hello >>lisi.txt

3.12 history 查看已经执行过历史命令

1)基本语法

​ history (功能描述:查看已经执行过历史命令)

2)实操练习

​ (1)查看已经执行过的历史命令

[root@hadoop group1]# history 

4.压缩解压常用命令

4.1 gzip/gunzip 压缩

1)基本语法

gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

gunzip 文件.gz (功能描述:解压缩文件命令)

2)经验技巧

(1)只能压缩文件不能压缩目录

(2)不保留原来的文件

(3)同时多个文件会产生多个压缩包

3)实操练习

(1)gzip压缩

[root@hadoop ~]#ll
test.java

[root@hadoop ~]# gzip test.java
[root@hadoop ~]#ll
test.java.gz

(2)gunzip解压缩文件

[root@hadoop ~]# gunzip test.java.gz
[root@hadoop ~]# ls
test.java

4.2zip/unzip 压缩

1)基本语法

zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)

unzip [选项] XXX.zip (功能描述:解压缩文件)

2)选项说明

zip选项功能
-r压缩目录
unzip选项功能
-d<目录>指定解压后文件的存放目录

**3)**经验技巧

zip 压缩命令在window/linux都通用,可以压缩目录且保留源文件。`

**4)**实操练习

(1)压缩 test1.java 和test2.java,压缩后的名称为test.zip

yum install zip unzip
[root@hadoop ~]# zip test.zip test1.java test2.java 
  adding: test1.java (stored 0%)
  adding: test2.java (stored 0%)
[root@hadoop ~]# ll
test1.java
test2.java
test.zip

(2)解压 test.zip

[root@hadoop ~]#unzip test.zip

(3)解压test.zip到指定目录-d

[root@hadoop ~]#unzip test.zip -d /opt

4.3 tar 打包

1)基本语法

tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)

2)选项说明

选项功能
-c产生.tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包.tar文件
-C解压到指定目录

3)实操练习

(1)压缩多个文件

[root@hadoop ~]#tar -zcvf test.tar.gz test1.java test2.java
[root@hadoop ~]#ls
test1.java test2.java   test.tar.gz

(2)压缩目录

[root@hadoop ~]# tar -zcvf bigdata03.tar.gz bigdata03/

(3)解压到当前目录

[root@hadoop ~]# tar -zxvf test.tar.gz

(4)解压到指定目录

[root@hadoop ~]# tar -zxvf test.tar.gz -C /opt

5.Linux 文件类型和权限

首先,我们用命令 ls -alh ~ 来查看一下文件的详细信息。

图片描述

从屏幕打印出来的信息,以空格为分组标志,从左到右依次表示:

文件类型和权限、硬链接数、所有者、所属组、文件大小、最后修改时间、文件名

还有一个比较重要的概念就是 Linux 里面一切皆文件,你可能暂时不能理解这个概念,不过没关系,只需要记住这个概念即可。

5.1文件类型

第一个字符代表的就是文件的类型,文件类型主要分为以下 7 种,大家只需要了解前三种即可,后面的文件一般不常使用:

  • 普通文件 -:文本文件、数据文件、可执行程序等等都可作为普通文件存储。

  • 目录 d:目录中按照名字来对其它文件进行引用。

  • 符号链接 l:也叫做软链接,通过名字指向文件。

    字符设备文件 c:字符设备文件让相关的驱动程序作为输入输出的缓冲。

    块设备文件 b:块设备文件由处理块数据的 I/O 驱动程序使用,同时让内核提供缓冲。

    本地域套接口 s:实现进程间通信的连接,本地域套接口由系统调用 socket 创建,用 rmunlink 删除。

    有名管道(FIFO)p:让运行在同一主机上的两个进程相互通信,和 socket 相似,用 mknod 创建,用 rm 来删除。

图片描述

5.2文件权限

除去文件类型外,后面的字符,以三个为一组,且均为 rwx 的三个参数组合,代表了 Linux 的 读、写、执行 三种权限控制。r 代表可读(read)、w 代表可写(write)、x 代表可执行(execute)。要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 -

其中三位一组分别是 所有者的权限(U,即 user)、所属组的权限(G,即 group)、其他用户的权限(O,即 other)

5.3权限编码

数字字符文件/目录
4r查看文件内容/查看目录下的文件或目录名称
2w修改文件内容/在目录下增删改
1x执行一些程序或脚本/可以用命令切换目录
八进制二进制权限
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx
5.3.1chmod 改变权限

chmod 命令用于改变 Linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令修改权限有三种用法。一种是字符形式来设置,一种是包含操作符表达式的文字设置,另一种是包含数字的数字设置。

1)基本语法

chmod +权限+文件或者目录

2)实操练习

(1)使用字符形式修改文件为全部可读、可写、可执行权限

[root@hadoop ~]# chmod u=rwx,g=rwx,o=rwx test1.java

(2)使用操作符形式修改权限修改文件为u可读、可写、可执行,g可读、可写权限,o可读权限

[root@hadoop ~]# chmod u+rwx,g-x,o-wx test1.java

(3)使用数字修改权限

# 修改文件权限为 `rwxrwxrwx`
chmod 777 install.log
# 修改文件权限为 `rwx------`
chmod 700 install.log
# 修改文件权限为 `rwxr-xr-x`
chmod 755 install.log
5.3.2chown 改变所有者

chown 命令是 change owner(改变所有人) 的缩写,主要用于改变文件或者目录的所有权,语法和 chmod 类似。chown 需要超级用户 root 的权限才能执行此命令。

1)基本语法

chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)

2)选项说明

选项功能
-R递归操作

3)实操练习

(1)修改文件所有者

[root@hadoop ~]# chown lzh test1.java

(2)递归改变文件所有者和所有组

[root@hadoop ~]# chown -R lzh:root bigdata03/
5.3.3chgrp 改变所有组

1)基本语法

​ chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组)

2)实操练习

​ (1)修改文件的所属组

[root@hadoop ~]# chgrp -R lzh test1.java

6.Linux用户管理

6.1useradd 添加新用户

1)基本语法

​ useradd 用户名 (功能描述:添加新用户)

​ useradd -g 组名 用户名 (功能描述:添加新用户到某个组)

2)实操练习

​ (1)添加一个用户

[root@hadoop ~]# useradd lzh
[root@hadoop ~]# ll /home/

6.2 passwd 设置用户密码

1)基本语法

​ passwd 用户名 (功能描述:设置用户密码)

2)实操练习

​ (1)设置用户的密码

[root@hadoop ~]# passwd 123456

6.3 id查看用户是否存在

1)基本语法

​ id 用户名

2)实操练习

​ (1)查看用户是否存在

[root@hadoop ~]# id lzh

6.4 su 切换用户

su: swith user 切换用户

1)基本语法

su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)

su - 用户名称 (功能描述:切换到用户并获得该用户的环境变量及执行权限)

**2)**实操练习

​ (1)切换用户

[root@hadoop ~]# su lzh
[lzh@hadoop root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_212/bin:/opt/hadoop-3.1.3/bin:/opt/hadoop-3.1.3/sbin:/root/bin:/opt/jdk1.8.0_212/bin:/opt/hadoop-3.1.3/bin:/opt/hadoop-3.1.3/sbin:/opt/jdk1.8.0_212/bin:/opt/hadoop-3.1.3/bin:/opt/hadoop-3.1.3/sbin:/opt/jdk1.8.0_212/bin:/opt/hadoop-3.1.3/bin:/opt/hadoop-3.1.3/sbin


[root@hadoop ~]# su - lzh
[lzh@hadoop root]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8.0_212/bin:/opt/hadoop-3.1.3/bin:/opt/hadoop-3.1.3/sbin:/home/lzh/.local/bin:/home/lzh/bin

6.5 userdel 删除用户

1)基本语法

​ (1)userdel 用户名 (功能描述:删除用户但保存用户主目录)

​ (2)userdel -r 用户名 (功能描述:用户和用户主目录,都删除)

2)选项说明

选项功能
-r删除用户的同时,删除与用户相关的所有文件。

3)实操练习

(1)删除用户但保存用户主目录

[root@hadoop ~]#userdel lzh
[root@hadoop ~]#ll /home/

(2)删除用户和用户主目录,都删除

[root@hadoop ~]#useradd zhangsan
[root@hadoop ~]#ll /home/
[root@hadoop ~]#userdel -r zhangsan
[root@hadoop ~]#ll /home/

6.6 who 查看登录用户信息

1)基本语法

​ (1)whoami (功能描述:显示自身用户名称)

(2)who am i (功能描述:显示登录用户的用户名以及登陆时间)

2)实操练习

​ (1)显示自身用户名称

[root@hadoop ~]# whoami

(2)显示登录用户的用户名

[root@hadoop ~]# who am i

6.7usermod 修改用户

1)基本语法

usermod -g 用户组 用户名

2)选项说明

选项功能
-g修改用户的初始登录组,给定的组必须存在。默认组id是1。

3)实操练习

(1)将用户加入到用户组

[root@hadoop ~]# usermod -g root  lzh

6.8 groupadd 新增组

1)基本语法

groupadd 组名

2)实操练习

​ (1)添加一个group1组

[root@hadoop ~]# groupadd group1

6.9 groupdel 删除组

1)基本语法

groupdel 组名

**2)**实操练习

​ (1)删除组

[root@hadoop ~]# groupdel  group1

6.10 groupmod 修改组

1)基本语法

groupmod -n 新组名 老组名

1)选项说明

选项功能描述
-n<新组名>指定工作组的新组名

3)实操练习

​ (1)修改group2组名称为group3

[root@hadoop ~]# groupadd  group2
[root@hadoop ~]# groupmod -n  group3 group2

6.12 cat /etc/group 查看创建了哪些组

1)基本操作

[root@hadoop ~]# cat  /etc/group

7.Linux查找文件

7.1find查找命令

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

1)基本语法

​ find [搜索范围] [选项]

2)选项说明

选项功能
-name<查询方式>按照指定的文件名查找模式查找文件
-user<用户名>查找属于指定用户名所有文件
-size<文件大小>按照指定的文件大小查找文件

3)案例练习

(1)按文件名:根据名称查找/root下的.txt文件。

[root@hadoop ~]# find /root -name "*.txt"

(2)按拥有者:查找/root目录下,用户名称为root的文件

[root@hadoop ~]# find /root -user root

(3)按文件大小:在/目录下查找大于20M的文件(+n 大于 -n小于 n等于)

[root@hadoop ~]find / -size +20M

7.2 grep 过滤查找及“|”管道符

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

1)基本语法

grep 选项 查找内容 源文件

2)选项说明

选项功能
-n显示匹配行及行号。

3)案例练习

​ (1)查找某文件在第几行

[root@hadoop ~]# ls | grep -n xxx

8.Linux磁盘进程命令

8.1 df 查看磁盘空间使用情况

df: disk free 空余硬盘

1)基本语法

​ df 选项 (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)

2)选项说明

选项功能
-h以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

3)案例实操

​ (1)查看磁盘使用情况

[root@hadoop ~]# df -h

8.2ps 查看当前系统进程状态

ps:process status 进程状态

1)基本语法

​ ps -aux | grep xxx (功能描述:查看系统中所有进程)

​ ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)

2)选项说明

选项功能
-a选择所有进程
-u显示所有用户的所有进程
-x显示没有终端的进程

3)功能说明

(1)ps -aux显示信息说明

USER:该进程是由哪个用户产生的

PID:进程的ID号

%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ:该进程占用虚拟内存的大小,单位KB;

RSS:该进程占用实际物理内存的大小,单位KB;

TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台

START:该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名

(2)ps -ef显示信息说明

UID:用户ID

PID:进程ID

PPID:父进程ID

C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

STIME:进程启动的时间

TTY:完整的终端名称

TIME:CPU时间

CMD:启动进程所用的命令和参数

4)经验技巧

如果想查看进程的CPU占用率和内存占用率,可以使用aux;

如果想查看进程的父进程ID可以使用ef;

8.3 kill 终止进程

1)基本语法

​ kill [选项] 进程号 (功能描述:通过进程号杀死进程)

​ killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

2)选项说明

选项功能
-9表示强迫进程立即停止

3)案例实操

​ (1)强制杀死6666进程

[root@hadoop~]# kill -9 6666

9.LinuxRPM

RPM 是Red-Hat Package Manager(红帽软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始是开放式的,包括OpenLinux、S.u.S.E.以及Turbo Linux等的分发版本都有采用,类似windows里面的setup.exe,可以算是公认的行业标准了。

9.1 RPM查询命令(rpm -qa)

1)基本语法

rpm -qa (功能描述:查询所安装的所有rpm软件包)

2)经验技巧

由于软件包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包

3)案例实操

​ (1)查询xxx软件安装情况

[root@hadoop~]# rpm -qa |grep xxx

9.2RPM卸载命令(rpm -e)

1)基本语法

(1)rpm -e RPM软件包

(2) rpm -e --nodeps 软件包

2)选项说明

选项功能
-e卸载软件包
--nodeps卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作了。

3)案例实操

​ (1)卸载xxx软件

[root@hadoop~]# rpm -e xxx.rpm

9.4 RPM安装命令(rpm -ivh)

1)基本语法

​ rpm -ivh RPM包全名

2)选项说明

选项功能
-i-i=install,安装
-v-v=verbose,显示详细信息
-h-h=hash,进度条
--nodeps--nodeps,不检测依赖进度

3)案例实操

​ (1)安装xxx软件

[root@hadoop~]# rpm -ivh xxx.rpm

10.Linux YUM

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

**1)**基本语法

​ yum [选项] [参数]

**2)**选项说明

选项功能
-y对所有提问都回答“yes”

**3)**参数说明

参数功能
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
clean清理yum过期的缓存
deplist显示yum软件包的所有依赖关系

**4)**案例实操实操

​ (1)采用yum方式安装wget

[root@hadoop ~]#yum -y install wget

二、Linux进阶-》Shell编程

1.课程导学

1.1什么是Shell

Shell是一个命令行解析器,它是用户使用 Linux 的桥梁。

1.2为什么要学Shell

1)大数据程序员:编写Shell程序管理大数据集群,掌握大数据集群的常用脚本编写(集群启动,关闭,状态等脚本编写)

2)后端程序员:根据工作需求,编写脚本对程序后台服务器进行维护

3)运维工程师:编写Shell脚本对服务器进行管理等

1.3查看Linux提供的解析器

[root@bigdata04 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

[root@bigdata04 bin]# ll |grep bash
-rwxr-xr-x.   1 root root    964536 4月   1 2020 bash
lrwxrwxrwx.   1 root root         4 9月  14 15:55 sh -> bash

[root@bigdata04 bin]# echo $SHELL
/bin/bash

2.Shell初体验

2.1创建hello.sh文件

[root@bigdata04 shellTest]# touch hello.sh

2.2编辑脚本

[root@bigdata04 shellTest]# vim hello.sh

2.3注意:脚本以#!/bin/bash开头(指定解析器)

#!/bin/bash
echo "helloworld"

2.4脚本执行

基本语法

1)sh+脚本路径

2)直接脚本路径

3)实操练习

[root@bigdata04 shellTest]# sh hello.sh 
[root@bigdata04 shellTest]# sh /root/shellTest/hello.sh

[root@bigdata04 shellTest]# ./hello.sh 
[root@bigdata04 shellTest]# /root/shellTest/hello.sh

4)注意

sh+脚本路径本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。路径直接执行本质是脚本需要自己执行,所以需要执行权限。

3.Shell变量

3.1系统变量

$HOME、$SHELL、$USER等

1)查看某系统变量

[root@bigdata04 ~]# echo $HOME

3.2用户自定义变量

1)基本语法

定义变量:变量=值

撤销变量:unset 变量

2)规则说明

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

(4)变量的值如果有空格,需要使用双引号或单引号括起来

3)实操练习

(1) 定义变量a=1

[root@bigdata04 ~]# a=1

(2)撤销变量a

[root@bigdata04 ~]# unset a

(3)bash默认类型为字符串,无法直接运算

[root@bigdata04 ~]# b=1+1
[root@bigdata04 ~]# echo $b
1+1

(4)变量的值如果有空格,需要使用双引号或单引号括起来

[root@bigdata04 ~]# c=i love you 
bash: love: 未找到命令
[root@bigdata04 ~]# c="i love you" 

(5)把变量提升为全局环境变量,给其他Shell程序使用

export 变量名
[root@bigdata04 ~]# vim hello.sh

在hello.sh中增加$d

#!/bin/bash
echo "hello"
echo $d

执行hello.sh

[root@bigdata04 testShell]# ./hello.sh 

全局变量设置

[root@bigdata04 testShell]# export d
./helloworld.sh 

3.3特殊变量

1) $n(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

实操练习

[root@bigdata04 testShell]# touch a.sh
[root@bigdata04 testShell]# vim a.sh
#!/bin/bash
echo "文件名=$0,第一个参数=$1,第二个参数=$2"
[root@bigdata04 testShell]# sh a.sh zhangsan lisi

2)$#(功能描述:获取所有输入参数个数,常用于循环)。

实操练习

[root@bigdata04 testShell]# vim a.sh
#!/bin/bash
echo "文件名=$0,第一个参数=$1,第二个参数=$2"
echo "参数个数=$#"
[root@bigdata04 testShell]# sh a.sh zhangsan lisi

3)$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

[root@bigdata04 testShell]# vim a.sh
#!/bin/bash
echo "文件名=$0,第一个参数=$1,第二个参数=$2"
echo "参数个数=$#"
echo "所有的参数=$*"
[root@bigdata04 testShell]# sh a.sh zhangsan lisi

4)$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

4.Shell运算

1)基本语法

“$((运算式))”或“$[运算式]”

2)实操练习

案例1:计算(2+2)*2的值

[root@bigdata04 testShell]# e=$[(2+2)*2]
[root@bigdata04 testShell]# echo $e

案例2:编写sum.sh计算2个数的和(从命令行传入)

[root@bigdata04 testShell]#touch sum.sh
[root@bigdata04 testShell]#vim sum.sh
#!/bin/bash
sum=$[($1+$2)]
echo $sum

5.Shell条件判断

1)基本用法

[ 判断条件 ](注意判断条件前后要有空格)

2)常用判断条件

(1)两个整数之间比较

-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
-a (and)
-o (or)

(2)按照文件权限进行判断

-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)

(3)按照文件类型进行判断

-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)

3)实操练习

案例1:判断1是否等于2

[root@bigdata04 ~]# [ 1 -eq 2 ]
[root@bigdata04 ~]# echo $?
1

案例2:判断hello.sh是否有写的权限

[root@bigdata04 ~]# [ -w hello.sh ]
[root@bigdata04 ~]# echo $?
0

案例3:判断hello.sh是否存在

[root@bigdata04 ~]# [ -e hello.sh ]
[root@bigdata04 ~]# echo $?
0

6.Shell流程控制

6.1if语句

1)基本语法

if [ 条件判断式 ]

then

程序

elif [ 条件判断式 ]

then

​ 程序

else

​ 程序

fi

注意:[ 条件判断式 ],中括号和条件判断式之间必须有空格,if后要有空格

2)案例练习

案例1:编辑一个shell脚本,输入一个分数,大于60为及格,0-60为不及格,其余为输入有误。

[root@bigdata04 testShell]# touch if.sh
[root@bigdata04 testShell]# vim if.sh
#!/bin/bash
if [ $1 -ge 60 ]
then 
	echo "你及格了,很棒"
else
	echo "没有及格,需要努力"
fi

6.2case语句

1)基本语法

case $变量名 in

"值1")

如果变量的值等于值1,则执行程序1

;;

"值2")

如果变量的值等于值2,则执行程序2

;;

…省略其他分支…

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

注意事项:

(1)case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。

(2)双分号“;;”表示命令序列结束,相于java中的break。

(3)最后的“*)”表示默认模式,相当于java中的default。

2)实操练习

案例1:当命令行参数为1的时候,输出今天是周一,为2的时候输出今天是周二,其他情况输出other

#!/bin/bash
case $1 in
1)
echo 今天是周一;;
2)
echo 今天是周二;;
*)
echo other ;;
esac

6.3for循环

1)基本语法1

for (( 初始值;循环控制条件;变量变化 ))

do

程序

done

基本语法2

for 变量 in 值1 值2 值n

do

程序

done

2)实操练习

案例1:计算1-100的数求和

#!/bin/bash
for (( i=0;i<=100;i++ ))
do
sum=$[$sum+$i]
done
echo $sum

案例2:计算1-n求和,n为控制台录入

#!/bin/bash
for (( i=0;i<=$1;i++ ))
do
sum=$[$sum+$i]
done
echo $sum

案例3:打印输出所有参数

#!/bin/bash
for i in $*
do
echo "my name is $i"
done

6.4while循环

1)基本语法

while [ 条件判断式 ]

do

程序

done

2)案例练习

#!/bin/bash
sum=0
i=0
while [ $i -le 100 ]
do
        sum=$[$sum+$i]
        i=$[$i+1]
done
echo $sum

7.read读取控制台输入

1)基本语法

read(选项)(参数)

2)选项说明

-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)

参数

​ 变量:指定读取值的变量名

3)实操练习

案例1:读取控制台两个数并求和

#!/bin/bash
read  -p "请输入第一个数" a
read  -p "请输入第二个数" b

sum=$[$a+$b]
echo "两个数的和为$sum"

8.Shell函数

Shell编程和其他编程语言一样,有系统函数,也可以自定义函数

8.1系统函数

8.1.1 basename

1)基本语法

basename [string / pathname] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

选项:

suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

2)实操练习

[root@localhost testShell]# basename /root/testShell/case.sh
case.sh
[root@localhost testShell]# basename /root/testShell/case.sh .sh
case
8.1.2 dirname

1)基本语法

​ dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

2)实操练习

[root@localhost testShell]# dirname /root/testShell/for.sh 
/root/testShell

8.2自定义函数

1)基本语法

function 函数名(){

​ 函数体

}

注意:必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先编译。

2)案例实操

案例1:编写getsum函数计算两个命令行输入数字的和

#!/bin/bash
function getsum(){
        sum=$[$1+$2]
        echo $sum
}

read -p "请输入第一个数: " n1;
read -p "请输入第二个数: " n2;
getsum $n1 $n2;

9.cut命令

cut的工作就是“剪”,负责在文件中剪切数据。

1)基本用法

cut [选项参数] 文件名

2)选项说明

选项功能
-f列号,提取第几列
-d分隔符,按照指定分隔符分割列
-c指定具体的字符

3)实操练习

案例1:切割出cut.txt文件第2列

[root@localhost testShell]# touch test.txt
[root@localhost testShell]# vim test.txt
疫 我
情 想
快 开
过 学
去 了
[root@localhost testShell]# cut -d " " -f 2 test.txt

案例2:过滤出test.txt中的"我"字

[root@localhost testShell]# cat test.txt |grep "我"| cut -d " " -f 2

10.Linux面试题

10.1 写出Linux常用命令,至少10个(百度)

10.2 shell脚本里如何检查一个文件是否存在并给出提示(百度)

10.3 请用指令找出当然文件夹(/home)下所有文本文件中包含有"cat"字符的文件的名称(金山)

linux

评论