2021韩顺平一周学会Linux 课程笔记

2022/10/1~2022/10/8 确实有些匆忙,课程的一些定制篇跳过了。下面是随之记录的内容,分享一下。

Linux目录结构

  • linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录。
  • 一切皆文件。

具体的目录结构

约定俗成

  • /bin (/usr/bin、/usr/local/bin)
    • 是Binary的缩写,这个目录存放着最经常使用的命令
  • /sbin(/usr/sbin、/usr/local/sbin)
    • s就是Super User的意思,这里存放系统管理员使用的系统管理程序
  • /home
    • 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
  • /root
    • 该目录为系统管理员,也称作超级权限者的用户主目录
  • /lib
    • 系统开机所需要最基本的动态链接库,其作用类似于windows下的dll文件。几乎所有应用程序都要用到这些共享库。
  • /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里会存放一些文件。
  • /etc
    • 所有的系统管理所需要的配置文件和子目录
    • 比如安装了mysql,那么my.conf会放在这个目录下
  • /usr
    • 用户的很多应用程序和文件都会放在这个目录下,类似于windows下的program files目录
  • /boot
    • 存放的是启动Linux时的核心文件。包括一些连接文件和镜像文件
  • /proc
    • 这个目录是虚拟目录。它是系统内存的映射,访问这个目录来获取系统信息
  • /srv
    • service缩写,存放一些服务启动之后需要提取的数据
  • /sys
    • 安装了2.6内核中新出现的一个文件系统sysfs
  • /tmp
    • 存放临时文件
  • /dev
    • 类似windows下的设备管理器,把所有的硬件用文件的形式存储
  • /media
    • linux系统会自动识别一些设备,例如u盘、光驱等,识别后,linux会把识别的设备挂载到这个目录下
  • /mnt
    • 系统提供该目录是为了让用户临时挂载别的文件系统
    • 我们可以将外部的存储挂载到/mnt上,然后进入该目录就可以查看里面的内容
    • 如:将d:/myshare挂载至/mnt/hgfs/myshare
  • /opt
    • 这是给主机额外安装软件所存放的目录(安装包目录)
    • 如安装oracle数据库就可放在该目录下,默认为空
  • /usr/local
    • 这是另一个给主机额外安装软件所安装的目录(软件目录)
  • /var
    • 这个目录中存放着在不断扩充的东西
    • 将经常被修改的文件/目录放在这个目录之下.包含各种日志文件
  • selinux
    • security-enhanced linux
    • 安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置

在这里插入图片描述

目录的相关命令

1.cd     用于切换目录
2.cd .   未进行切换目录。 因为'.'代表当前路径
3.cd ..  切换到当前目录的上一级目录。'..'代表上一级目录
4.cd ~   切换到用户的家目录
5.cd -   切回到上一次所在的目录
4.pwd    查看自己目前所处的位置

vi和vim

各种模式的相互切换

在这里插入图片描述

快捷键

在这里插入图片描述

开机重启和用户登录注销

关机&重启

  • 基本介绍
    • shutdown -h now 立刻关机
    • shutdown -h 1 一分钟后关机
    • shutdown -r now重启
    • halt 关机
    • reboot 重启
    • sync把内存的数据同步到磁盘
  • 注意细节
    • 重启或关闭系统,首先要运行sync命令,把内存中的数据写入磁盘
    • 目前的shutdown/reboot/halt 等命令均默认执行sync

用户登录&注销

  • 基本介绍
    • 尽量少用root账号,避免误操作
    • 普通用户登录后再用"su - 用户名"命令来切换成系统管理员
    • 命令行下输入logout注销
  • 使用细节
    • logout注销指令在图形运行级别无效。在运行级别3下有效

用户管理

Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,并以这个账号的身份进入系统

添加用户

useradd 用户名

细节说明

  1. 当创建用户成功后,会自动创建和用户同名的家(home)目录
  2. 也可以通过useradd -d 指定目录 新的用户名给新创建的用户指定家目录
    d就是directory

指定/修改密码

passwd 用户名

细节说明

  1. 如果不加用户名。那么默认改变当前用户的密码

删除用户

userdel 用户名

应用案例

  1. 删除用户,但是保留其home目录下的内容
    userdel king
  2. 删除用户和他的主目录
    userdel -r king

-r recurisive 递归

查询用户信息指令

id 用户名

切换用户

如果当前用户权限不够,可以通过 su - 用户名指令切换到高权限用户

su - 切换用户名

细节说明

  1. 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
  2. 当需要返回到原来用户时,使用exit/logout指令

查看当前用户/登录用户

whoami 查看当前操作的用户
who am i 查看第一次登录的用户名

用户组

类似于角色,系统可以对有共性(权限)的多个用户进行统一的管理

必须由root用户创建

groupadd 组名   新增组
groupdel 组名   删除组
groupmod -n 新组名 旧组名  改组名

useradd -g 用户组 用户名 增加用户时直接加上组
usermod -g 用户组 用户名 为用户修改所在组
usermod -d 目录名 用户名 改变该用户登录的初始目录

相关的文件

  • /etc/passwd
    • 用户的配置文件,记录用户各种信息
    • 每行的含义->用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
  • /etc/shadow
    • 口令的配置文件
    • 每行的含义->登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group
    • 组的配置文件
    • 每行的含义->组名:口令:组标识号:组内用户列表

实用指令

指定运行级别

常用运行级别是3和5. 可以指定默认运行级别

  • 0:关机
  • 1:单用户【可找回丢失密码】
  • 2:多用户状态,无网络服务
  • 3:多用户状态,有网络服务
  • 4:系统未使用,保留给用户
  • 5:图形界面
  • 6:系统重启

切换运行级别 init [0|1|2|3|4|5|6]

centos7下对应的运行级别

# /etc/inittab
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
  • systemctl get-default查看现在默认的运行级别
  • systemctl set-default TARGET.target 设置默认运行级别

帮助指令

man

man [命令或配置文件](功能描述:获得帮助信息)

man ls

help

help 命令(功能描述:获得shell内置命令的帮助信息)

文件目录类

pwd

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

ls

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

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

常用选项

  • -a:显示当前目录所有的文件和目录,包含隐藏的
  • -l:以列表的方式显示信息

cd

切换到指定目录

cd [参数]

特殊

  • cd ~cd:回到当前用户的家目录
  • cd ..:回到上一级目录

mkdir

创建目录

mkdir [选项] 要创建的目录

常用选项

  • -p创建多级目录

rmdir

删除空目录

rmdir [选项] 要删除的空目录

使用细节

  • rmdir删除的是空目录,要求这个目录下没有子文件也没有文件夹
  • 如果需要删除非空目录,需要使用rm -rf 要删除的目录
    例如rm -rf /home/animal

touch

创建空文件

touch 空文件名称

cp

拷贝文件到指定目录

cp [选项] source dest

常用选项

  • -r递归复制整个文件夹

使用细节

  • 使用\cp强制覆盖不提示

rm

删除文件或目录

rm [选项] 要删除的文件或目录

常用选项

  • -r递归删除
  • -f强制删除

mv

移动文件与目录 或重命名

mv oldFileName newFileName (重命名)
mv /temp/movefile /targetFolder (移动文件)

cat

查看文件内容

cat [选项] 要查看的文件

常用选项

  • -n显示行号

使用细节

  • cat只能浏览文件,而不能修改文件
  • 为了浏览方便,一般会使用管道命令 | more

管道命令:把前面命令的结果交给下一个命令处理

more

一个基于VI编辑器的文本过滤器

more 要查看的文件
操作功能说明
space向下翻一页
enter向下翻一行
q立刻离开
ctrl+f向下滚动一个屏
ctrl+b返回上一屏
=输出当前行号
:f输出文件名和当前行号

less

分屏查看文件,对大型文件有较高的效率

less 要查看的文件
操作功能说明
space向下翻一页
[pagedown]向下翻一页
[pageup]向上翻一页
/字串向下搜寻[字串];n:向下查找,N:向上查找
?字串向上搜寻[字串];n:向上查找,N:向下查找
q立刻离开

echo

输出内容到控制台

echo [选项] [输出内容]

案例

  • echo $PATH输出环境变量
  • echo $HOSTNAME输出主机名
  • echo hello,world

head/tail

显示文件开头/结尾的部分内容,默认前10行

head 文件名
head -n 5 文件名 前5行
tail 文件名
tail -n 5 文件名 后5行
tail -f 文件名 实时监控文件追加的内容

>/>>

>输出重定向 >>追加

ls -l > 文件 (列表的内容写入文件(覆盖))
ls -l >> 文件 (列表的内容追加进文件)
cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
echo "内容" >> 文件

ln

软链接,存放其他文件的路径 ln->link

ln -s [原文件或目录] [软连接名] (给文件创造一个软连接)
rm 软连接名 (删除软连接)

细节说明

  • 使用pwd查看目录时,看到的是软连接所在目录

history

查看已经执行的命令,也可以执行某个历史命令

history (显示所有历史命令)
history 10 (显示近期10个历史命令)
!10 执行历史中第10条命令

时间日期类

date

显示当前日期

date 
date +%Y
date +%m
date +%d
date "+%Y-%m-%d %H-%M-%S"

设置日期

date -s 字符串时间

date -s 2020-11-03 20:02:10

cal

查看日历

cal [选项]

案例

  • cal显示当前日历
  • cal 2020显示2020年日历

搜索查找类

find

从指定目录向下递归地遍历其各个子目录并显示

find [搜索范围] [选项]
选项功能
-name按照指定文件名查找模式
-user查找属于指定用户的文件
-size按指定大小查找(单位可以是M,G,k)

案例

  • find /home -name *.java 在/home目录下查找java文件
  • find /opt -user jack 在/opt目录下查找属于jack的文件
  • find / -size +200M查找整个linux系统下大于200M的文件
    +n大于n,-n小于n,n等于n

locate

快速定位文件路径,使用前需要执行updatedb

updatedb (locate基于数据库查询,必须定期更新)
locate 文件名

which

查看某个指令在哪个目录下

which ls

grep与|

grep过滤查找,|表示将前一个命令的结果传递给后面的命令处理

grep [选项] 查找内容 源文件
选项功能
-n显示行号
-i忽略字母大小写

压缩和解压类

gzip/gunzip

gzip 文件
gunzip 文件

zip/unzip

zip [选项] xxx.zip 将要压缩的内容
unzip [选项] xxx.zip

常用选项

  • zip -r 递归压缩,压缩目录
  • unzip -d <目录> 指定解压后文件的存放目录

案例

  • zip -r myhome.zip ~/将home目录及其子文件和子文件夹都压缩
  • unzip -d /opt/tmp myhome.zip 将myhome.zip解压到/opt/tmp下

tar

打包指令,生成.tar.gz文件

tar [选项] xxx.tar.gz 打包的内容
选项功能
-c产生.tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包.tar文件

案例

  • tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
    将后面的两个文件压缩成pc.tar.gz
  • tar -zcvf myhome.tar.gz /home/
  • tar -zxvf pc.tar.gz
  • tar -zxvf myhome.tar.gz -C /opt/tmp
    将文件解压至/opt/tmp

组管理和权限管理

在linux中的每个用户必须属于一个组,不能独立于组外。

在linux中每个文件都有所有者,所在组,其他组的概念。

文件/目录所有者

  • 查看文件所有者
    ls -ahl
  • 修改文件所有者(单独修改文件所有者,不会影响其所在组)
    chown 用户名 文件名
    参数 -R 递归执行
  • 修改文件所在组
    chgrp 组名 文件名
    参数 -R 递归执行

组的创建

  • 创建组
    groupadd monster
  • 创建一个用户并指定组
    useradd -g monster tom

权限的基本介绍

-rw-r--r--   1 root root     21 Oct  4  2022 hello.txt

-rw-r--r--说明

  • 第0位 文件类型
    • l是链接
    • d是目录
    • c是字符设备文件,如鼠标/键盘
    • b是块设备,如硬盘
    • - 是文件
  • 第1~3位 文件所有者的权限
  • 第4~6位 同组用户的权限
  • 第7~9位 其他组用户的权限

其他说明

  • 1 文件:硬连接数或目录:子目录数
  • root 用户
  • root 组
  • 21 文件大小(单位:字节)
  • Oct 4 2022 最后修改时间
  • hello.txt 文件名

rwx权限详解

  • rwx作用于文件
    • r代表可读
    • w代表可写
      (不代表可删除,可删除文件的前提是对此文件所在目录具有写权限)
    • x代表可执行
  • rwx作用于目录
    • r代表可读,可以使用ls查看目录内容
    • w代表可写,可以修改。可在目录内创建+删除+重命名目录
    • x代表可执行,即可以进入该目录

可以用数字表示;r=4,w=2,x=1;rwx=4+2+1=7

修改权限

chmod(全称:change mode);控制用户对文件的权限的命令

  1. +-=变更权限
    u所有者;g所有组;o其他人;a所有人(即u+g+o)
    1. chmod u=rwx,g=rx,o=x 文件/目录
    2. chmod o+w 文件/目录
    3. chmod a-x 文件/目录
  2. 通过数字变更权限
    r=4 w=2 x=1
    1. chmod u=rwx,g=rx,o=x 文件/目录相当于chmod 751 文件/目录
    2. 示例:
      /home/abc.txt文件的权限修改成rwxr-xr-x
      chmod 755 /home/abc.txt

修改文件所有者

chown newowner 文件/目录 (改变所有者)
chown newowner:newgroup 文件/目录 (改变所有者和所在组)
参数 -R:如果是目录,则递归生效

定时任务调度

crontab循环定时任务

crontab 进行定时任务的设置

crontab [选项]
选项功能
-e编辑crontab定时任务
-l查询crontab定时任务
-r删除当前用户所有的crontab任务

service crond restart 重启任务调度

快速入门

设置任务调度文件:/etc/crontab

案例:每小时每分钟执行一次 ls -l /etc/ > /tmp/to.txt

  1. crontab -e
  2. */1 * * * * ls -l /etc/ -> /tmp/to.txt
5个占位符的说明
项目含义
第一个*一小时中的第几分钟
第二个*一天中的第几小时
第三个*一个月的第几天
第四个*一年中的第几月
第五个*一周中的星期几 (0,7都代表周日)
特殊符号的说明
特殊符号含义
*代表任何时间,如第一个*代表一小时中的每一分钟
,代表不连续的时间,如0 8,12,16 * * *代表每天的8:00,12:00,16:00执行一次
-代表连续的时间范围,如0 5 * * 1-6代表周一到周六的5:00执行一次
*/n代表每隔多久执行一次,如*/10 * * * *代表每10分钟执行一次
应用案例
  1. 每隔1分钟,将当前的日期信息追加到/tmp/mydate
    */1 * * * * date >> /tmp/mydate/

  2. 每隔1分钟,将当前日期和日历都追加到/tmp/mycal

    1. vim /home/my.sh写入date >> /tmp/mycalcal >> /tmp/mycal
    2. chmod u+x /tmp/my.shmy.sh增加执行权限
    3. crontab -e并写入*/1 * * * * /home/my.sh
  3. 每天2:00将mysql数据库testdb备份到文件中

    0 2 * * * mysqldump -u root -p root testdb > /home/db.bak

at一次性定时任务

一次性定时计划任务。
at的守护进程atd会以后台模式运行,检查作业队列,时间到了就运行此作业。

使用at命令时,一定要确保atd进程的启动。(ps -ef | grep atd)

at [选项] [时间]
ctrl+d 结束at命令的输入
at [-mldv] TIME
-m:当at的工作完成后,即使没有输出信息,以email通知用户该工作已完成
-l:at -l相当于atq,列出目前系统上面的所有该用户的at调度
-d:at -d相当于atrm,可以取消一个在at调度中的工作
-v:可以使用较明显的时间格式列出at调度中的任务列表
-c:可以列出后面接的该项工作的实际命令内容
-f:从文件中读取作业

在这里插入图片描述

Linux磁盘分区、挂载

分区与文件系统

  1. Linux中每个分区都是用来组成整个文件系统的一部分
  2. Linux采用了一种叫做"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时,要载入的一个分区将使它的存储空间在一个目录下获得。
  3. 在这里插入图片描述

查看所有设备挂载情况

lsblk 
lsblk -f

挂载的经典案例

增加一块硬盘

  1. 虚拟机添加硬盘
  2. 分区
  3. 格式化
  4. 挂载
  5. 设置可以自动挂载

磁盘工作实用指令

  1. 统计/opt文件夹下文件的个数
    ls -l /opt | grep "^-" | wc -l
  2. 统计/opt文件夹下目录的个数
    ls -l /opt | grep "^d" | wc -l
  3. 统计/opt文件夹下文件的个数,包括子文件夹里的
    ls -lR /opt | grep "^-" | wc -l
  4. 统计/opt文件夹下文件的个数,包括子文件夹里的
    ls -lR /opt | grep "^d" | wc -l
  5. 以树状显示目录结构
    tree /home/
    • 如果没有tree指令,使用yum install tree

wc命令

word count 用于统计一个文件的行数,字数,字节数或字符数

  • -c 统计字节数
  • -k 统计字符数
  • -l 统计行数
  • -w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串

网络配置

设置主机名

  1. 为了方便记忆,可以给linux主机设置主机名
  2. 指令hostname 查看主机名
  3. 修改文件/etc/hostname,可以指定主机名
  4. 修改后,重启生效

设置hosts映射

  • windows下
    C:\Windows\System32\drivers\etc\hosts文件指定
  • linux下
    /etc/hosts/文件指定

主机名解析过程分析

Hosts

一个文本文件。记录IP和Hostname(主机名)的映射关系

DNS

Domain Name System 域名系统

互联网上作为域名和IP地址相互映射的一个分布式数据库

机制分析

用户在浏览器输入了www.baidu.com

  1. 浏览器先检查浏览器缓存中有没有该域名解析IP地址,
    再检查DNS解析器缓存。
    二者都可以理解为本地解析器缓存。
  2. 计算机第一次成功访问某一网站后,一定时间内。浏览器或操作系统会缓存DNS解析记录。
    ipconfig /displaydns 查看dns域名解析缓存
    ipconfig /flushdns 手动清理dns缓存
  3. 如果1中没有找到,那么检查系统的hosts文件。
  4. 如果1,3都未找到,那么到域名服务dns进行解析。

在这里插入图片描述

进程管理

  1. 在Linux中,每个执行的程序都称作一个进程。
    每个进程都分配一个ID号(pid)
  2. 每个进程都可能以两种方式存在(前台/后台)
    前台进程就是用户目前的屏幕上可以操作的。
    后台进程就是实际在操作,但是屏幕上无法看到。
  3. 一般系统的服务都以后台进程的方式存在,并且常驻在系统中,直至关机。

显示系统执行的进程

ps命令用来查看目前系统中,有哪些正在执行,以及他们执行的状况

ps显示的信息

字段说明
PID进程ID
TTY终端机号
TIME此进程消耗的CPU时间
CMD正在执行的命令或进程名

ps的参数

  • ps -a显示当前终端所有进程信息
  • ps -u以用户的形式显示进程信息
  • ps -x显示后台进程运行的参数

ps -aux

在这里插入图片描述

  • USER:执行进程的用户
  • PID:进程ID
  • %CPU:占用CPU的百分比
  • %MEM:占用物理内存的百分比
  • VSZ:占用虚拟内存;
    包括进程可以访问的所有内存(堆栈),包括进入交换分区的内容,以及共享库占用的内存。
  • RSS:常驻内存集(Resident Set Size),表示该进程分配的内存大小。
    不包括进入交换分区的内存,包括共享库占用的内存(只要共享库在内存中),包括所有分配的栈内存和堆内存。
  • TTY:由虚拟控制台、串口以及伪终端设备组成的终端设备;终端名称
  • STAT:进程状态;S->sleep,R->running/runable等等
    linux进程查看中STAT的含义
  • START:启动时间
  • TIME:占用的CPU时间
  • COMMAND:进程名/执行该进程时的指令

应用示例

在这里插入图片描述

终止进程

kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,支持通配符)

常用选项:-9强迫进程立刻停止

查看进程树pstree

pstree [选项]

常用选项

  • -p显示pid
  • -u显示进程所属用户

服务管理

服务本质就是后台进程,通常都会监听某个端口,等待其他程序的请求。
比如mysqld,sshd,防火墙等,又称为守护进程

service管理指令

  1. service 服务名 [start|stop|restart|reload|status]
  2. 在centos7后,很多服务不使用service,而是systemctl
  3. service指令管理的服务在etc/init.d查看

查看服务名

  1. 直接输入setup,可以看到全部服务
    在这里插入图片描述

    *号表示自启动

  2. ls -l /etc/init.d/可以看到service指令管理的服务

服务的运行级别

  • Linux系统的7种运行级别
    • 0:关机
    • 1:单用户【可找回丢失密码】
    • 2:多用户状态,无网络服务
    • 3:多用户状态,有网络服务,控制台界面
    • 4:系统未使用,保留给用户
    • 5:图形界面
    • 6:系统重启
  • 开机流程说明
    开机->BIOS->/boot->systemd进程1->运行级别->启动此运行级别对应的服务

chkconfig

  1. 通过chkconfig可以给服务的各个运行级别设置自启动/关闭
  2. chkconfig能够管理的服务在etc/init.d/查看
  3. centos7后,很多服务使用systemctl管理
chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off

使用细节:

  • 使用chkconfig后,重启生效

systemctl

  • 基本语法:systemctl [start|stop|restart|status] 服务名
  • systemctl指令管理的服务在/usr/lib/systemd/system查看

设置服务自启动状态

  1. systemctl list-unit-files [|grep 服务名]查看服务自启动状态
  2. systemctl enable 服务名设置开机启动
  3. systemctl disable 服务名关闭开机启动
  4. systemctl is-enabled 服务名查询某个服务是否自启动

应用案例

查看当前防火墙的状况

  • systemctl status firewalld

关闭/重启防火墙

  • systemctl stop/restart firewalld

细节讨论

  1. 关闭或启用防火墙,会立刻生效。可以使用telnet测试
    指定IP和端口的连接 telnet ip:port
  2. 这种方式仅临时生效,重启后回归以前的设置。
  3. 如果希望永久生效,使用systemctl [enable|disable] 服务名

firewall

firewall-cmd --permanent --add-port = 端口号/协议(打开端口)
firewall-cmd --permanent --remove-port = 端口号/协议(关闭端口)
firewall-cmd --reload(重新载入,设置生效)
firewall-cmd --query-port = 端口号/协议(查询端口情况)

动态监控进程

top [选项]

选项说明

选项功能
-d 秒数指定top命令每隔几秒更新,默认3秒
-i使top不显示任何闲置/僵死进程
-p通过ID指定监控进程

详解

在这里插入图片描述

  • 13:58:48 现在时间
  • 2:30 linux运行时间
  • load average:负载均衡 三个数的平均值大于70%异常
  • Tasks: zombie僵死进程,不再有效但仍占用空间
  • %Cpu: cpu占用情况,us:用户,sy:系统,ni:用户进程空间内改变过优先级的进程占用情况,id:空闲

交互操作说明

操作功能
P以CPU使用率排序,默认选项
M以内存使用率排序
N以PID排序
q退出top

案例

  1. 监视特定用户
    1. 输入top查看执行的进程
    2. 然后输入u回车,再输入用户名
  2. 终止指定进程
    1. 输入top查看执行的进程
    2. 然后输入k回车,再输入进程ID号
  3. 指定系统状态更新的时间
    top -d 10

监控网络状态

netstat [选项]

选项说明

  • -an按一定顺序排列输出
  • -p显示哪个进程在调用

案例

  • 查看sshd服务的信息
    netstat -anp | grep sshd

rpm和yum

RPM

rpm :redhat package manager->redhat软件包管理工具

用于互联网下载包的打包及安装

rpm包的简单查询指令

rpm -qa | grep xx查询已安装的rpm列表

rpm包名基本格式

name-version-release.os.arch.rpm

软件名称-版本号-发布次数.适合linux系统.硬件平台.rpm

一个rpm包名sqlite-3.7.17-8.el7_7.1.x86_64

  • 名称:sqlite
  • 版本号:3.7.17-8
  • 适用操作系统:el7_7.1.x86_64
    • el 是 Red Hat Enterprise Linux 的简写
      包括Red Hat x.x,CentOS x.x,CloudLinux x.x
    • 表示centos7.x的64位系统
    • 如果是i686、i386表示32位系统,noarch表示通用

rpm包其他查询

rpm -q 软件包名 (查询软件包是否安装)
rpm -qi 软件包名 (查询软件包信息)
rpm -ql 软件包名 (查询软件包中的文件)
rpm -qf 文件全路径名 (查询文件所属软件包)

卸载rpm包

rpm -e 软件包名

细节讨论

  1. 如果其他软件包依赖于将要卸载的软件包,卸载时会报错
    Failed dependencies:setup is needed by (installed) shadow-utils-2:4.6-5.el7.x86_64
  2. 强制删除,需要增加参数--nodeps
    rpm -e --nodeps setup

安装rpm包

rpm -ivh 包全路径
  • i=install 安装
  • v=verbose 提示
  • h=hash 进度条

YUM

Yum是一个Shell前端软件包管理器,基于RPM包管理。
可以从指定服务器自动下载rpm包并且安装,自动处理依赖

基本指令

  • 查询yum服务器是否有需要安装的软件
    yum list | grep xx
  • 安装指定yum包
    yum install xxx

搭建开发环境:JAVAEE示例

  1. Java Downloads | Oracle 中国

  2. 下载rpm包或compressed archive

  3. 通过xftp等工具传入/opt

  4. 用rpm安装或tar解压

  5. 配置环境变量

    1. vim /etc/profile
    2. export JAVA_HOME=/usr/local/java/jdk-17.0.4.1
    3. export PATH=$JAVA_HOME/bin:$PATH
      :相当于连接符,可以理解成PATH=JAVA_HOME/bin+PATH
    4. source /etc/profile
  6. echo $PATH
    usr/local/java/jdk-17.0.4.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序。

脚本的编写和执行

  1. #!/bin/bash开头,指定其解释器

  2. #!/bin/bash
    echo "hello,world"
    
  3. 脚本需要有可执行权限

  4. 脚本执行方式

    1. 首先赋予脚本的x权限,然后执行
      ./hello.sh
    2. 指定sh,直接执行
      sh hello.sh or bash hello.sh

Shell的变量

介绍

  1. Linux Shell的变量分为系统变量和用户自定义变量
  2. 系统变量:$HOME、$PWD、$SHELL、$USER
  3. 显示当前shell中所有的变量:set

变量定义

  1. 定义:变量=值
  2. 撤销:unset 变量
  3. 声明静态变量:readonly 变量(这种变量不能unset)

在这里插入图片描述

注意事项
  • 等号两侧不能有空格
  • 变量名称一般大写
  • 变量名称可由字母数字下划线组成,不可以数字开头
将命令的返回值赋给变量
A=`date`
A=$(date)

位置参数变量

如果希望获取到命令行的参数信息,就可以使用位置参数变量

基本语法

  • $n:n为数字,$0为命令本身,$1-$9代表第1到9个参数,10以上需要用大括号,如${10}
  • $*:代表命令行中所有的参数,整体看待
  • $@:代表命令行中所有的参数,区分看待
  • $#:代表命令行中所有参数的个数

预定义变量

shell设计者事先已经定义好的变量

  • $$:当前进程的进程号
  • $!:后台运行的最后一个进程的进程号
  • $?:最后一次执行的命令的返回状态
    这个变量的值为0,那么上一个命令正确执行,如果非0则不正确

在这里插入图片描述

多行注释

:<<!
内容
!

运算符

基本语法

  1. $((运算式))$[运算式]expr m + n
  2. 注意expr运算符间要有空格,如果希望将expr的结果赋给变量,使用反引号
  3. 乘:\*(在使用expr时需要转义)
    除:/
    取余:%

条件判断

基本语法

[ condition ](注意前后要有空格)
只要非空即返回true

常用判断条件

在这里插入图片描述

案例

在这里插入图片描述

流程控制

  1. if判断

    1. if [ 条件判断式 ]
      then 
      	代码
      fi
      
    2. if [ 条件判断式 ]
      then
      	代码
      elif [ 条件判断式 ]
      then
      	代码
      fi
      
  2. case语句

    1. case $1 in
      "1")
      echo "周一"
      ;;
      "2")
      echo "周二"
      ;;
      *)
      echo "other..."
      ;;
      esac
      
  3. for循环

    1. for 变量 in 值1 值2 值3...
      do
      代码
      done
      
    2. for ((初始值:循环控制条件:变量变化))
      do
      代码
      done
      
  4. while循环

    1. while [ 条件判断式 ]
      do
      代码
      done
      

read读取控制台输入

基本语法

read [选项] 参数

  • -p指定读取值时的提示符
  • -t指定读取值时等待的时间(s)
  • 参数:指定变量名

系统函数

  1. basename [pathname] [suffix]
    返回完整路径最后/的部分,suffix为后缀,如果指定了会把结果中的suffix去掉
  2. dirname [pathname]
    返回完整路径最后/之前的部分

自定义函数

基本语法

[ function ] funname[()]
{
	Action;
	[return int;]
}

调用的时候 funname [值]

在这里插入图片描述

综合案例

在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值