Linux - 整理工作中常用的 Linux 命令(目录、文件、系统、进程、网络)持续更新~

陈亦康 2024-09-20 11:37:02 阅读 84

目录

一、Linux 目录结构

二、Linux 中的常用指令

2.1、目录命令

cd 切换目录

pwd 打印当前所在目录

ls 展示当前目录内容

mkdir 创建目录

du 统计每个目录下的文件字节数

2.2、文件命令

which 查找 命令字 所在位置

find 查找文件

touch 创建一个空文件

cp 复制文件或文件夹

mv 移动文件或文件夹

rm 删除文件或文件夹

cat 输出文本文件内容

tac 倒序输出文本文件内容

more 分页输出文件内容

less 分页显示文件内容

tail 查看文件末尾数据

head 查看文件头部数据

zip / unzip 压缩/解压缩

gzip/gunzipo 压缩/解压缩

tar 将多个文件或目录打成一个 tar 包(归档)

ln 创建硬链接/软连接

2.3、系统服务命令

who 查看当前用户登录信息

w 查看当前用户登录信息

shutdown 关机命令

reboot 重启系统

lscpu 查看系统 cpu 信息

chmod 修改文件权限

useradd/usermod/userdel/su/passwd 用户相关操作

systemctl

free 查看当前系统内存使用情况

yum 安装/更新/删除/搜索 软件包

history 查看历史命令

2.4、进程命令

ps 查看进程状态

top 查看各进程的资源占用情况(类似 WIndows 任务管理器)

pgrep 根据名称查询进程 id

kill/pkill 两种杀死进程的方式

nohup 后台运行命令

2.5、网络命令

ping 测试网络连接是否通畅 

ip(ifconfig)查看/操作 网接口信息.

netstat 查询网络连接、路由表、接口统计等网络相关信息

telnet 查看服务器的某一个端口是否可以访问

curl 发送请求


一、Linux 目录结构


根目录结构说明:

/bin:存放着最常使用的命令./boot:存放的时 Linux 启动时的核心文件,包括链接文件和镜像文件./dev:dev 是 device(设备)的缩写,存放的是 Linux 外部设备.  在 Linux 中访问设备的方式和访问文件的方式是相同的./etc:存放着重要的系统配置文件,类似于 Windows 中控制面板的数据./home:普通用户的家目录.  每个用户都有一个自己的目录,一般目录名是以用户的账号命名./lib:库文件,包含系统和用户所需要的各种程序./lost+found:故障期间保存的文件都在这里./media:linux 会自动识别一些设备,例如 U盘,光驱...  识别后,会挂载到这个目录下./mnt:外部设备的挂载点,例如 CD-ROM(光驱)或者 数码相机./opt:存放第三方软件,主要是给主机额外安装大型一个用程序的目录./proc:这是一个虚拟目录,他是系统内存的映射,通过访问这个目录来获取系统信息.  这个目录的内容不再硬盘上而是在内存中./root:系统管理员的根目录./sbin:s 就是 Super User 的意思,存放的是系统管理员 root 使用的系统管理程序./tmp:系统使用的零食空间,在重启的时候会清理!因此不要使用它来保存任何重要的文件./usr:用户的应用程序和文件都在这个目录下,类似于 windows 下的 program files 目录./var:用户创建的所有可变文件和临时文件的存储空间,例如日志文件一般都是 /var/log...

二、Linux 中的常用指令


2.1、目录命令

cd 切换目录

cd xxx:切换到当前目录下的 xxx 目录.

cd ~:切换到 root 根目录.

cd ..:回到上一级目录.

Ps:

一个点 "." 表示当前目录,全称为 "./"

两个点 ".." 表示上一级目录,全称为 "../"

pwd 打印当前所在目录

ls 展示当前目录内容

a)常见使用如下:

ls -l:一行显示一个文件.(可以简写为 ll)

ls -a:显示所有文件(包括 . 开头的隐藏文件)

ls -d:显示目录本身而不显示目录下的文件.

ls -t:按照修改时间排序(最近修改的先显示)

ls -tr:按照修改时间排序(最近修改的后显示)

ls -R:列出当前目录下的所有文件,如果有目录遍历所有所有目录及其子目录下的文件.

b)通配符:

*:匹配一个或多个字符?:匹配一个字符[]:匹配指定字符范围内的任意字符.[^]:匹配指定字符范围外的任意单个字符.

例如如下:

c)ls -l 格式输出说明:

以 drwxr-xr-x.  4 root root   33 1月  26 22:30 es  为例

如下解释标红字符的含义:

drwxr-xr-x.  4 root root   33 1月  26 22:30 es

第一个字符用来表示文件类型:

"-":表示普通文件."d":表示目录."l":链接文字(符号链接)或者 软链接."c":字符设备文件."b":块设备文件."s":套接字文件."p":命令管道文件.

drwxr-xr-x.  4 root root   33 1月  26 22:30 es

这里一共有 9 个字符,分为 3 组,分别表示文件所有者(owner)、所属组(group)和其他用户(others)的权限,每一组中的三个字符分别表示是否具有 读、写、执行(运行程序) 的权限,如下:

r:读权限.w:写权限.x:执行权限.-:表示没有权限.

上述案例中,解释如下:

第一组 rwx:表示文件所有者(owner,也表示创建文件的用户)的权限,有 r读、w写、x执行 权限.

第二组 r-x:表示所属组只有读和执行的权限.

第三组 r-x:表示其他用户只有读和执行的权限.

drwxr-xr-x.  4 root root   33 1月  26 22:30 es

如果是目录:表示目录下一级子目录的个数.

如果是文件:表示硬链接的个数(访问该文件的路径数)

drwxr-xr-x.  4 root root   33 1月  26 22:30 es 

表示这个目录的创建者是 root 用户.

drwxr-xr-x.  4 root root   33 1月  26 22:30 es 

表示这个目录所属的组是 root 组.

drwxr-xr-x.  4 root root   33 1月  26 22:30 es 

文件的字节数(大小)

drwxr-xr-x.  4 root root   33 1月  26 22:30 es 

文件最后一次修改的日期

drwxr-xr-x.  4 root root   33 1月  26 22:30 es 

文件名

mkdir 创建目录

du 统计每个目录下的文件字节数

du -s: 只显示每个文件的字节总数.

du -h:转换字节数为 K、M、G 的形式.

du -sh:显示当前文件大小,转化为 K、M、G 的形式.

2.2、文件命令

which 查找 命令字 所在位置

用于在用户的 path 环境变量所定义的目录中查找可执行文件的位置.

find 查找文件

用法:find [路径] [表达式] [操作]

路径:指定哪个目录下开始搜索,默认为当前目录.表达式:指定搜索条件.  这个条件可以是基于文件名、文件大小、文件类型、文件权限等.操作:对找到的文件进行的操作.  最常见的是 -print(打印文件名),还有 删除文件、更改文件权限等.

例如:

查找当前目录及其子目录的所有 .txt 文件:find . -name '*.txt'查找 /home/user 目录中所有名为 example.sh 的文件:find /home/user -name "example.sh"找到文件后修改权限:find /path/to/search -name "*.sh" -exec chmod +x {} \;

touch 创建一个空文件

如果创建的文件不存在,则创建一个空文件;

如果创建的文件存在,则修改文件的修改日期.

cp 复制文件或文件夹

a)复制单个文件: 复制 ~/test.txt 文件到 /tmp 目录下

cp ~/test.txt /tmp

b)复制整个目录:复制 ~/env  文件夹到 /tmp 目录下

cp -R ~/env /tmp

c)复制并改名: 复制 ~/test.txt 文件到 /tmp 目录下,并改名为 test2.txt

cp ~/test.txt /tmp/test2.txt

mv 移动文件或文件夹

a)移动文件或目录:移动 ~/test.txt 文件到 /tmp 目录下

mv ~/test.txt /tmp

b)移动文件或目录并改名:移动 ~/test.txt 文件到 /tmp 目录下,并改名为 test2.txt

mv ~/test.txt /tmp/test2.txt

rm 删除文件或文件夹

a)删除文件:删除 ~/env/test.txt 文件

rm ~/env/test.txt

b)删除目录:删除 ~/tmp/aaa 目录

rm -rf ~/tmp/aaa 

Ps:

-f:不提示用户输入 ‘y’ 或 ‘n’ 来确认

-r:表示递归删除所有文件.

cat 输出文本文件内容

-n:输出结果带行号.

tac 倒序输出文本文件内容

和 cat 相反.

more 分页输出文件内容

分页大小为屏幕大小,默认左下角会显示分页进度百分比.

空格:向下翻页b 向上翻页f 向下翻页q 退出

less 分页显示文件内容

-m:显示进度百分比翻页期间可以用 "/" 后跟关键字搜索文件内容. q 可以退出翻页.空格上下翻页b 向上翻页f 向下翻页

tail 查看文件末尾数据

默认查看文件末尾 10 行.

可以通过选项 -n 指定显示末尾 n 行的内容

head 查看文件头部数据

默认查看文件头部 10 行.

可以通过选项 -n 指定显示头部 n 行的内容

zip / unzip 压缩/解压缩

Note:如果没有此命令,可以通过 yum intall zip 下载

a)zip 压缩

-r:压缩目录-y:把软连接作为文件压缩,但不压缩软连接所指向的文件.

例如,将 ~/tmp 文件夹压缩到 ~/aaa 目录下的 tmp.zip 文件中

Ps:这里的 "起点" 和 "终点" 和之前命令写法是反着来的,要注意~

b)unzip 解压缩

-d 指定解压缩的路径

将 ~/aaa/tmp.zip 解压到 ~/bbb 目录下

Ps:解压缩会自动加一层 root 目录

gzip/gunzipo 压缩/解压缩

-n:压缩率,数字为 1 ~ 9,默认 6.

-r:压缩目录.

Ps:默认压缩之后不会保留源文件,源文件变为 *.gz 格式

例如压缩 ~/test/a.test 文件

解压缩也比较简单

tar 将多个文件或目录打成一个 tar 包(归档)

使用方式如下:

打包:tar 选项 目标文件名 源文件名或目录释放:tar 选项 目标文件名 -C 源tar包

选项如下:

-f:tar 命令必须要要有 -f 选项,并且在所有选项最后.-c:创建新归档.-x:释放归档 extract-z:是使用 gzip 的方式进压缩或解压缩.-v:打包进度可视化.

常用方式如下:

a)将 ./aaa 整个目录打包一个新的 ./bbb.tar 文件

b)将 /aaa 整个目录打包一个新的 ./bbb.tar.gz 文件c

c)将 tar 包文件 ./bbb.tar 还原到 ./tmp1 目录下

d)将 tar 包文件 ./bbb.tar.gz 还原到 ./tmp2 目录下

 

ln 创建硬链接/软连接

链接:类似于 windows 的快捷方式,可以通过链接直接访问到目标文件.

软连接:相当于对源文件的浅拷贝. 如果源文件被删除,则该链接无效.

硬链接:相当于对源文件的深拷贝,inode 不一样(不同的内存空间). 如果源文件被删除,该链接依然有效.

用法:ln 选项 源文件 新链接

选项:

-s:创建软连接(没有此选项,默认是硬链接)-v:可视化.

例如在当前文件下给 aaa 创建软连接 link_aaa:

2.3、系统服务命令

who 查看当前用户登录信息

第一列(用户名):root 是超级管理员.第二列(终端类型):

tty1 表示第一个物理控制台终端(通常是键盘和显示器直接连接的终端.pts/0 表示 伪终端 ,通常是通过 SSH、远程桌面... 出啊关键的会话使用的终端(/0 表示伪终端).第三列(用户最后一次登录到终端的时间):这里不用多讲第四列(远程主机的名称 / IP地址):实际上这里我是通过 tailscale 组的内网.

综上示例表明:有两个 root 用户登录到系统,一个是通过物理控制台(tty1),另一个是通过远程来连接(pts/0),并且远程连接的用户来自 windows-cyk.tail73816.ts.net 这个远程主机.

w 查看当前用户登录信息

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

a)第一行:

22:46:28:当前的系统时间.2 users::2 个用户登录到系统.load average: 0.00, 0.01, 0.04:系统的负载平均值,表示过去 1 分钟、5 分钟和 15 分钟内系统的平均负载。负载平均值是正在运行或等待 CPU 时间的进程数的度量。上述案例中,系统负载非常低。

b)后续信息(每个登录用户的详细信息):

USER:用户名.TTY:用户终端类型.

tty1 表示第一个物理控制台终端(通常是键盘和显示器直接连接的终端.pts/0 表示 伪终端 ,通常是通过 SSH、远程桌面... 出啊关键的会话使用的终端(/0 表示伪终端)LOGIN@:用户登录到系统的时间.IDCE:用户空闲的时间. 上述案例中, tty1 的用户已经空闲了 3 小时 32 分钟,而 pts/0 的用户在执行 w 命令前只空闲了 4 秒。JCPU:用户及其所有进程使用的总 CPU 时间.PCPU:当前正在执行的进程所使用的 CPU 时间.WHAT:用户当前正在进行的操作.   上述案例中 tty1 用户正在运行 -zsh(zsh shell 的一个实例),而 pts/0 的用户正在执行 w 命令.

shutdown 关机命令

shutdown -h now:立刻关机.shutdown -h +10:10 分钟后关机.   每个用户都会收到 "10 分钟后关机" 的消息,并于 10 分钟后关机. shutdown -c:取消关机.

reboot 重启系统

这个不多讲...

lscpu 查看系统 cpu 信息

Architecture:

x86_64: 表示CPU是64位架构,兼容x86指令集。

CPU op-mode(s):

32-bit, 64-bit: 表示CPU支持32位和64位的操作模式。

Byte Order:

Little Endian: 数据在内存中的存储顺序是低字节在前,高字节在后。

CPU(s):

4: 系统中有4个逻辑CPU(可能是物理核心或超线程)。

On-line CPU(s) list:

0-3: 当前在线(即活跃)的CPU编号列表。

Thread(s) per core:

1: 每个物理核心只有一个线程,表示没有启用超线程。

Core(s) per socket:

2: 每个CPU插槽(或物理CPU)有2个物理核心。

:

2: 可能是指CPU插槽的数量,但这里的用词“座”不太常见,可能是翻译或特定术语。

NUMA 节点:

1: Non-Uniform Memory Access (NUMA)节点的数量。NUMA是一种计算机内存设计,其中处理器访问自己节点上的内存比访问其他节点上的内存更快。

厂商 ID:

AuthenticAMD: 制造商是AMD。

CPU 系列:

25: AMD的CPU系列编号。

型号:

80: 具体的AMD CPU型号代码。

型号名称:

AMD Ryzen 7 5800H with Radeon Graphics: 这是CPU的完整名称,表明它是AMD Ryzen 7 5800H系列,带有集成的Radeon Graphics GPU。

步进:

0: CPU的步进或修订级别。

CPU MHz:

3193.999: CPU当前的运行频率(以MHz为单位)。

BogoMIPS:

6387.99: 一个衡量CPU性能的数字,但现在已经不太常用。

超管理器厂商:

VMware: 这表明CPU是在VMware虚拟机中运行的。

虚拟化类型:

完全: 虚拟机支持完整的硬件虚拟化。

缓存信息:

L1d 缓存L1i 缓存L2 缓存L3 缓存: 这些是CPU的不同级别的缓存大小。缓存越大,CPU访问数据的速度通常就越快。

NUMA 节点0 CPU:

0-3: NUMA节点0上的CPU编号列表。

Flags:

这是一个非常长的列表,列出了CPU支持的各种特性和指令集。例如,fpu表示浮点单元,ssesse2avx等都是SIMD(单指令多数据)指令集,它们可以提高数据处理的速度。其他的标志,如hypervisorvmcall,表明CPU支持虚拟化技术。

chmod 修改文件权限

关于权限具体的描述在 ls 命令中有讲,可以翻上去看看.

修改权限有以下几种方法:

a)赋值法:

chmod u=具体权限,g=具体权限,o=具体权限 文件名

u(user):所属用户权限g(group):用户组权限o(other):除了 所属用户和所属用户组 的其他用户权限

例如如下:

b)加减法:

还可以用 a 表示 all,可以给所有修改权限.

c)权重法:

4 表示 r2 表示 w1 表示 x0 表示 -

例如:

d)可以使用 -R 选项级联修改目录下的所有文件权限.

例如: chmod -R 777 ~/env

e)chmod 修改 所有者 和 所属组

例如如下 所有者 和 所属组 都是 root

现在需要都修改为 admin,如下命令

sudo chown admin:admin /data0/

效果如下:

useradd/usermod/userdel/su/passwd 用户相关操作

a)前置知识

用户信息记录在  /etc/passwd 文件中,一行记录就是一个用户信息.

格式如下(":" 是分隔符):

第一个字段:用户名.第二个字段:密码字段.  这里存储的是加密密码.  现代系统上,这里通常是一个占位符(如 x),实际的密码存储在 /etc/shadow 文件中(此文件只有 root 有读权限,其他用户没有任何权限).第三个字段:uid 用户唯一标识.

uid = 0 一般是超级管理员.uid >= 500 一般是权限系统管理,权限有限.1 <= uid < 500 仅仅使用系统服务资源,不能登录系统.第四个字段:gid 主组编号. gid 是表示用户的初始组,也是唯一标识.第五个字段:用户备注信息.第六个字段:家目录位置.第七个字段:用户默认的 shell.  例如 bash、zsh...... 若为 sbin/nologin ,则用户不能登录.

b)useradd 添加用户.

用法:useradd [-u UID] [-g GID] [-d HOME] [-s] [-c] 用户名

-u: 自定义 uid,默认系统会自动编号.-g:自定义主组 gid,并且这个组是已经存在的.  若不指定,主组系统会创建一个和用户名一样的组作为用户主组.-G:自定义附加组 GID 编号或组名,用逗号隔开,前提是组存在.-d:指定家目录,默认为 /home/用户名.-s:自定义 shell,默认为 /bin/bash.-c:用户备注信息,默认为空.

例如,创建一个 aaa 用户,主组为 12,shell 为 zsh

c)usermod 修改用户信息

用法:usermode [-u UID] [-g GID] [-d HOME] [-s] [-l] 用户名

-l:修改用户名.其他的不赘述了

例如把 aaa 用户名改为 bbb.

d)userdel 删除用户

选项:

-r:删除用户的同时,删除家目录和相关系统邮件.

例如,删除用户 aaa,及其其他信息

userdel -r aaa

e)su 切换用户

用法:su [选项] [-] 用户名

选项:

-:加载目标用户的整个环境(包括 shell 配置文件,如 .bashrc、.bash_profile.....)-c <命令>:表示通过当前用户来执行一个命令,而不启动 shell.

例如:

切换到 root 用户(如果是 root 用户,用户名可以省略):su切换到 aaa 用户:su aaa以用户身份执行单个命令:su -c 'ls -l' 

systemctl

Note:一些老系统中可能是用 service 命令

systemctl start <service>:启动服务。systemctl stop <service>:停止服务。systemctl restart <service>:重启服务。systemctl status <service>:查看服务状态。systemctl enable <service>:设置服务开机自启。systemctl disable <service>:禁止服务开机自启。systemctl list-unit-files:查看服务名列表(展示:服务名 + 状态).systemctl:列出所有已加载的单元(unit)及其状态。

其中关于 systemctl list-unit-files 和 systemctl 的控制:

空格:向后翻一页.b:向前翻一页e:向后翻一条数据./服务名:高亮对应的服务名

systemctl status <service>  以 docker 为栗子如下:

服务状态:Active: active (running) 表示 Docker 服务正在运行。主进程ID:Main PID: 1292 (dockerd) 表示 Docker 守护进程(dockerd)的进程ID是1292。内存使用情况:Memory: 131.5M 表示 Docker 服务当前使用了大约 131.5MB 的内存。启动时间:since 二 2024-05-14 19:13:37 CST 表示 Docker 服务在 2024 年 5 月 14 日19:13:37 CST(中国标准时间)启动。日志信息:输出中还包括了一些Docker守护进程的日志信息,这些日志信息提供了关于Docker服务启动和运行过程中发生的事件的详细信息。

free 查看当前系统内存使用情况

选项如下:

-b:以字节为单位显示内存使用情况。-k:以千字节(KB)为单位显示内存使用情况(默认)。-m:以兆字节(MB)为单位显示内存使用情况。-g:以吉字节(GB)为单位显示内存使用情况。-h:以人类可读的格式(如 G、M)显示内存大小。-l:显示高低内存的利用率。-o:不显示缓冲区/缓存行的信息。-s N:每隔 N 秒刷新一次内存信息。-t:显示物理内存和交换内存的总计。

输出结果解释:

total:总物理内存大小。used:已使用的物理内存大小。free:未使用的物理内存大小。shared:被多个进程共享的内存大小(通常这部分值很小)。buff/cache:被缓冲(buff)和缓存(cache)占用的内存大小。available:估算的可用内存量,这部分内存可以不经过交换(swap)直接被新的应用程序使用。

此外,还会显示交换内存(swap)的使用情况。

a)单位为 MB:

b)单位按照情况来显示

c)每 2 s 刷新一次内存信息.

yum 安装/更新/删除/搜索 软件包

选项:

-y:下载过程中自动确认.

用法:

安装软件包:yum install 软件包名更新软件包:

更新所有软件包:yum update更新特定的软件包:yum update 软件包名删除软件包:yum remove 软件包名查询软件包:

查询已安装的软件包:yum list installed查询可用的软件包:yum list available查询软件包的信息:yum info 软件包名清理缓存:yum clean all搜索软件包:yum seach 包名关键字查看 yum 历史记录:

查看历史记录:yum history撤销历史记录中的某个操作:yum history undo last

yum的配置文件位于/etc/yum.repos.d/目录下。你可以编辑这些文件来添加、删除或修改 yum 仓库。

最常用的操作就是,先搜索软件包是否存在,然后下载对应的包.

history 查看历史命令

直接 history 就可以查看以前执行过的指令.

Ps:这些命令被保存在一个历史文件中(通常是 ~/.bash_history),以便用户可以回顾和重新执行之前的命令。

2.4、进程命令

ps 查看进程状态

a)用法:ps [选型]

b)常用选项如下:

-e 或 -A:显示所有进程.-l:长格式显示,显示简略信息.-r:显示正在运行的进程.-L:显示指定进程 ID 的所有线程.-f:显示完整格式的输出,包括 PPID(父进程 ID)、C(CPU 占用率)、STIME(启动时间).-u [用户]:显示指定用户的进程.-p [PID]:显示指定 PID 的进程信息.aux:按照特定的格式查看进程.

c)案例

查看系统中的所有进程信息:

UID:进程所有者 IDPID:进程 IDPPID:父进程 ID.   0 表示没有父进程(父进程是内核)C:CPU 使用率.  表示最近一段时间(通常是最后一次调度一来)该进程使用 CPU 的近似百分比. STIME:进程启动时间.  这是进程开始运行的时间.TTY:控制终端,表示进程和关联终端类型.  如果没有进程和终端关联(是一个守护进程或内核线程),则这里显示 "?"CMD:显示这个进程启动时使用的命令 或者 可执行文件的名称.

查找某一个进程(例如 docker):

查看进程树:

ps aux 固定格式查看

USER: 运行该进程的用户名。PID: 进程ID%CPU: 该进程当前使用的CPU百分比。%MEM: 该进程当前使用的物理内存百分比。VSZ: 虚拟内存大小(Virtual Set Size),表示进程使用的虚拟内存总量,以KB为单位。它通常包括进程使用的所有库和动态链接的程序段,而不仅仅是它当前使用的内存。RSS: 常驻集大小(Resident Set Size),表示进程当前在物理内存中占用的空间大小,以KB为单位。TTY: 进程关联的终端类型。如果进程没有关联到任何终端(例如守护进程),则此列会显示 ?。STAT: 进程状态。常见的状态有:

R (Running or Runnable): 正在运行或在运行队列中等待。S (Sleeping): 休眠中,等待某个条件形成。D (Disk Sleep): 不可中断的休眠状态,通常是因为在等待I/O操作。T (Stopped or Traced): 停止或追踪状态,进程被停止,通常是因为收到SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU等信号。Z (Zombie): 僵尸状态,进程已终止,但其父进程尚未读取其退出状态。Ssl:表示可能处于休眠状态,而又使用 SSL 进行网络通讯的.Sl:表示在进行 SSL 网络通讯.S+:S 表示处于可中断的休眠状态. + 表示可能该进程在前台运行,意味着和某个终端的会话关联.START: 进程启动的时间。TIME: 进程使用的CPU时间总量,格式为 MM:SS 或 HH:MM:SS(分钟、秒或小时、分钟、秒)。COMMAND: 启动进程的命令名称或命令行。

top 查看各进程的资源占用情况(类似 WIndows 任务管理器)

常用选项:

-d:设置刷新时间间隔. -p [PID]:查看指定进程信息.-u [用户名]:查看特定用户的进程信息.

交互命令(使用 top 命令后):

h:显示帮助.k:终止一个进程. 输入 k 后,会提示输入要终止的进程 ID.q:退出.s:更新刷新频率.f:进入字段管理界面,选择显示哪些列.m:切换显示内存信息.t:切换显示进程和 CPU 信息.P:按照 %CPU 使用率排序.M:按照内存使用率排序.N:按照进程 ID 排序.T:按照 CPU 时间排序.V:虚拟内存使用

例如,查看所有进程信息,每 2s 刷新一次,并按照 %CPU 使用率排序:使用 top -d 2 进入界面后,输入 M

top - :系统当前时间.up:系统开机多长时间.user:当前用户数.load average cpu:平均负载,三个数值分别对应 1min、5min、15min.Tasks:系统当前进程

total:总进程数running:正在运行的进程数.sleeping:睡眠的进程数.stopped:停止的进程数.zombie:僵尸进程数.%Cpu(s): cput 使用率.

us:用户使用 cpu 百分比.sy:系统内核使用 cpu 百分比.id:剩余 cpu 百分比wa:CPU 等待 I/O 操作完成百分比.hi:处理硬件中断 CPU 时间百分比.si:处理软件中断的 CPU 百分比.st:虚拟环境中,当物理 CPU 被其他虚拟机占用时,当前虚拟机无法使用的 CPU 时间百分比. Mem:内存使用情况

total:总内存大小.free:空闲的内存.used:已使用的内存.buff/cache:缓存的内存大小.Swap:虚拟内存信息.进程列表信息:

PID:进程 id.USER:进程所有者.PR:优先级.NI:进程优先级 nice 值,负值表示高优先级,正值表示低优先级.VIRT:进程使用的虚拟内存总量.RES:进程使用的物理内存大小.SHR:共享内存大小.S:进程状态

D:不可终中断的睡眠状态R:运行S:睡眠T:跟踪/停止.Z:僵尸进程.%CPU:进程使用 CPU 占用百分比.%MEM:进程使用物理内存百分比.TIME+:进程使用的 CPU 时间总计.COMMAND:命令名.

pgrep 根据名称查询进程 id

常用选项:

-c:pgrep 默认会列出所有匹配的 PID,但如果只想知道是否至少有一个匹配项,可以使用 -c.-i:匹配的时候忽略大小写.

通常来结合 kill 和 pkill 使用,如下:

kill $(pgrep nacos)

Ps:pkill 更安全简洁一些.

kill/pkill 两种杀死进程的方式

a)kill 命令默认情况下发送 SIGTERM 信号,该信号请求进程安全的终止.

使用 kill 命令时,需要指定进程 PID,例如,要杀死 PID 为 1234 的进程: kill 1234如果知道要发送的信号的具体编号或名称,也可以使用 -s 选项指定. 例如发送 SIGINT 信息(和 Ctrl + C 的效果相同):kill -s SIGINT 1234

b)pkill 命令 和 kill 不同,pkill 允许你根据 进程名 或者 其他属性 来终止进程,而无需知道具体的 PID.  这样使得 pkill 在处理相同名称的多个进程时特别有用.

用法:pkill [选项] [进程名或信息]

-d:仅匹配守护进程(通常 "Daemon" 开头的进程).

例如杀死所有名为 nginx 进程:pkill nginx 

nohup 后台运行命令

nohup 使得我们即使 关闭终端/意外终止 也可以确保命令后台运行.

用法:nohup command &

command 表示要运行的命令.& 表示后台运行.

例如想要后台运行一个名为 my.sh 的脚本:nohup ./my.sh &

并且 nohup 命令会在当前目录下创建换一个 nohup.out 的文件,用来保存标准输出和错误输出.

如果想要将输出重定向到其他文件,可以是使用输出重定向操作符 >,例如:

nohup ./my_script.sh > my_output.log 2>&1 &

nohup:默认情况下,当你关闭终端时,该终端中启动的所有进程都会收到一个 SIGUP 信号,该信号会导致进程终止.  但是 nohup 会忽略这个 SIGUP 信号,确保进程继续运行../my_script.sh > my_output.log:将 my_script.sh 的标准输出重定向到 my_output.log 文件中. 如果文件存在,则内容被覆盖,如果不存在,则创建一个新文件.2>&1:将标准错误(stderr,文件描述符为 2)重定向到和标准输出相同的位置(1 是标准输出流的文件描述符).&:表示命令后台执行.

2.5、网络命令

ping 测试网络连接是否通畅 

ping 命令会像目标主机发送 ICMP 协议的回显请求,如果收到回显响应,说明网络通畅.

用法:ping [选项] 目的地址

选项如下:

-c 次数:指定要发送的 ICMP 回显请求的数量. 不指定该参数,默认无限发送.-i 间隔:指定每个请求之间的时间间隔(单位:秒)-W 超时:指定等待每个响应的超时时间(单位:秒)-s 数量:指定发送数据的字节数-v:显示更多输出信息.-4 或 -6:指定使用 IPv4 或 IPv6.

例如,像 env-base 发送 4 个请求,并且每个数据包大小为 1024 字节(除了 ICMP 数据包中的 数据 部分大小,还包含了 ICMP 头和其他头部信息,例如 IP 头,因此实际的包大小会 大于 1024)

响应数据信息解释: 

icmp_seq=X:表示这是第 X 个 ICMP 请求的响应。ttl=64:生存时间(TTL)是 IP 数据包在网络中传输时可以经过的最大路由器数量。每当数据包通过一个路由器时,TTL 值就会减一。如果 TTL 值减到 0,数据包就会被丢弃。TTL 的初始值通常是由发送者设置的,这里 64 是一个常见的值。time=X ms:这是 ICMP 请求和响应之间的往返时间(RTT),单位是毫秒。这个值越小,表示网络延迟越低。

最后的统计信息:

4 packets transmitted, 4 received:表示发送了 4 个数据包,并全部收到了响应。0% packet loss:表示没有数据包丢失。time 3000ms:表示整个测试过程花费了 3000 毫秒。rtt min/avg/max/mdev = 0.017/0.025/0.037/0.009 ms:

min 是 RTT 的最小值。avg 是 RTT 的平均值。max 是 RTT 的最大值。mdev 是 RTT 的均方差,表示 RTT 值的离散程度。

ip(ifconfig)查看/操作 网接口信息.

Note:新版的 Linux 中,ifconfig 已被 ip 命令取代.

ip 用于显示或操作路由、网络设备、策略路由和隧道.

a)显示所有网络接口和配置:

ip addr show

或者

ip a

名称:lo 代表本地回环接口,通常用于本机上的网络服务和应用之间的通信.状态 <LOOPBACK,UP,LOWER_UP> 表示这是一个回环接口,并且接口已经启动(UP).MTU: mtu 65536 表示最大传输单元为 65536 字节,这对于回环接口来说是常见的,因为它只在本机内部通信。qdisc: qdisc noqueue 表示没有使用队列规则(Queueing Discipline)。IP地址:inet 127.0.0.1/8 是 IPv4 地址,127.0.0.1 是本机地址(localhost),/8 表示子网掩码是255.0.0.0。inet6 ::1/128 是 IPv6 地址,与 IPv4 的 127.0.0.1 具有相同的功能。

netstat 查询网络连接、路由表、接口统计等网络相关信息

Note:新版 Linux 系统中,被视为 ss 工具的替代品

选项:

-a:显示所有活动的网络连接和监听的服务器套接字 -> netstat -a-tuln:和 a 的效果一样(-a 只显示 IPv4,-tuln 还会显示 IPv6)

-t 显示 TCP 连接-u 显示 UDP 连接-l 仅显示监听套接字-n 显示数字形式的地址和端口号,而不是尝试确定它们的名称-r:显示路由表-i:显示每个网络接口的统计信息.

一般我们经常使用的是如下命令(这里以查看 docker 相关的网络连接和监听套接字为例):

解读: 

a)第一行:tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1814/docker-proxy

协议 (tcp 或 tcp6):这表示正在使用的网络协议。tcp 表示 IPv4 上的 TCP 协议,而 tcp6 表示 IPv6 上的 TCP 协议。本地地址 (0.0.0.0:6379 或 :::6379):

0.0.0.0:6379 表示套接字正在监听所有可用的 IPv4 地址(即所有网络接口)上的 6379 端口。:::6379 表示套接字正在监听所有可用的 IPv6 地址(即所有网络接口)上的 6379 端口。外部地址 (0.0.0.0*: 或 :::*):这表示套接字当前没有连接到特定的远程地址和端口(因为它处于监听状态,等待连接)。* 表示接受任何远程地址和端口的连接。状态 (LISTEN):这表示套接字当前处于监听状态,等待来自远程客户端的连接请求。PID/程序名 (1814/docker-proxy 或 1820/docker-proxy):这显示了与套接字关联的进程ID(PID)和进程名。

表示有一个 Docker 容器通过 docker-proxy 在所有可用的 IPv4 地址上监听 TCP 端口 6379.  这里实际上是因为 Docker 容器内的 Redis 容器监听该端口,并通过 Docker 端口映射到宿主机上.

b)第二行:tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1814/docker-proxy

表示同样的服务也在所有可用的 IPv6 地址监听 TCP 端口 6379.

telnet 查看服务器的某一个端口是否可以访问

a)telnet 是一种远程登录的工具,但是由于使用明文传输数据,不安全(很多服务器也默认关闭 telnet 端口),因此现在远程登录服务器的工具都是使用 ssh.

因此 telnet 现在用途就变成了检测服务器的某一个端口是否可以访问.

b)用法:

用法1(登录主机):telnet 服务器IP地址

用法2(确定某个主机端口是否可用):telnet 服务器IP地址 端口号

c)示例

例如,连接 env-base 的 6379 端口,出现以下信息表示连接成功.

Ps: 现在用 telnet 基本看主机端口是否可用,到这一步就结束了.   当然也可以有更多交互操作,如下

按照提示信息,ctrl + ] 进入 socket 交互模式,输入 send ?,可以看到 "?" 支持以下参数占位

例如通过 send ao 进入 socket 交互模式,之后你输入任何东西,按下回车,都是向服务器发送一条消息.

curl 发送请求

这里一般我们不会去手写,能看懂就可以.

选项:

-H 或者 --header:携带请求头 

curl -H "Accept: application/json" http://example.com/api/data-X 或者 --request:指定请求方法为 POST(不指定默认是 GET 请求),并使用 -d 和 --data 选项指定发送的数据.

curl -X POST -d "key1=value1&key2=value2" http://example.com/api/postcurl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://example.com/api/post-O:下载文件. -O 选项指定输出文件的名称(如果省略文件名,则使用 URL 中的文件名).

curl -O http://example.com/path/to/file.zip-i 或 --include:显示 HTTP 响应头.

curl -i http://example.com-l 或 --head:仅显示 HTTP 响应头,不显示内容.

curl -I http://example.com--connect-timeout:设置连接超时(秒),使用 --max-time 设置最大请求时间.

curl --connect-timeout 5 --max-time 10 http://example.com-b 或 --cookie:发送 cookie

curl -b "cookie_name=cookie_value" http://example.com-x 或 - proxy:设置代理

curl -x http://proxy.example.com:8080 http://example.com



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。