Skip to content

1. Linux 常用命令

推荐阅读:常用高频 Linux 速查备忘手册

我自己常用的 Linux 命令有 top 查看系统资源、ps 查看进程、netstat 查看网络连接、ping 测试网络连通性、find 查找文件、chmod 修改文件权限、kill 终止进程、df 查看磁盘空间、free 查看内存使用、service 启动服务、mkdir 创建目录、rm 删除文件、rmdir 删除目录、cp 复制文件、mv 移动文件、zip 压缩文件、unzip 解压文件等等这些。

文件操作的命令有哪些?

  • ls:列出目录内容。ls -l显示详细信息,ls -a显示隐藏文件。
  • cd:更改当前目录。cd ..回到上级目录,cd ~回到用户的主目录。
  • pwd:显示当前工作目录的完整路径。
  • cp:复制文件或目录。cp source_file target_file复制文件,cp -r source_directory target_directory复制目录。
  • mv:移动或重命名文件或目录。
  • rm:删除文件或目录。rm -r递归删除目录及其内容。
  • mkdir:创建新目录。
  • cat:查看文件内容。cat file1 file2合并文件内容显示。

如何查看系统的日志文件?

在 Linux 中,可以通过 cat、more、less、tail、head 等命令查看系统日志文件。

也可以直接通过 vim 打开日志文件,然后按照关键字去搜查对应的日志信息。

常见的系统日志文件包括:

  • /var/log/syslog:包含系统范围内的消息和错误日志,包括启动日志、内核日志等,是排查系统问题的首选日志文件之一。
  • /var/log/messages:类似于 syslog,但通常更多关注系统级别的消息和错误。

系统管理的命令有哪些?

  • ps:显示当前运行的进程。ps aux显示所有进程。
  • top:实时显示进程动态。
  • kill:终止进程。kill -9 PID强制终止。
  • df:显示磁盘空间使用情况。df -h以易读格式显示。
  • du:显示目录或文件的磁盘使用情况。
  • free:显示内存和交换空间的使用情况。
  • chmod:更改文件或目录的权限。
  • chown:更改文件或目录的所有者和所属组。

如何查看系统负载?

top 命令是实时查看系统性能的常用工具,系统负载信息通常显示在 top 命令输出的顶部。它还显示了系统运行的进程、内存使用情况等。

二哥的 Java 进阶之路:TOP 命令

Load Average 是什么?

load average 是一个反映系统负载的指标,表示在一段时间内系统正在处理的平均进程数量。通常,它包含三个数值,分别对应过去 1 分钟、5 分钟和 15 分钟的平均负载。

比如说上图中出现的 load average: 1.80, 1.74, 1.83 表示:

  • 1.80:表示过去 1 分钟内,系统平均有 1.80 个进程在等待处理(包括 CPU 正在处理和等待被调度的进程)。
  • 1.74:表示过去 5 分钟内的平均负载。
  • 1.83:表示过去 15 分钟内的平均负载。

load average 的数值可以看作是系统的工作队列长度(等待处理的任务数量)。如果这个数值接近或等于 CPU 核心数,说明系统的负载是合理的。

如果 load average 大于 CPU 核心数,表示系统的进程比 CPU 能处理的多,系统可能处于过载状态。

在单核系统中,load average 数值超过 1 通常意味着系统繁忙(有任务在等待 CPU)。

在多核系统中,假设有 N 个 CPU 核心,load average 接近 N 时表示系统正处于高负载状态,但还在可接受范围内。如果 load average 超过 N,则意味着系统可能过载。

macOS 上可以通过 sysctl -a | grep machdep.cpu.core_count 查看 CPU 核心数,我本机目前是 16 核。

二哥的 Java 进阶之路:macOS 的 CPU 核心数

chmod 的参数讲一下?

chmod 命令在 Linux 中用来改变文件或目录的访问权限。这个命令的使用可以基于符号表示法(也称为文本方法)或者八进制数表示法。

chmod 777 file 赋予文件所有权限,就属于八进制数表示法。7=4+2+1,分别代表读、写、执行权限。

Linux 中的权限可以应用于三种类别的用户:

  • 文件所有者(u)
  • 与文件所有者同组的用户(g)
  • 其他用户(o)

图片来源于网络

①、符号模式

符号模式使用字母来表示权限,如下:

  • 读(r)
  • 写(w)
  • 执行(x)
  • 所有(a)

例如:

  • chmod u+w file:给文件所有者添加写权限。
  • chmod g-r file:移除组用户的读权限。
  • chmod o+x file:给其他用户添加执行权限。
  • chmod u=rwx,g=rx,o=r file:设置文件所有者具有读写执行权限,组用户具有读执行权限,其他用户具有读权限。

②、数字模式

数字模式使用三位八进制数来表示权限,每位数字代表不同的用户类别(所有者、组、其他用户),数字是其各自权限值的总和:

  • 读(r)= 4
  • 写(w)= 2
  • 执行(x)= 1

图片来源于网络

因此,权限模式可以是从 0(无权限)到 7(读写执行权限)的任何值。

  • chmod 755 file:使得文件所有者有读写执行(7)权限,组用户和其他用户有读和执行(5)权限。
  • chmod 644 file:使得文件所有者有读写(6)权限,而组用户和其他用户只有读(4)权限。

网络管理的命令有哪些?

  • ping:检查与远程服务器的连接。
  • wget:从网络上下载文件。
  • ifconfig:显示网络接口的配置信息。
  • netstat:显示网络连接、路由表和网络接口信息。

压缩和解压的命令有哪些?

  • tar:打包或解包.tar文件。tar cvf archive.tar files打包,tar xvf archive.tar解包。
  • gzip / gunzip:压缩或解压.gz文件。
  • zip / unzip:压缩或解压.zip文件。

查找文件的命令有哪些?

  • find:在目录树中查找文件。find /directory/ -name filename

Liunx 下查找一个文件怎么做?

在 Linux 环境下查找文件,有多种命令和方法可以使用。find 命令是最常用的文件查找工具之一,它可以在指定目录下递归查找符合条件的文件和目录。

例如:在当前目录及其子目录中查找名为 "example.txt" 的文件

shell
find . -name "example.txt"

例如:查找 /home 目录中所有 .txt 结尾的文件:

shell
find /home -name "*.txt"

例如:查找 /var/log 目录中修改时间在 7 天以前的 .log 文件

shell
find /var/log -name "*.log" -mtime +7
  1. Java 面试指南(付费)收录的用友金融一面原题:Linux 的常用命令
  2. Java 面试指南(付费)收录的华为 OD 面经同学 1 一面面试原题:Linux 使用过哪些命令
  3. Java 面试指南(付费)收录的小公司面经同学 5 Java 后端面试原题:Liunx 下查找一个文件怎么做
  4. Java 面试指南(付费)收录的华为 OD 面经同学 1 一面面试原题:chmod 的参数讲一下?

2. Linux 系统管理

用户和用户组有什么区别?

在 Linux 中,用户和用户组是系统权限管理的核心概念。

每个用户在 Linux 中都有一个独立的账户,用于标识该用户并控制其对系统资源的访问。用户包括普通用户和超级用户(root)。普通用户的权限有限,只能访问和修改自己拥有的文件和目录,而超级用户拥有系统的最高权限,能够执行任何操作。

每个用户在系统中都有一个唯一的用户 ID(UID),以及一个关联的用户名(login name)。

用户组是用户的集合,用于简化权限管理。每个用户可以属于一个或多个用户组,而每个用户组都有一个唯一的组 ID(GID)。通过将用户分配到不同的组,系统可以更方便地管理对文件和目录的访问权限。

一个文件或目录可以由一个用户和一个用户组拥有,系统根据文件或目录的所有者和所属组来确定其他用户对它的访问权限。

可以使用 groupadd 命令来创建新的用户组。例如:

shell
sudo groupadd developers

可以使用 useradd 命令来创建新的用户。创建用户时可以指定该用户的默认用户组、主目录等。例如,创建一个名为 johndoe 的用户,并将其添加到 developers 组:

shell
sudo useradd -m -g developers johndoe
  • -m:表示创建用户的同时创建用户的主目录(通常在/home/username)。
  • -g:指定用户的初始用户组。

如何用linux命令去查找某个qps?

如果服务通过网络提供访问,可以使用 netstat 或 ss 命令统计特定端口的连接数,并结合 watch 命令来监控实时的连接速率。

例如,统计 HTTPS 服务(通常运行在端口 443)每秒的请求数:

shell
watch -n 1 "netstat -an | grep ':443 ' | grep ESTABLISHED | wc -l"

解释一下:

  • netstat -an:显示所有连接和监听端口。
  • grep ':443 ':过滤出端口 443 的连接。
  • grep ESTABLISHED:过滤出已经建立的连接。
  • wc -l:统计连接数。
  • watch -n 1:每秒刷新一次命令的输出。

观察连接数的变化,可以大致估算出每秒的请求数。

二哥的 Java 进阶之路:技术派的 443 请求数