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):可以进入该目录

图标:

代表不可读

锁代表不可写

chmod 改变权限

1)基本语法

(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

相关推荐
A小辣椒21 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式