Linux基础

Linux目录结构

image-20240830101117200

  • /boot:启动目录,内核存放地
  • /etc:配置文件存放地
  • /tmp:程序产生的临时文件
  • /home:存放普通用户的目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
  • /lib:库文件,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
  • /bin:可执行文件和常用的Linux命令
  • /sbin:系统管理员的命令和工具
  • /usr:应用程序和文件的安装池,类似于Windows中的program files目录
  • /mnt:挂接其他文件系统
  • /root:root账户的home目录
  • /dev:存放Linux系统下的设备文件
  • /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个mysql数据库则就可以放到这个目录下。默认是空的。
  • /var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

/ :根目录

~ :用户目录,也叫作home目录,相当于 /home/user/

vi/vim编辑器

vi与vim的区别

vim 是 vi 的升级版本,除了兼容 vi 的所有指令,vim 还具有一些新的特性,主要体现在:

  • 多级撤销
    在 vi 里,按 u 只能撤销上次命令,而在 vim 里可以无限制的撤销。

  • 多平台
    vi 只能运行于 unix 中,而 vim 可以运行于 unix、windows、mac 等多操作平台。

  • 语法加亮
    vim 可以用不同的颜色加亮显示代码。

模式的基本切换

命令 作用(模式切换)
vim file_name 生成新文件或者查看、编辑文件(进入普通模式)
『 : / ?』 (由普通模式进入命令模式)
『i, I, o, O, a, A』 (进入编辑模式)
ESC键 (回到普通模式)

普通模式操作

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

编辑模式操作

语法 功能描述(编辑位置)
i 当前光标前
I 光标所在行最前
a 当前光标后
A 光标所在行最后
o 当前光标行的下一行
O 当前光标行的上一行

命令模式操作

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

:wq 保存并退出;

:wq! 保存并强制退出;

网络配置

IP地址

1
2
3
4
# 查看ip地址
ifconfig
# 检查指定的网络服务器是否联通
ping [-c num] ip或主机名 # -c,检查的次数,不使用-c选项,将无限次数持续检查

特殊ip地址

  • 127.0.0.1,这个IP地址用于指代本机

  • 0.0.0.0,特殊IP地址

    • 可以用于指代本机
    • 可以在端口绑定中用来确定绑定关系
    • 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问

配置主机名

修改主机名

1
2
3
4
5
# 查看主机名
hostname
# 修改主机名
hostnamectl set-hostname 主机名 # 或者
vim /etc/hostname

修改 hosts 映射文件

在配置文件添加主机名和IP的映射关系,可通过主机名替代IP进行访问

1
2
3
4
5
6
7
8
9
# Linux 中修改映射文件
vim /etc/hosts
# 添加映射关系
192.168.2.100 hadoop100
192.168.2.101 hadoop101
192.168.2.102 hadoop102

# Windows
C:\Windows\System32\drivers\etc\hosts

在VMware中配置固定IP(修改IP)

  1. 配置IP地址网关和网段

    image-20240831091427084

  2. 在系统中修改固定IP

    1
    2
    3
    4
    5
    6
    7
    vim /etc/sysconfig/network-scripts/ifcfg-ens33

    BOOTPROTO="static"
    IPADDR="192.168.10.103"
    NETMASK="255.255.255.0"
    GATEWAY="192.168.10.2"
    DNS1="192.168.10.2"
  3. systemctl restart network 重启网卡

修改IP后可能遇到的问题:

(1)物理机能 ping 通虚拟机,但是虚拟机 ping 不通物理机,一般都是因为物理机的
防火墙问题,把防火墙关闭就行
(2)虚拟机能 Ping 通物理机,但是虚拟机 Ping 不通外网,一般都是因为 DNS 的设置有
问题
(3)虚拟机 Ping www.baidu.com 显示域名未知等信息,一般查看 GATEWAY 和 DNS 设
置是否正确
(4)如果以上全部设置完还是不行,需要关闭 NetworkManager 服务

1
2
systemctl stop NetworkManager # 关闭
systemctl disable NetworkManager # 禁用

(5)如果检查发现 systemctl status network 有问题 需要检查 ifcfg-ens33

系统管理

进程与服务

计算机中,一个正在执行的程序或命令,被叫做 进程(process)。
启动之后一直存在、常驻内存的进程,一般被称作 服务(service)

服务管理

查看服务的方法:在 /etc/init.d/ 目录下

1
2
3
4
# CentOS 6
service 服务名 start | stop | restart | status
# CentOS 7
systemctl start | stop | restart | status 服务名

设置后台服务的自启配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# CentOS 6
# 查看所有服务自启配置
chkconfig
# 查看服务状态
chkconfig --list 服务名称
# 关闭/开启服务的自启动
chkconfig 服务名称 off/on
# 关闭/开启服务指定级别的自启动
chkconfig --level 运行级别 服务名称 off/on

# CentOS 7
# 查看服务状态
systemctl list-unit-files
# 关闭/开启服务的自启动
systemctl disable/enable 服务名称

系统运行级别

在CentOS 6 中

1
2
# 查看默认级别
vi /etc/inittab

Linux系统有7种运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5: X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

在CentOS 7 中

运行级别简化为

  • multi-user.target 等价于原运行级别3(多用户文本模式)
  • graphical.target 等价于原运行级别5 (多用户图形模式)
1
2
3
4
# 查看当前运行级别
systemctl get-default
# 修改当前运行级别
systemctl set-default TARGET.target (这里 TARGET 取 multi-user 或者 graphical)

关闭防火墙

1
2
3
4
5
6
7
8
9
# 查看防火墙状态
systemctl status firewalld
# 临时关闭防火墙
systemctl stop firewalld

# 查看防火墙开机自启动状态
systemctl is-enabled firewalld
# 关闭防火墙的开机自启动
systemctl disable firewalld

关机重启

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 将数据由内存同步到硬盘中
sync
# 停机,关闭系统,但不断电
halt
# 关机,断电
poweroff
# 重启,等同于 shutdown -r now
reboot
# shutdown命令 相关操作
shutdown [选项] 时间 # 选项: -h 相当于 halt 关机 , -r 相当于 reboot 重启
shutdown now # 立即关机 (等同于 poweroff)
shutdown 20:25 # 定时关机
shutdown -c # 如果 shutdown 命令正在运行,可以使用此命令取消
shutdown -h +5 "系统将在5分钟后关机,请尽快保存工作。" # 关机并给出警告信息

为什么要使用 sync 命令?

Linux中采取了 “预读迟写” 的方式来提高磁盘的读写效率,当用户保存文件时,不一定会将数据立刻写入物理磁盘,而是将数据保存在缓存区中,等缓存区满时再写入磁盘,这种方式带来了安全隐患,如果数据还未写入磁盘时,系统掉电或者其他严重问题出现,则将导致数据丢失。

使用 sync 指令可以立即将缓冲区的数据写入磁盘。

帮助和查找命令

man 和 help

1
2
3
4
5
6
# 获得帮助信息
man [命令或配置文件]
man -f 命令 # 获取该命令的简短描述信息
命令 --help
# 获得 shell 内置命令的帮助信息
help cd # 查看 cd 命令的帮助信息

如何区分是否为内置命令?

type 命令

常见的内置命令有 cd 、exit 等

显示信息 功能
NAME 命令的名称和单行描述
SYNOPSIS 怎样使用命令
DESCRIPTION 命令功能的深入讨论
EXAMPLES 怎样使用命令的例子
SEE ALSO 相关主题(通常是手册页)

which

1
2
# 查看命令的程序文件存放在哪
which 要查找的命令

常用快捷键

快捷键 功能
ctrl + c 停止进程
ctrl + d 退出或登出
ctrl + l 清屏,等同于clear,彻底清屏是 reset
tab 键 提示,补全
上下键 查找执行过的命令
history 查看历史输入过的命令
!命令前缀 自动执行上一次匹配前缀的命令
ctrl + r 输入内容去匹配历史命令,回车直接执行,左右键得到此命令

有关光标移动快捷键

快捷键 功能
ctrl + a 跳转到命令开头
ctrl + e 跳转到命令结尾
ctrl + 键盘左键 向左跳一个单词
ctrl + 键盘右键 向右跳一个单词

文件目录操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 显示当前工作目录的绝对路径   print working directory
pwd
# 列出目录内容 list
ls [选项] [目录或文件]
# 切换目录 Change Directory
cd [参数]
# 创建新目录 Make directory
mkdir [选项] 要创建的目录
# 删除空目录 Remove directory
rmdir 要删除的空目录
# 创建空文件
touch 文件名称
touch test/11.txt
# 复制文件或目录
cp [选项] 源文件 目标文件
# 删除文件或目录
rm [选项] 要删除的文件或目录
# 移动文件或目录或重命名
mv 原来的名字 修改的名字 # 重命名
mv 原来的路径 修改的路径 # 移动
# 查看文件内容
cat [选项] 要查看的文件
# 文件内容分屏查看(按页显示文件内容)
more 要查看的文件
# 分屏显示文件内容(与 more 类似,但更强大)
less 要查看的文件
# 输出内容到控制台
echo [选项] [输出内容]
echo `pwd` # 将命令通过反引号包围,会被作为命令执行,而非普通字符
# 显示文件头部内容(默认显示文件的前 10 行内容)
head 文件 # 默认查看前 10 行内容
head -n 行数 文件 # -n 指定显示头部内容的行数
# 显示文件尾部内容(默认显示文件的后 10 行内容)
tail 文件
tail -n 文件 # -n 指定显示尾部内容的行数,n代表行数
tail -f 文件 # -f 显示文件最新追加的内容,监视文件变化

# 输出重定向和追加( > 覆盖写, >> 追加 )
ls -l > 文件 # 将 ls 查看信息写入到文件中(覆盖)
ls -al >> 文件 # 将 ls 查看信息追加到文件中
cat 文件1 > 文件2 # 将文件1的内容覆盖到文件2
echo 追加内容 >> 文件 # 给文件追加内容

# 软链接(类似于 windows 中的快捷方式)
ln -s [原文件或目录] [软链接名] # 给原文件创建一个软链接(查询:通过 ll 就可以查看,列表属性第 1 位是 l,尾部会有位置指向)
rm -rf 软链接名 # 删除软链接(如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉)
cd -P 软链接名 # 进入软连接实际物理路径

# 查看已经执行过的历史命令
history
ls 命令选项 功能
-a 全部的文件,连同隐藏文件/文件夹( 开头为 . 的文件) 一起列出来
-l 以列表形式展示内容,包含文件的属性与权限等等数据,等同于 ll 命令
-h 表示以易于阅读的形式,列出文件大小,如K、M、G
cd 命令参数 功能
cd 绝对路径/相对路径 切换目录
cd ~ 或 cd 切换到用户文件夹下
cd - 回到上一次所在目录
cd .. 回到当前目录的上一级目录
cd -P 跳转到实际物理路径,而非快捷方式路径
mkdir 命令选项 功能
-p 创建多层目录
cp 命令选项 功能
-r 递归复制整个目录
-f 强制覆盖不提示
rm 命令选项 功能
-r 递归删除目录中所有内容(包括目录)
-f 强制删除不提示
-v 显示指令的详细执行过程

rm 命令支持通配符 *,用来做模糊匹配

  • test*,表示匹配任何以test开头的内容

  • *test,表示匹配任何以test结尾的内容

  • *test *,表示匹配任何包含test的内容

cat 命令选项 功能
-n 显示所有行的行号,包括空行
more 命令快捷键操作 功能
空格(space) 向下翻一页
Enter 向下翻一行
q 退出,不再显示该文件内容
ctrl + f 向下滚动一屏
ctrl + b 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
less 命令快捷键操作 功能
空白键(space) 向下翻动一页
pagedown 向下翻动一页
pageup 向上翻动一页
/字串 向下搜寻『字串』的功能;n:向下查找;N:向上查找;
?字串 向上搜寻『字串』的功能;n:向上查找;N:向下查找;
q 退出 less
echo 命令选项 功能
-e 支持反斜线控制的字符转换

常见的控制字符以及作用:

  • \\ 输出 \ 本身

  • \n 换行符

  • \t 制表符,也就是 tab 键

时间日期操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 显示当前时间
date
date +%Y # 显示当前年份
date +%m # 显示当前月份
date +%d # 显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" # 显示当前年月日时分秒

# 显示非当前时间
date -d '1 days ago' # 显示前一天时间
date -d '-1 days ago' # 显示明天时间

# 设置系统时间
date -s 字符串时间
date -s "2024-05-19 14:30:10"

# 查看日历
cal # 查看本月日历
cal 年份 # 查看某年日历
cal 2024

使用ntp程序校准系统时间

1
2
3
4
5
6
7
8
# 安装 ntp
yum -y install ntp
# 启动并设置开机自启
systemctl start ntpd
systemctl enable ntpd

# 手动校准
ntpdate -u ntp.aliyun.com

用户与用户组管理

用户管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
useradd 用户名 # 添加新用户
useradd -g 组名 用户名 # 添加新用户到某个组
passwd 用户名 # 设置用户密码

id 用户名 # 查看用户是否存在
cat /etc/passwd # 查看创建了哪些用户

# 切换用户
su 用户名 # 切换用户,只能获得用户的执行权限,不能获得环境变量
su - 用户名 # 切换到用户并获得该用户的环境变量及执行权限

# 删除用户
userdel 用户名 # 删除用户但保存用户主目录
userdel -r 用户名 # -r 删除用户的同时,删除与用户相关的所有文件(用户和用户主目录都删除)
# 查看登录用户信息
whoami # 显示自身用户名称
who am i # 显示登录用户的用户名以及登陆时间
# 修改用户
usermod -g 用户组 用户名 # -g 修改用户的初始登录组,给定的组必须存在。默认组 id 是 1

可以使用sudo命令,为普通的命令授权,临时以root身份执行,前提是要为普通用户配置sudo认证

如何为普通用户配置sudo认证?

1
2
># 修改配置文件
>vi /etc/sudoers

然后找到下面一行(91行),在 root 下面添加

1
2
3
>## Allow root to run any commands anywhere
>root ALL=(ALL) ALL
>要添加的用户名 ALL=(ALL) ALL

也可以配置成不需要输密码登录

1
2
3
>## Allow root to run any commands anywhere
>root ALL=(ALL) ALL
>要添加的用户名 ALL=(ALL) NOPASSWD:ALL

修改完毕,用户帐号登录,然后用命令 sudo ,即可获得 root 权限进行操作。

切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d

用户组管理

1
2
3
4
5
groupadd 组名 # 新增组
groupdel 组名 # 删除组
groupmod -n 新组名 老组名 # 修改组 ( -n 指定新组名 )
# 查看创建了哪些组
cat /etc/group

getent 命令

  • 查看当前系统中有哪些用户:getent passwd
  • 查看当前系统有哪些用户组:getent group

文件权限

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

普通用户的权限,一般在其HOME目录内是不受限的。

一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。

文件属性

image-20240830180403560

作用到文件:

  • r 可读
  • w 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
  • x 可执行

作用到目录:

  • r 可读
  • w 可修改,目录内创建+删除+重命名目录
  • x 可执行,可进入该目录

修改权限控制

chmod 修改权限

只有文件、文件夹的所属用户或root用户可以修改

1
2
3
4
5
6
chmod [{ugoa}{+-=}{rwx}] 文件或目录 # 
chmod u=rwx,g=rx,o+x hello.txt # u 所属用户权限, g 所属组权限, o 其它用户权限,a(u,g,o的总和)

# 上面这种写法过于麻烦,可以用数字代表权限
# r代表4,w代表2,x代表1
chmod 751 hello.txt

chown 修改所有者

修改文件、文件夹的所属用户和用户组

普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行

1
2
3
4
5
6
7
# -R 递归操作
chown [-R] [用户]:[用户组] 文件或文件夹

chown root hello.txt,将hello.txt所属用户修改为root
chown :root hello.txt,将hello.txt所属用户组修改为root
chown root:itheima hello.txt,将hello.txt所属用户修改为root,用户组修改为itheima
chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则

chgrp 改变所属组

1
chgrp [最终用户组] [文件或目录]

文件的搜索查找

find

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

1
2
3
4
5
6
7
8
find [搜索范围] [选项]
# 按文件名查找文件或目录
find 起始路径 -name "被查找文件名"
find / -name "test"
# 按文件大小查找文件
find 起始路径 -size +|-n[bcwKMG]
find / -size -10K # 查找小于10kB的文件
find / -size +100M # 查找大于100M的文件
选项 描述
-name 按指定名查找文件
-user 查找属于指定用户的所有文件
-size 按照指定的文件大小查找文件(bcwKMG)

find 命令也支持通配符 * 进行模糊搜索

locate

利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件

1
2
updatedb
locate 搜索文件

由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库

grep 以及管道符

管道符 | ,将管道符左边命令的结果,作为右边命令的输入

1
2
3
4
# 通过关键字过滤文件行
grep [-n] 关键字 文件路径 # 选项 -n,可选,表示在结果中显示匹配的行的行号

ls | grep -n test

wc

1
2
# 统计文件的行数、单词数量等
wc [选项] 文件路径 # 不带选项默认依次输出 行数、单词数、字节数
选项 功能
-c 统计bytes数量
-m 统计字符数量
-l 统计行数
-w 统计单词数量

磁盘管理

查看文件和目录占用的磁盘空间

du, 完整名称 disk usage, 磁盘占用情况

1
2
# 显示目录下每个子目录的磁盘使用情况
du 目录/文件 [选项]
选项 功能
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-a 不仅查看子目录大小,还要包括文件
-c 显示所有的文件和子目录大小后,显示总和
-s 只显示总和
–max-depth=n 指定统计子目录的深度为第 n 层

查看磁盘空间使用情况

df, 完整名称 disk free, 空余磁盘

1
2
# 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
df [选项]
选项 功能
-h 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

查看设备挂载情况

1
lsblk
选项 功能
-f 查看详细的设备挂载情况,显示文件系统信息

挂载/卸载

对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根
目录、一个独立且唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理
方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,
要载入的那个分区将使它的存储空间在这个目录下获得。

1
2
3
4
# 挂载设备(必须要有光盘或者已经连接镜像文件)
mount [-t vfstype] [-o options] device dir
# 卸载设备
umount 设备文件名或挂载点

fdisk 分区

该命令必须在 root 用户下才能使用

1
2
3
4
# 查看磁盘分区详情
fdisk -l
# 对新增硬盘进行分区操作
fdisk 硬盘设备名

进程管理

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地
址空间,并占用一定的系统资源。

查看当前的系统进程状态

ps, 全称 process status, 进程状态

1
2
3
4
5
6
7
# 查看进程信息
ps -ef
# 查看指定进程
ps -ef | grep 进程名
ps -ef | grep 进程号
# 查看系统中所有进程
ps aux | grep xxx
选项 功能
a 列出带有终端的所有用户的进程
x 列出当前用户的所有进程,包括没有终端的进程
u 面向用户友好的显示风格
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表

ps aux 显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的 ID 号
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位 KB;
RSS:该进程占用实际物理内存的大小,单位 KB;
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示

START:该进程的启动时间

TIME:该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名

ps -ef 显示信息说明
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,
执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数

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

终止进程

1
2
3
4
# 通过进程号杀死进程
kill [选项] 进程号
# 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
killall 进程名称
选项 功能
-9 强迫进程立即停止

查看进程树

1
pstree [选项]
选项 功能
-p 显示进程的 PID
-u 显示进程的所属用户

实时监控系统进程状态

top命令,查看CPU、内存使用情况,类似Windows的任务管理器

1
2
# 默认每5秒刷新一次
top [选项]
选项 功能
-p 只显示某个进程的信息
-d 设置刷新时间,默认是5s
-c 显示产生进程的完整命令
-n 指定刷新次数
-b 以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如top -b -n 3 > /tmp/top.tmp
-i 不显示任何闲置(idle)或无用(zombie)的进程
-u 查找特定用户启动的进程

命令内容详解

image-20240831101847040

image-20240831101906941

image-20240831103256648

显示网络状态和端口占用信息

端口的分类

公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口

注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务

动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用

1
2
3
4
# 查看该进程网络信息
netstat -anp | grep 进程号
# 查看网络端口号占用情况
netstat –nlp | grep 端口号
选项 功能
-a 显示所有正在监听(listen)和未监听的套接字(socket)
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出在监听的服务状态
-p 表示显示哪个进程在调用

系统定时任务

1
2
3
4
5
# 定时任务设置
crontab [选项]
# crontab -e # 进入编辑界面
* * * * * 执行的任务
*/1 * * * * /bin/echo ”11” >> /root/bailongma.txt # 每隔 1 分钟,向/root/bailongma.txt 文件中添加一个 11 的数字
选项 功能
-e 编辑 crontab 定时任务
-l 查询 crontab 任务
-r 删除当前用户所有的 crontab 任务

image-20240908214357830

特殊符号

image-20240908214418370

特定时间执行命令

image-20240908214625112

环境变量

环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。

1
2
3
# 查看Linux系统中环境变量
env
env | grep PATH

自行设置环境变量

  • 临时设置,语法:export 变量名=变量值

  • 永久生效

    针对当前用户生效,配置在当前用户的: ~/.bashrc文件中

    针对所有用户生效,配置在系统的: /etc/profile文件中

    并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效

自定义环境变量PATH

临时修改PATH:export PATH=$PATH:/home/itheima/自定义文件夹

永久修改:将export PATH=$PATH:/home/itheima/myenv,填入用户环境变量文件或系统环境变量文件中去

软件包管理

RPM

RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

PRM包的名称格式:

Apache-1.3.23-11.i386.rpm

pache 软件名称

1.3.23-11 软件的版本号,主版本和此版本

i386 软件所运行的硬件平台,Intel 32位处理器的统称

rpm 文件扩展名,代表RPM包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 查询指定程序包是否安装
rpm -q rpm软件包名称
# 查看指定程序包的名称、版本、许可协议、用途描述等详细信息
rpm -qi rpm软件包名称
# 显示指定的程序包在当前系统中安装的所有目录、文件列表
rpm -ql rpm软件包名称
# 查看指定的文件或目录是由哪个程序包所安装的
rpm -qf 文件名或目录
# 显示当前系统中所有rpm程序包列表
rpm -qa
# 一般情况下软件包较多,需要采取过滤。
rpm -qa | grep rpm软件包名称
rpm -qa | grep firefox

# 卸载
rpm -e rpm软件包 # -e 卸载软件包
rpm -e --nodeps rpm软件包名称 # --nodeps 卸载软件时,不检查依赖(强制卸载,可能会导致某些软件不可用)

# 安装
rpm -ivh rpm包全名
# 安装选项:
# -i 安装
# -v 显示详细信息
# -h 进度条
# --nodeps 安装前不检查依赖

如何进入 Packages 文件夹下:

使用 lsblk 命令 查看磁盘挂载情况,然后进入光驱目录下(sr0),Packages文件夹就在该目录下。

YUM 仓库配置

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

常用命令

1
2
yum [-y] [参数]  # -y 对所有的提问都回答 yes
yum -y install firefox # 使用 yum 方式安装 firefox
参数 功能
install 安装 rpm软件包
reinstall 重新安装软件包
update 更新 rpm软件包
check-update 检查是否有可用的更新 rpm软件包
remove 卸载指定的 rpm软件包
search 搜索
list [installed] 列出所有可用的软件包及其版本信息(或者只列出已安装的)
clean 清除 yum 过期的缓存
deplist 显示指定 rpm软件包的依赖关系

Ubuntu系统使用的是 apt包管理器

其它下载工具

wget是非交互式的文件下载器,可以在命令行内下载网络文件

1
2
wget [-b] url # -b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
tail -f wget-log # 通过tail命令可以监控后台下载进度

curl可以发送http网络请求,可用于:下载文件、获取信息等

1
curl [-o] url # -o,用于下载文件,当url是下载链接时,可以使用此选项保存文件

修改网络 YUM源

修改为国内的镜像网站

  1. 安装 wget,wget用于从指定的 URL 下载文件

    1
    yum install wget
  2. 在/etc/yum.repos.d/目录下,备份默认的 repos 文件

    1
    cp CentOS-Base.repo CentOS-Base.repo.backup
  3. 下载网易163 或者是 aliyun 的 repos 文件

    1
    2
    3
    4
    # aliyun
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    # 网易 163
    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  4. 使用下载好的 repos 文件替换默认的 repos 文件

    1
    mv CentOS-7.repo CentOS-Base.repo # 以 aliyun 为例
  5. 清理旧缓存数据,缓存新数据

    1
    2
    yum clean all
    yum makecache # 把服务器的包信息下载到本地电脑缓存起来
  6. 测试

上传下载与压缩

上传下载

与虚拟机的数据交换

1
2
3
4
# 安装
yum -y install lrzsz
rz # 上传
sz 要下载的文件 # 下载

压缩与解压缩

tar 打包

1
2
3
4
5
6
7
8
9
10
tar [选项] XXX.tar.gz 将要打包进去的内容  # 打包目录,压缩后的文件格式.tar.gz

# 压缩
tar -cvf test.tar 1.txt 2.txt 3.txt # 将1.txt 2.txt 3.txt 压缩到test.tar文件内
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt # 将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式

# 解压
tar -xvf test.tar # 解压test.tar,将文件解压至当前目录
tar -xvf test.tar -C /home/itheima # 解压test.tar,将文件解压至指定目录(/home/itheima)
tar -zxvf test.tar.gz -C /home/itheima # 以Gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)
tar命令选项 功能
-c 创建压缩文件
-v 显示压缩、解压过程,用于查看进度
-x 解压模式
-f 指定压缩后的文件名,-f选项必须在所有选项中位置处于最后一个
-z 打包同时压缩
-C 解压到指定目录

-z 选项如果使用的话,一般处于选项位第一个

-f 选项,必须在选项位最后一个

-C 选项单独使用,和解压所需的其它参数分开

gzip/gunzip 压缩

1
2
gzip 文件 # 压缩文件,只能将文件压缩为*.gz 文件
gunzip 文件.gz # 解压缩
  • 只能压缩文件不能压缩目录
  • 不保留原来的文件
  • 同时多个文件会产生多个压缩包

zip/uzip 压缩

1
2
zip [选项] XXX.zip 将要压缩的内容 # 压缩文件和目录
unzip [选项] XXX.zip # 解压缩
zip选项 功能
-r 压缩目录
unzip选项 功能
-d<目录> 指定解压后文件的存放目录

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

扩展

finalshell

WSL部署