一天急速通关Linux
一天急速通关Linux
- 0 文章说明
- 1 介绍
- 1.1 常见的操作系统介绍
- 1.2 Linux命令的介绍
- 2 磁盘管理与文件管理
- 2.1 目录的划分
- 2.2 目录的增删改查
- 2.3 文件的增删改查
- 2.3 文件的搜索
- 2.4 压缩与解压缩
- 2.5 软链接与硬链接
- 2.6 vim编辑器简要介绍
- 3 用户管理
- 3.1 用户组增删改查
- 3.2 用户增删改查
- 3.3 为用户主目录之外的目录授权
- 4 文件权限
- 4.1 查看文件权限
- 4.2 基于UGO修改文件权限
- 5 系统命令
- 5.1 时间,用户,echo
- 5.2 sort,diff,重定向
- 5.3 grep,管道
- 5.4 系统进程,sleep,kill,top
- 5.5 free,uptime,df,du
- 5.6 重启,关机
- 5.7 ifconfig,ping,curl,wget,netstat
- 6 软件安装与下载
- 7 Shell编程简介
0 文章说明
在倍速观看动力节点杜老师的Linux
教程之后,根据视频内容以及课程笔记进行实践,经过自己的理解并总结后形成这篇学习笔记。文章总共分八个章节,包括了原教程的九个章节的大部分知识。本文所提供的信息和内容仅供参考,作者和发布者不保证其准确性和完整性。
1 介绍
1.1 常见的操作系统介绍
- Windows:微软公司开发
- 特点:图形用户界面友好,应用生态丰富,更新频繁,兼容性好
- 用途:广泛应用于个人电脑领域,适合日常办公、娱乐、学习等场景,在企业的桌面办公系统中也有广泛应用。
- Unix:由贝尔实验室开发
- 特点:稳定性强,基于内核,多用户多任务
- 用途:主要用于企业级服务器领域,如大型企业的数据库服务器、邮件服务器等。
- Linux:基于Unix开发
- 特点:开源免费,可定制性强,安全可靠
- 用途:在服务器领域占据主导地位,广泛应用于云计算平台、
Web
服务器、数据库服务器等,在嵌入式设备和移动设备上也有广泛应用,如Android
系统是基于Linux
内核开发的。
Linux的常见版本:
Debian
:一种流行的稳定Linux
操作系统。Ubuntu
:基于Debian
构建的一种流行的Linux
桌面操作系统。Red Hat
:一种商业Linux
操作系统,由Red Hat
公司开发。CentOS
:通过重新编译Red Hat
而得到的Linux
操作系统,免费且源代码开放。Fedora
:由Red Hat
公司赞助的基于开源的Linux
桌面和服务器操作系统。
1.2 Linux命令的介绍
-
终端介绍:
[adododes@localhost ~]$
其中
adododes
表示用户,@
表示分隔符,localhost
表示主机名称,~
表示当前所在目录,默认用户目录为~
,会随着目录切换而变化,$
表示当前当前用户为普通用户,超级用户为#
。 -
命令介绍:命令 参数名 参数值
-
man
和--help
命令介绍-
man
命令可以查看某个命令的具体用法:man pwd
-
也可以查看一个命令的帮助,一次性列出:
pwd --help
-
文章内容通过VMWare
安装CentOS8
用于命令演示,具体安装教程可自行查询。
2 磁盘管理与文件管理
2.1 目录的划分
对于Windows
操作系统来说,磁盘可以分为C
盘、D
盘、E
盘等,每个磁盘下采用文档树的形式组织文件系统,其中,操作系统一般安装在C
盘,C
盘下的Windows
目录是操作系统的核心,Program Files
目录下安装软件,用户目录是所有的用户,包括超级管理员也在其中。
对于Linux
操作系统来说,只采用一个文档树来组织所有的资源,树的根目录是/
,根目录下有其他子目录,其中:
/bin
:常用的二进制可执行文件,如cat、ls、mkdir、rm
等。这些二进制文件在系统运行时始终可用,可以被任何用户运行。/etc
:系统的大多数配置文件,如网络配置、用户登录信息、软件包安装配置等。大多数应用程序在安装后都会在这个目录下创建自己的子目录,以便存储自己的配置文件。/home
:Linux
系统用户的家目录,每个用户的数据和个人文件都存放在这里。/lib
:一些共享库文件,应用程序可以通过这些共享库文件调用系统的功能,如libc.so
,是C
语言函数库的共享库。/root
:是系统管理者(超级用户)的家目录。/tmp
:是系统中的一个临时目录,所有用户都可以在这里创建临时文件,文件系统会定期清空该目录,以防止文件滞留。/usr
:包含系统启动后,所有用户能访问的应用程序和数据文件。/var
:包含可变数据的文件。包括日志、数据库、Web
服务器、邮件队列等文件。它是一个经常被修改的目录,如果在其他目录有可变数据的话,它们都应当被链接到/var
中。
2.2 目录的增删改查
操作 | 命令 | 命令全称 | 常见参数 | 参数全称 | 参数说明 | 示例 |
---|---|---|---|---|---|---|
Create | mkdir | make directories | -p | --parents | 递归创建目录,如果父目录不存在则自动创建 | mkdir -p dir/subdir |
-m | --mode | 创建目录时设置权限 | mkdir -m 777 newdir | |||
-v | --verbose | 显示创建目录的过程 | mkdir -v testdir | |||
Read | ls | list | -l | --format=long | 使用长格式显示文件和目录信息 | ls -l |
-a | --all | 显示所有文件,包括隐藏文件 | ls -a | |||
-h | --human-readable | 以易读的格式显示文件大小 | ls -lh | |||
-R | --recursive | 递归显示目录及其子目录的内容 | ls -R | |||
-t | --time | 按文件修改时间排序 | ls -lt | |||
pwd | print working directory | 无 | 无 | 显示当前工作目录的绝对路径 | pwd | |
Update | mv | move | -i | --interactive | 在覆盖文件或目录时提示确认 | mv -i oldname newname |
-u | --update | 仅在源文件比目标文件新时移动 | mv -u file1 dir/ | |||
Delete | rm | remove | -r | --recursive | 递归删除目录及其内容 | rm -r dir/ |
-f | --force | 强制删除,不提示确认 | rm -f file | |||
-i | --interactive | 删除前逐个文件提示确认 | rm -i file | |||
rmdir | remove directory | 无 | 无 | 删除空目录 | rmdir emptydir |
Tips:
-
ls
命令还可以指定查看某个目录下的所有文件详情。ll -a /home
-
cd
命令change directory
,用于切换目录cd ..
回到上级目录,cd ~
回到主目录,cd /
回到根目录 -
自行查漏补缺
2.3 文件的增删改查
操作 | 命令 | 命令全称 | 常见参数 | 参数全称 | 参数说明 | 示例 |
---|---|---|---|---|---|---|
Create | touch | touch | -a | --time=atime | 仅修改文件的访问时间 | touch -a file.txt |
-m | --time=modify | 仅修改文件的修改时间 | touch -m file.txt | |||
-t | --time | 指定文件的时间戳 | touch -t 202301010000 file.txt | |||
echo | echo | 无 | 无 | 将内容写入文件或创建新文件 | echo "Hello" > file.txt | |
cp | copy | -r | --recursive | 递归复制目录及其内容 | cp -r dir/ newdir/ | |
-i | --interactive | 在覆盖文件时提示确认 | cp -i file1 file2 | |||
-f | --force | 强制覆盖目标文件 | cp -f file1 file2 | |||
Read | cat | concatenate | -n | --number | 显示全部内容并显示行号 | cat -n file.txt |
-v | --show-nonprinting | 显示全部内容并显示不可见字符 | cat -v file.txt | |||
less | less | -N | --LINE-NUMBERS | 分页显示,显示行号 | less -N file.txt | |
-S | --chop-long-lines | 分页显示,不自动换行,显示长行 | less -S file.txt | |||
more | more | 无 | 无 | 分页显示文件内容(较简单) | more file.txt | |
nl | number lines | 无 | 无 | 显示文件内容并添加行号 | nl file.txt | |
head | head | -n | --lines | 显示文件的前几行 | head -n 5 file.txt | |
tail | tail | -n | --lines | 显示文件的后几行 | tail -n 5 file.txt | |
-f | --follow | 实时显示文件的更新内容 | tail -f file.txt | |||
Update | mv | move | -i | --interactive | 在覆盖文件时提示确认 | mv -i oldfile newfile |
-n | --no-clobber | 不覆盖已存在的目标文件 | mv -n file dir/ | |||
vim | Vi IMproved | 无 | 无 | 使用 Vim 编辑器修改文件内容 | vim file.txt | |
Delete | rm | remove | -f | --force | 强制删除,不提示确认 | rm -f file.txt |
-i | --interactive | 删除前提示确认 | rm -i file.txt | |||
-r | --recursive | 递归删除目录及其内容 | rm -r dir/ |
Tips:
Read
方式太多,自行熟悉
2.3 文件的搜索
在CentOS
中,可以使用以下方式进行文件搜索:
find
命令:使用find
命令可以在指定目录下搜索文件。可以使用不同的选项来指定搜索的文件类型、大小、修改时间等条件。例如:
find /usr/local -name "catalina.out"
whereis
命令:使用whereis
命令可以在系统中搜索指定的命令的位置。例如:
whereis startup.sh
which
命令:使用which
命令也可以在系统中搜索指定的命令的位置。例如:
which command
2.4 压缩与解压缩
使用tar
命令,tar
命令语法格式: tar
参数 要压缩的或解压的文件或目录
tar
命令的常用参数:
参数 | 参数全称 | 参数说明 |
---|---|---|
-c | --create | 创建一个新的归档文件。 |
-x | --extract | 从归档文件中解压内容。 |
-t | --list | 列出归档文件的内容,不解压。 |
-v | --verbose | 显示详细的操作过程。 |
-f | --file | 指定归档文件的名称,后面必须紧跟文件名,不能再加其他参数。 |
-z | --gzip | 使用 gzip 压缩或解压归档文件,速度快,后缀tar.gz。 |
-j | --bzip2 | 使用 bzip2 压缩或解压归档文件,体积小,后缀tar.bz2。 |
-C | --directory | 指定解压目标目录或在打包时切换到指定目录。 |
--exclude | 无 | 在打包时排除指定的文件或目录。 |
注意: 创建c
、压缩x
、查看t
,这三个参数不能共存,只能出现一个。
分类 | 命令 | 说明 |
---|---|---|
创建归档 | tar -cvf archive.tar file1 file2 dir/ | 创建一个未压缩的归档文件,包含指定文件和目录。 |
tar -czvf archive.tar.gz dir/ | 创建一个 gzip 压缩的归档文件。 | |
tar -cjvf archive.tar.bz2 dir/ | 创建一个 bzip2 压缩的归档文件。 | |
解压归档 | tar -xvf archive.tar | 解压未压缩的归档文件到当前目录。 |
tar -xzvf archive.tar.gz | 解压 gzip 压缩的归档文件。 | |
tar -xjvf archive.tar.bz2 | 解压 bzip2 压缩的归档文件。 | |
tar -xzvf archive.tar.gz -C /path/to/destination | 解压归档文件到指定目录。 | |
查看内容 | tar -tvf archive.tar | 列出未压缩归档文件的内容。 |
tar -ztvf archive.tar.gz | 列出 gzip 压缩归档文件的内容。 | |
tar -jtvf archive.tar.bz2 | 列出 bzip2 压缩归档文件的内容。 | |
其他操作 | tar -czvf archive.tar.gz directory/ --exclude='*.log' | 创建归档文件时排除特定文件(如 .log 文件)。 |
tar -xzvf archive.tar.gz path/to/file.txt | 从归档文件中提取单个文件。 | |
tar -czvpf archive.tar.gz dir/ | 创建归档文件时保留文件权限和所有者信息。 |
理解:创建c
,解压x
,查看t
+ 未压缩归档vf
,gzip压缩zvf
,bzip2压缩jvf
2.5 软链接与硬链接
软链接类似于windows
操作系统中的快捷方式,作用也类似,创建方式为:
ln -s file.txt fileSoftLink.txt
软链接和目标文件实际上是两个文件,在软链接中存储的是目标文件的路径。软链接关联的目标文件如果被删除,软链接这个快捷方式也就失效了。
可以通过查看inode
号区分两个文件。
inode
号:Linux
操作系统中,每一个文件都有自己的身份证号,即inode
号,通过ls -i file
查看file
的inode
号。
硬链接类似于备份,创建方式为:
ln file.txt fileHardLink.txt
目标文件或者硬链接只要有一个存在,文件就没有被真正的删除,file.txt
被修改,fileHardLink.txt
也会更新。
2.6 vim编辑器简要介绍
-
打开文件
-
语法:
vi
文件的路径 -
vi a.txt
-
vi /home/b.txt
-
-
编辑文件:两个模式
- 进入
vi
编辑器时是命令模式:键入i
命令进入编辑模式 - 从编辑模式回到命令模式:按一下
esc
键
- 进入
-
保存文件:处于命令模式
:wq
命令,保存并退出:q!
命令,强行退出不保存
注意:vi
编辑器打开的文件如果不存在,则自动新建。
3 用户管理
Linux
系统中超级用户是root
,通过超级用户root
可以创建其它的普通用户,Linux
是一个支持多用户的操作系统。Linux
系统中任何一个用户都对应:一个用户名 + 一个口令。用户管理主要是完成下面几个方面的管理:
- 用户组的管理
- 用户的管理
- 为用户主目录之外的目录授权
3.1 用户组增删改查
用户组的构成:
组名:密码标识:GID
:该用户组中的用户列表
操作类型 | 命令格式 | 说明 |
---|---|---|
增加用户组 | groupadd 用户组名 groupadd -g GID 用户组名 | 创建一个新的用户组。 |
删除用户组 | groupdel 用户组名 | 删除一个已存在的用户组。注意:不能删除正在使用的用户组。 |
修改用户组 | groupmod -n 新组名 用户组名 groupmod -g 新GID 用户组名 | 修改用户组的属性。 |
查询用户组 | getent group 用户组名 cat /etc/group groups 用户名 | 查询用户组的详细信息,包括 GID 和成员列表; 列出系统中所有用户组的配置信息; 查看指定用户所属的所有用户组。 |
3.2 用户增删改查
切换用户使用:su
用户名
-
新增用户
useradd
[选项] 用户名,其中选项:-d
指定新用户的主目录-g
指定新用户属于哪个组(主组)-G
可以给新用户添加附加组
添加
lisi
用户,该用户的主目录/usr/lisi
,所属主组dev
(开发组),附加组test
(测试组)[root@localhost usr]# useradd -d /usr/lisi -g dev -G test lisi
设置密码:
passwd lisi
-
修改用户
# 修改用户名 usermod -l zhangsi zhangsan # 修改主目录 -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。 usermod -d /usr/zhangsan2 -m zhangsan # 修改组 usermod -g dev1 zhangsan
-
删除用户
userdel -r zhangsan
3.3 为用户主目录之外的目录授权
创建目录并授权 -> 创建组并把目录赋予给组 -> 创建用户并添加附加组
第一步:创建目录
mkdir /java
第二步:给目录授权
# -R表示递归设置权限,该目录下所有的子目录以及子文件
chmod -R 775 /java
第三步:创建组
groupadd dev
第四步:把目录赋予组
chgrp -R dev /java
第五步:创建用户
useradd xiaoming
第六步:设置密码
passwd xiaoming
第七步:给用户添加附加组
x usermod -G dev xiaoming
4 文件权限
Linux
为了保证系统中每个文件的安全,引入了文件权限机制, 可以做到不同的用户对同一个文件具有不同的操作权利。
不同的操作权利:
- 读的权利(
Read
,简称r
) - 写的权利(
Write
,简称w
) - 执行的权利(
eXecute
,简称x
)
不同的用户,UGO
模型:
- 文件拥有者(
User
,简称U
):该文件的创建人 - 同组用户(
Group
,简称G
):和创建人在同一组的用户 - 其他组用户(
Other
,简称O
):和创建人不在同一组的用户
4.1 查看文件权限
每一个文件或目录采用ls -l
查看之后,第一个字段描述了文件类型+文件的权限,第一个字段共10个字符,其中第一个字符代表文件类型
文件类型 | 代表符号 | 说明 |
---|---|---|
普通文件 | - | 普通文件,如文本文件、可执行文件等。 |
目录 | d | 目录,用于存储文件和子目录。 |
链接 | l | 软链接(符号链接),类似于快捷方式,指向另一个文件或目录。 |
块设备 | b | 块设备文件,用于存储设备(如硬盘、软盘等)。 |
字符设备 | c | 字符设备文件,通常以字节流的方式访问(如键盘、打印机等)。 |
管道文件 | p | 管道文件(FIFO ),用于进程间通信。 |
套接字文件 | s | 套接字文件,用于网络通信或进程间通信。 |
剩下的九个,三个一组,分别代表UGO
的权限,其中
权限类型 | 符号表示 | 数字表示 | 说明 |
---|---|---|---|
读权限(Read) | r | 4 | 允许查看文件内容或列出目录中的文件。 |
写权限(Write) | w | 2 | 允许修改文件内容或删除/修改目录中的文件。 |
执行权限(Execute) | x | 1 | 允许运行文件(可执行文件)或进入目录。 |
无权限 | - | 0 | 没有任何权限。 |
4.2 基于UGO修改文件权限
操作 | 命令格式 | 示例 | 说明 |
---|---|---|---|
符号表示法 | chmod [ugoa][+-=][rwx] 文件名 | chmod u=rwx,g=rx,o=r 文件 | 设置所有者为读、写、执行权限,组为读、执行权限,其他用户为读权限,里面a代表all。 |
数字表示法 | chmod [权限数字] 文件名 | chmod 754 文件 | 设置所有者为7 (rwx ),组为5 (r-x ),其他用户为4 (r-- )。 |
递归修改 | chmod -R [权限] 目录 | chmod -R 755 目录 | 递归修改目录及其子目录和文件的权限。 |
5 系统命令
5.1 时间,用户,echo
-
date
,查看系统当前时间[adododes@localhost ~]$ date Tue Feb 18 03:18:52 CST 2025
-
su
用户名,切换用户[adododes@localhost ~]$ su root Password:
-
sudo
指令,使用超级管理员身份执行该命令 -
echo X,X
可以是字符串,变量,转义需要添加-e
参数echo "Hello, world!"
name="John" echo "My name is $name"
echo "line 1 line 2 line 3"
echo -e "Line 1\nLine 2\tTable"
5.2 sort,diff,重定向
-
sort file.txt
,对文件中的内容以“行”为单位进行升序和降序排列sort file.txt
# 降序 sort -r file.txt
# 按数字排序 sort -b file.txt
-
diff a.txt b.txt
,逐行比较两个文件的区别diff a.txt b.txt
1c1
表示第一个文件的第1
行 和 第二个文件的第1
行不同。
3c3,4
表示第一个文件的第3
行 和 第二个文件的第3,4
行不同。 -
重定向
输出重定向
>>
,>
,前者以追加方式,后者以覆盖方式# 文件详细信息写入到a.txt ls -al > a.txt
输入重定向
<
,文件内容输入给某个命令,这是一种默认的行为,可以省略输入重定向
<<
,接收用户输入,需要指定标识符,当再次输入标识符表示输入结束[root@localhost adododes]# sort -n << flag > 10 > 30 > 20 > 10 > flag 10 10 20 30
5.3 grep,管道
-
grep 'pattern' file
,用于在文件中查找匹配的字符串或模式,并将匹配行作为输出'pattern'
表示要匹配的字符串或模式。file
表示要搜索的文件名。如果不指定文件名,则grep
命令会从标准输入中读取数据,等待用户输入并匹配字符串。
搜索多个文件
grep 'pattern' file1 file2 grep 'pattern' *.txt
递归搜索
grep -r 'pattern' dir
匹配前几行或后几行
grep -A 2 'pattern' file # 显示匹配行后2行 grep -B 2 'pattern' file # 显示匹配行前2行 grep -C 2 'pattern' file # 显示匹配行前后各2行
忽略大小写,找出不匹配的行,使用正则表达式
grep -n 'pattern' file grep -v 'pattern' file grep -E 'pattern' file
-
|
,管道将前面命令的输出作为后面命令的输入
[root@localhost adododes]# ls -al | grep drw | grep r-x drwxr-xr-x. 3 root root 22 Feb 17 07:24 .. drwxr-xr-x. 12 adododes adododes 271 Feb 18 00:56 .cache drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Desktop drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Documents drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Downloads drwxr-xr-x. 6 adododes adododes 81 Feb 18 00:56 .mozilla drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Music drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Pictures drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Public drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Templates drwxr-xr-x. 2 adododes adododes 6 Feb 17 07:25 Videos
5.4 系统进程,sleep,kill,top
-
ps
,查看系统进程-e
:显示当前所有进程-f
:显示UID
,PPID
,C
与STIME
栏位信息
ps -ef
[root@localhost adododes]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Feb17 ? 00:00:05 /usr/lib/systemd/syste root 2 0 0 Feb17 ? 00:00:00 [kthreadd] root 3 2 0 Feb17 ? 00:00:00 [rcu_gp]
其中
UID
:该进程的所属用户,PID
:进程id
,PPID
:父进程id
,C
:CPU
使用百分比,STIME
:启动时间,TTY
:启动该进程的终端设备是哪个,TIME
:耗费的CPU
时间,CMD
:该进程对应的命令。 -
sleep NUMBER[SUFFIX]
,用于暂停程序的执行一段时间SUFFIX
可以为s,m,h,d
,分别表示秒,分,时,天[root@localhost adododes]# sleep 10d & [1] 7191 [root@localhost adododes]# sleep 20d & [2] 7192 [root@localhost adododes]# ps -ef |grep sleep root 7190 1002 0 03:40 ? 00:00:00 sleep 60 root 7191 6941 0 03:41 pts/2 00:00:00 sleep 10d root 7192 6941 0 03:41 pts/2 00:00:00 sleep 20d root 7194 6941 0 03:41 pts/2 00:00:00 grep --color=auto sleep
加上
&
符号表示在后台执行。 -
kill
进程号,杀死进程[root@localhost adododes]# ps -ef |grep sleep root 7190 1002 0 03:40 ? 00:00:00 sleep 60 root 7191 6941 0 03:41 pts/2 00:00:00 sleep 10d root 7192 6941 0 03:41 pts/2 00:00:00 sleep 20d root 7194 6941 0 03:41 pts/2 00:00:00 grep --color=auto sleep [root@localhost adododes]# killall sleep [1]- Terminated sleep 10d [2]+ Terminated sleep 20d [root@localhost adododes]# ps -ef |grep sleep root 7237 1002 0 03:43 ? 00:00:00 sleep 60 root 7239 6941 0 03:43 pts/2 00:00:00 grep --color=auto sleep
先查找,再杀死,
killall
是杀死所哟sleep
进程kill -9
进程号强制杀死进程。 -
top
,用于查看正在运行的系统进程信息的命令。实时动态地显示系统资源的使用情况,如
CPU
占用率、内存使用情况、进程情况等,通常用于系统监控和性能调优。top - 03:46:55 up 4:22, 2 users, load average: 0.00, 0.00, 0.00 Tasks: 265 total, 1 running, 264 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 5725.6 total, 3576.2 free, 1040.7 used, 1108.7 buff/cache MiB Swap: 3072.0 total, 3072.0 free, 0.0 used. 4427.3 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7250 root 20 0 65564 5136 4268 R 0.7 0.1 0:00.39 top 1 root 20 0 241036 14008 8948 S 0.0 0.2 0:05.70 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 10 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0 11 root 20 0 0 0 0 I 0.0 0.0 0:03.22 rcu_sched 12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 13 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 16 root rt 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/1 17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1 18 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/1
5.5 free,uptime,df,du
-
free
,查看物理内存和交换分区的使用情况[root@localhost adododes]# free total used free shared buff/cache available Mem: 5862980 1064448 3663196 13724 1135336 4534760 Swap: 3145724 0 3145724
-
uptime
,显示系统运行时间[root@localhost adododes]# uptime 03:54:09 up 4:29, 2 users, load average: 0.09, 0.02, 0.01
-
df
,显示当前文件系统的磁盘空间使用状况[root@localhost adododes]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 2902152 0 2902152 0% /dev tmpfs 2931488 0 2931488 0% /dev/shm tmpfs 2931488 9980 2921508 1% /run tmpfs 2931488 0 2931488 0% /sys/fs/cgroup /dev/mapper/cl-root 27245572 4827420 22418152 18% / /dev/nvme0n1p1 1038336 264624 773712 26% /boot tmpfs 586296 24 586272 1% /run/user/1000 /dev/sr0 10540998 10540998 0 100% /run/media/adododes/CentOS-8-5-2111-x86_64-dvd
-
du
,磁盘空间占用查询命令,用于显示文件或目录占用的磁盘空间大小。[root@localhost adododes]# du 0 ./.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384} 0 ./.mozilla/extensions 0 ./.mozilla/plugins 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.files 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/3561288849sdhlie.files 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/1451318868ntouromlalnodry--epcr.files 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.files 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/2823318777ntouromlalnodry--naod.files 0 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb/2918063365piupsah.files 9844 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome/idb 9848 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent/chrome 9848 ./.mozilla/firefox/cddn12sa.default-release/storage/permanent 0 ./.mozilla/firefox/cddn12sa.default-release/storage/temporary
5.6 重启,关机
- 重启
reboot
- 关机,两种方式
shutdown -h now
:命令会向系统发送信号,通知所有正在运行的进程停止运行,并保存当前的状态,然后关闭系统。poweroff
:立即关闭系统电源,不会等待正在运行的进程结束,可能会丢失尚未保存的数据。
5.7 ifconfig,ping,curl,wget,netstat
-
ifconfig
,查询网卡的ip
地址 -
ping
,查看计算机之间是否可以正常通信,域名和ip
都可以[root@localhost adododes]# ping www.baidu.com PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data. 64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=1 ttl=128 time=45.1 ms 64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=128 time=46.4 ms 64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=3 ttl=128 time=44.6 ms
-
curl
,模拟用户访问,模拟浏览器行为。curl [options] URL
curl
命令的常用选项如下:-i
:显示响应头信息。-I
:只显示响应头信息,不显示响应体。-X
:设置请求方法,包括GET
、POST
、PUT
、DELETE
等。-d
:设置请求体数据(POST
请求)。-H
:设置请求头信息。-o/-O
:下载文件,并保存到本地。-u
:设置认证信息。-A
:设置User-Agent
。-s
:静默模式,不输出进度信息。
-
wget
,下载资源wget
资源地址 -
netstat
,查看网络连接状态及端口netstat -a netstat -an 添加-n参数的目的是:不将端口和IP地址转换为名称,而是直接显示数字格式的IP地址和端口号
查看指定端口的网络连接状态:
netstat -an | grep 端口号
6 软件安装与下载
CentOS
安装软件的方式主要包括:
-
源码安装
源码安装是指从软件的源代码编译并安装到系统中。这种方式通常适用于需要定制编译选项或系统中没有现成二进制包的情况。
-
rpm
安装(二进制安装)RPM(Red Hat Package Manager)
是一种基于二进制的包管理工具,可以直接安装预编译的软件包。CentOS
系统使用RPM
格式的软件包。 -
yum
安装(在线安装)
YUM(Yellowdog Updater Modified)
是CentOS
系统中常用的包管理工具,它通过在线仓库自动下载和安装软件包,并解决依赖问题。
一般用YUM
安装,下面是一些常用命令
命令类型 | 命令格式 | 说明 |
---|---|---|
安装命令 | yum -y install 软件名 | 自动确认安装指定软件。 |
升级命令 | yum -y update 软件名 | 自动确认升级指定软件。 |
升级所有软件 | yum -y update | 自动确认升级系统中所有软件。 |
卸载命令 | yum remove 软件名 | 卸载指定软件。 |
列出可安装的软件包 | yum list | 列出所有可安装的软件包。 |
列出已安装的软件包 | yum list installed | 列出系统中已安装的软件包。 |
查询某个软件包 | yum list 软件名 | 查询指定软件包的详细信息。 |
根据关键字搜索软件包 | yum search Keyword | 根据关键字搜索软件包。 |
清除缓存 | yum clean all | 清除YUM缓存。 |
以安装JDK
为例:
- 从
yum
仓库中搜索jdk
:yum search jdk
- 安装
jdk
:yum -y install java-17-openjdk-devel.x86_64
- 看看
jdk
的安装目录:which java
ls -l /usr/bin/java
ls -l /etc/alternatives/java
- 在
/etc/profile
文件中配置环境变量:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.6.0.10-3.el9.x86_64
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
- 生效:
source /etc/profile
7 Shell编程简介
Linux
操作系统是一种开放源代码的类UNIX
操作系统,它的结构分为内核、Shell
和应用程序三个层次。
-
内核层
内核是
Linux
系统的核心部分,它负责管理系统各种硬件设备、文件系统、内存管理和进程管理等核心任务。Linux
内核设计了良好的模块化结构,可以动态地加载和卸载内核模块,这使得内核可以兼容各种不同的硬件设备和外围设备。 -
Shell
层Shell
是Linux系统的命令行解释器,它负责将用户输入的命令解释并执行。Linux
系统上有多种Shell
,其中最常用的是Bash Shell
。Bash Shell
提供了各种丰富的功能和处理能力,如通配符、重定向、管道、变量等。 -
应用层
应用层是
Linux
系统上的各种应用程序和服务,包括文本编辑器、图形界面、Web
服务器、邮件服务器、数据库服务器等。在Linux
系统中,应用程序通常以开放源代码方式呈现,用户可以自由学习和使用,也可以根据需求自己编写、修改或扩展。
下面是一个Shell
程序,
#!/bin/bash
# 图书馆借阅记录管理系统
# 定义借阅记录数组(模拟图书馆的图书借阅记录)
# readonly 关键字使得这个数组不可修改,确保数据不会被意外篡改
readonly BOOK_RECORDS=(
"小说:《活着》"
"科幻:《三体》"
"小说:《平凡的世界》"
"科普:《时间简史》"
"科幻:《银河帝国》"
"小说:《活着》"
)
# 使用关联数组存储图书类别和借阅次数的统计结果
# 关联数组类似于其他语言中的字典,可以方便地存储键值对
declare -A BOOK_STATS
# 统计函数:遍历借阅记录并统计每种图书的借阅次数
function count_books() {
# 遍历借阅记录数组中的每一本书
for record in "${BOOK_RECORDS[@]}"; do
# 使用 awk 提取图书类别(例如“小说”、“科幻”)
# $1 表示 awk 中的第一个字段,即图书类别
category=$(echo "$record" | awk '{print $1}')
# 去除类别末尾的冒号(如“小说:”中的冒号)
# "${var%:}" 是一种字符串操作,用于去除字符串末尾的冒号
category="${category%:}"
# 检查当前类别是否已存在于统计数组中
if [[ -z ${BOOK_STATS[$category]} ]]; then
# 如果不存在,则初始化借阅次数为 1
BOOK_STATS[$category]=1
else
# 如果存在,则借阅次数加 1
# 使用 $(( expr )) 进行算术运算
BOOK_STATS[$category]=$((${BOOK_STATS[$category]} + 1))
fi
done
}
# 输出统计结果函数
function show_stats() {
# 输出统计结果的标题
echo "图书馆借阅记录统计:"
# 遍历关联数组中的每个类别
for category in "${!BOOK_STATS[@]}"; do
# 输出类别和对应的借阅次数
echo "类别:$category,借阅次数:${BOOK_STATS[$category]}"
done
}
# 调用统计函数和输出函数
count_books # 统计借阅记录
show_stats # 输出统计结果
# 示例输出:
# 图书馆借阅记录统计:
# 类别:小说,借阅次数:2
# 类别:科幻,借阅次数:2
# 类别:科普,借阅次数:1
编写完成并给予执行权限即可执行
chmod +x library.sh
./library.sh
执行结果
图书馆借阅记录统计:
类别:科幻:《银河帝国》,借阅次数:1
类别:小说:《平凡的世界》,借阅次数:1
类别:科普:《时间简史》,借阅次数:1
类别:小说:《活着》,借阅次数:2
类别:科幻:《三体》,借阅次数:1