Linux(下)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


VIM编译器

vi/vim是什么

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

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

在终端中执行以下命令安装vim

sudo apt install vim

测试数据准备

(1)拷贝/etc/profile 数据到当前目录下

cp /etc/profile ./

(案例运行上图)

一般模式

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

1)常用语法

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

编辑模式

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

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

1)进入编辑模式

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

2)退出编辑模式

按『Esc』键

命令模式

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

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

1)基本语法

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

2)案例实操

(1)保存退出

对于有写权限的文件,修改后,保存并退出。

:wq;

(2)直接退出

没有修改文件内容,直接退出。

:q

(3)强制退出

修改了文件内容,但是不想保存,此时需要强制退出。

:q!

(4)强制保存退出

对于没有写权限的文件,修改后,必须强制保存退出方可保留更改。

:wq!

模式间转换

用户管理命令

root用户

root 用户是具有最高权限的超级用户

1)root 用户特点

root 用户拥有系统的所有权限,可以对系统进行任何操作,包括修改系统关键配置文件、安装和卸载系统级软件、管理用户账户等。但由于其权限过大,不当操作可能会导致系统出现严重问题,甚至无法正常运行。

2)默认情况

Ubuntu 默认情况下,root 用户是被锁定的,没有设置默认密码。这是为了提高系统的安全性,鼓励用户使用普通用户账户,并通过 sudo 命令来临时获取 root 权限执行需要高权限的操作。

3)为 root 用户设置密码

如果确实需要使用root用户登录或执行操作,可以通过以下步骤为root用户设置密码。

以普通用户身份登录到 Ubuntu 系统。

打开终端,输入以下命令:----这里设置密码为smz

系统会提示你输入当前普通用户的密码,输入正确后按回车键。

接着会要求你设置 root 用户的新密码,输入两次相同的新密码后,root 用户的密码就设置完成了。

4)切换root用户

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

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

如果需要一个完整的 root 用户环境,例如执行需要特定环境变量支持的脚本,或者进行系统管理操作时依赖 root 用户的环境配置,建议使用 su -。而如果只是临时需要以 root 身份执行一两个命令,并且希望保持当前的工作环境,那么使用 su root 更合适。

5)退出root用户

exit

6)使用sudo替代root用户操作

虽然可以使用root用户登录并操作,但更推荐使用sudo命令。sudo 允许普通用户在需要时以 root 权限执行特定的命令,而不需要一直以 root 用户身份登录。

在需要执行的命令前加上 sudo,例如要安装软件包:

python 复制代码
sudo apt install package_name

系统会提示你输入当前普通用户的密码,输入正确后命令将以 root 权限执行。

7)锁定和解锁 root 用户

锁定 root 用户:如果你想再次锁定 root 用户,使其无法登录,可以使用以下命令:

sudo passwd -l root

解锁 root 用户:若要解锁 root 用户,可以使用以下命令:

sudo passwd -u root

useradd 添加新用户

1)基本语法

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

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

可以在useradd后面加-m指定是否创建用户目录

2)案例实操

添加一个用户

passwd设置用户密码

1)基本语法

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

2)案例实操

设置用户的密码

passwd sunxiaoming

id查看用户是否存在

1)基本语法

id 用户名

2)案例实操

查看用户是否存在

cat /etc/passwd查看创建了哪些用户

1)基本语法

cat /etc/passwd

userdel 删除用户

1)基本语法

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

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

2)案例实操

sudo设置普通用户具有root权限

1)添加testu用户,并对其设置密码。

使用useradd来创建,home下面不存在对应文件目录

若是要查看成功与否使用cat /etc/passwd

2)修改配置文件

vi /etc/sudoers

修改 /etc/sudoers 文件,在root下面添加一行,如下所示:

python 复制代码
## Allow root to run any commands anywhere
root      ALL=(ALL)     ALL
testu   ALL=(ALL)     NOPASSWD:ALL

配置成采用sudo命令时,不需要输入密码

修改完毕,通过:wq!退出编辑,然后可以用testu帐号登录,用命令 sudo ,即可获得root权限进行操作。不需要多次输入密码。

usermod 修改用户

1)基本语法

usermod -l 新用户名 老用户名

usermod -d /home/新目录名 -m新用户名

2)选项说明

选项 功能
-l 改变用户名
-d 修改家目录

3)案例实操

改变用户名

用户组管理命令

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同。

如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

groupadd 新增组

1)基本语法

groupadd 组名

2)案例实操

添加一个xitian组,然后使用cat /etc/group

groupadd xitian

groupdel 删除组

1)基本语法

groupdel 组名

2)案例实操

删除xitian组,然后使用cat /etc/group查看

groupmod 修改组

1)基本语法

groupmod -n 新组名 老组名

2)案例实操

usermod 修改用户组

1)基本语法

usermod -g 组名 用户名

2)选项说明

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

1)基本操作

cat /etc/group

文件权限类

文件属性

能力越大,责任越大。权限越小,责任越小。

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用户和组。

1)文件属性:从左到右的10个字符表示

如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:

(1)0首位表示类型

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等

  • 代表文件
    d 代表目录
    l 链接文档(link file);
    (2)第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User
    (3)第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group
    (4)第7-9位确定其他用户拥有该文件的权限 ---Other

2)rwx作用文件和目录的不同解释

(1)作用到文件:

r \]代表可读(read): 可以读取,查看 \[ w \]代表可写(write): 可以修改,但是不代表可以删除该文件, 删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件. \[ x \]代表可执行(execute):可以被系统执行 (2)作用到目录:0 \[ r \]代表可读(read): 可以读取,ls查看目录内容 \[ w \]代表可写(write): 可以修改,目录内创建+删除+重命名目录 \[ x \]代表可执行(execute):可以进入该目录 图标: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ce88e4abbe9d4cbb89efb6d96d3bf74e.png) 代表不可读 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c254c76e5e984f5eac87602e60df51b1.png) 锁代表不可写 #### chmod 改变权限 1)基本语法 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8cc12e67284c4919931f1da57717f408.png) (1)第一种方式变更权限 chmod \[{ugoa}{±=}{rwx}\] 文件或目录 (2)第二种方式变更权限 chmod \[mode=421 \] \[文件或目录

2)案例实操

(1)修改文件使其所属主用户具有执行权限

chmod u+x passwd

(2)修改文件使其所属组用户具有执行权限

chmod g+x passwd

(3)修改文件所属主用户执行权限,并使其他用户具有执行权限

chmod u-x,o+x passwd

(4)采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。

chmod 765 passwd

(5)修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限。

chmod -R 777 test

chown改变所有者

chown: 改变所有者(change owner)

1)基本语法

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

2)选项说明

选项 功能
-R 递归操作

3)案例实操

(1)修改文件所有者

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

chgrp 改变所属组

chgrp: 改变所属组(change group)

1)基本语法

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

2)案例实操

(1)修改文件的所属组

搜索查找类

find查找文件或者目录

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

2)基本语法

find [搜索范围] [选项]

3)选项说明

选项 功能
-name <文件名> 按照指定的文件名查找模式查找文件(模式必须用引号包含)
-user <用户名> 查找属于指定用户名所有文件
-size <文件大小> 按照指定的文件大小查找文件,单位为: b ------ 块(512字节)c ------ 字节w ------ 字(2字节)k ------ 千字节M ------ 兆字节G ------ 吉字节

4)案例实操

(1)按文件名:根据名称查找当前目录下所有以.txt结尾的文件。

find ./ -name "*.txt"

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

find ./ -user "zxf"

(3)按文件大小:在当前目录下查找大于200字节的文件(+n 大于 -n小于 n等于)

find ./ -size "+200c"

grep与"|"管道符的过滤查找

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

Grep(Global Regular Expression Print),用于对指定文本根据正则表达式(特定规则)搜索匹配并输出到终端。一般与管道符进行配合使用。

1)基本语法

grep 选项 查找内容 源文件

2)选项说明

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

3)案例实操

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

find ./ -size "-200c" |grep a# 这个方式是使用递归搜索的,

ll |grep -n zx # 不递归

cat passwd |grep -n wu

压缩和解压类

tar 打包

1)基本语法

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

2)选项说明

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

3)案例实操

(1)压缩多个文件

touch tt2.txt

touch tt1.tex

ll

tar -zcvf tt.tar.gz tt2.txt tt1.tex

ll

(2)压缩目录

tar -zcvf b.tar.gz test/

(3)解压到当前目录

rm -r test

tar -zxvf test.tar.gz

(4)解压到指定目录

mkdir work

tar -zxvf test.tar.gz -C ./work

ls work/

磁盘类

df 查看磁盘空间使用情况

df: disk free 空余硬盘

1)基本语法

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

2)选项说明

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

3)案例实操

查看磁盘使用情况。

du 文件和目录的磁盘使用空间

1)基本语法

du 目录/文件(功能描述:显示每个文件和目录的磁盘使用空间)

2)选项说明

选项 功能
-a 显示当前目录下所有的文件目录及子目录大小
3)案例实操
查看目录的空间使用情况
du -a

网络类

ifconfig

1)基本语法

ifconfig (功能描述:显示所有网络接口的配置信息)

2)案例实操

查看当前网络IP

ping 测试主机之间网络连通性

1)基本语法

ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)

2)案例实操

测试当前服务器是否可以连接百度

ping www.baidu.com

修改主机名称

1)基本语法

hostname (功能描述:查看当前服务器的主机名称)

2)案例实操

(1)查看当前服务器主机名称。

hostname

(2)如果感觉此主机名不合适,我们可以进行修改。编辑/etc/hostname文件。

vi /etc/hostname

进程线程类

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

ps 查看当前系统进程状态

ps: 进程状态(process status)

1)基本语法

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

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

2)选项说明

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

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

PID:进程的ID号

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

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

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

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

TTY:该进程是在哪个终端中运行的。其中tty1-tty6代表系统的虚拟控制台。pts/0-255代表伪终端,通常用于 SSH 会话、telnet 会话以及其他远程登录会话。

STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台、I<:几乎没有使用CPU时间

START:该进程的启动时间

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

COMMAND:产生此进程的命令名

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

UID:用户名

PID:进程ID

PPID:父进程ID

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

STIME:进程启动的时间

TTY:该进程是在哪个终端中运行的。

TIME:CPU时间

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

kill 终止进程

1)基本语法

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

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

2)选项说明

选项 功能
-9 表示强迫进程立即停止
3)案例实操
(1)开启多个终端
准备两个终端。
(2)监控houge.txt
在其中一个终端中执行以下命令。
tail -F houge.txt
(3)查看tail进程号
在另一个终端中查看进程号。
ps -ef grep tail

kill -9 进程号

(5)通过名称杀死进程

killall命令可以根据名称杀死进程,此处的进程名称是精确匹配。通常进程名称为启动命令中可执行文件的名称。对于tail -F houge.txt启动的进程,其进程名称为tail。

再开启一个终端,在其中两个终端中执行以下命令。

killall tail

可以看到另外两个终端的tail进程均被杀死。

free查看服务器总体内存

1)基本语法

free -m (功能描述:查看服务器总体内存)

2)案例实操

free -m

top查看系统健康状态

1)基本命令

top [选项]

2)选项说明

选项 功能
-d 秒数 指定top命令每隔几秒更新。
-i 使top不显示任何闲置或者僵死进程。
-p 通过指定监控进程ID来仅仅监控某个进程的状态。
列名 英文全称 中文解释 通俗说明 关注程度
PID Process ID 进程ID号 进程的唯一标识 ★★
USER User 进程所属用户 哪个用户启动的进程 ★★
PR Priority 优先级 内核动态计算的优先级,数值越低优先级越高
NI Nice Value nice值(谦让值) 用户可调整的优先级。负值越高越优先,范围 -20~19 ★★
VIRT Virtual Image (Memory) 虚拟内存 进程申请的虚拟内存总大小 (对应之前说的 VSZ ★★★
RES Resident Memory 物理内存 进程当前实际占用物理内存 的大小(对应之前说的 RSS ★★★★★
SHR Shared Memory 共享内存 进程中可与其他进程共享的内存大小(如动态库) ★★★★
S Status 进程状态 当前进程运行状态(后面详细解释) ★★
%CPU CPU Usage CPU占用率 该进程占用CPU的百分比(多核会超过100%) ★★★★★
%MEM Memory Usage 内存占用率 该进程占用物理内存占系统总内存的百分比 ★★★★★
TIME+ CPU Time CPU累计耗时 进程启动以来累计使用的CPU时间(注意不是系统时间) ★★
COMMAND Command 命令/进程名 进程对应的命令或程序名称 ★★★

netstat显示网络统计信息和端口占用情况

1)基本语法

netstat -anp |grep 进程号 (功能描述:查看该进程网络信息)

netstat -nlp |grep 端口号 (功能描述:查看网络端口号占用情况)

2)选项说明

选项 功能
-n 拒绝显示别名,能显示数字的全部转化成数字
-l 仅列出有在listen(监听)的服务状态
-p 表示显示哪个进程在调用

3)案例实操

(1)查看某端口号是否被占用。

sudo netstat -nlp | grep 进程号

(2)通过进程号查看该进程的网络信息。

netstat -anp | grep进程号

路径类

basename

1)基本语法

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

basename可以理解为取路径里的文件名称。

选项:

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

2)案例实操

dirname

1)基本语法

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

dirname 可以理解为取文件路径的绝对路径名称。

2)案例实操

crontab系统定时任务

crontab服务管理

重新启动crontab服务

sudo systemctl restart cron

systemctl status cron

crontab 定时任务设置

1)基本语法

crontab [选项]

2)选项说明

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

3)参数说明

进入crontab编辑界面。会打开vim编辑你的工作。首次使用该命令时,系统会提示你选择一个文本编辑器,选择你熟悉的编辑器即可。

crontab -e

(1)* * * * * 执行的任务,*的含义

项目 含义 范围
第一个"*" 一小时当中的第几分钟 0-59
第二个"*" 一天当中的第几小时 0-23
第三个"*" 一个月当中的第几天 1-31
第四个"*" 一年当中的第几月 1-12
第五个"*" 一周当中的星期几 0-7(0和7都代表星期日)

(2)特殊符号

特殊符号 含义
* 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思。
代表不连续的时间。比如"0 8,12,16 * * * 命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如"0 5 * * 1-6命令",代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如"*/10 * * * * 命令",代表每隔10分钟就执行一遍命令

(3)特定时间执行命令

时间 含义
45 22 * * * 命令
0 17 * * 1 命令 每周1 的17点0分执行命令
0 5 1,15 * * 命令 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 命令 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * 命令 每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

4)案例实操

每隔1分钟,向/Desktop文件中添加一个11的数字

*/1 * * * * /bin/echo "11" >> /opt/module/bailongma.txt

相关推荐
齐鲁大虾3 小时前
统信系统UOS常用命令集
linux·运维·服务器
Benszen4 小时前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…4 小时前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
一叶知秋yyds5 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星5 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组6 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
大数据新鸟6 小时前
操作系统之虚拟内存
java·服务器·网络
safestar20127 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
来一颗砂糖橘7 小时前
负载均衡的多维深度解析
运维·负载均衡