当前位置: 首页 > news >正文

Java面试黄金宝典42

1. 查看进程打开了哪些文件

  • 定义

在 Linux 系统里,每个进程都有与之对应的 /proc 目录,该目录存有该进程的各类信息。其中,/proc/<pid>/fd 目录存放着此进程打开的所有文件描述符,每个文件描述符指向一个打开的文件。通过查看这个目录,就能知晓进程打开了哪些文件。

  • 要点
  1. /proc 文件系统属于虚拟文件系统,用于提供内核和进程的信息。
  2. /proc/<pid>/fd 目录下的文件描述符链接指向实际打开的文件。
  • 应用

在排查系统资源使用问题、调试程序时,了解进程打开的文件很有帮助。比如,若程序出现文件读写错误,可查看进程打开的文件是否正确。

  • 代码示例

java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ProcessOpenFiles {
    public static void main(String[] args) {
        int pid = 1234; // 需替换为实际的进程 ID
        try {
            Process process = Runtime.getRuntime().exec("ls -l /proc/" + pid + "/fd");
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

2. Linux 如何查看端口被哪个进程占用

 

  • 定义

在 Linux 系统中,可借助 netstat 或 ss 命令查看网络连接信息,其中包含端口和对应的进程。这些命令会列出所有网络连接,通过过滤指定端口,就能找出占用该端口的进程。此外,lsof 命令也能直接查看指定端口被哪个进程占用。

  • 要点
  1. netstat 和 ss 命令可用于查看网络连接信息。
  2. lsof 命令能直接查看指定端口对应的进程。
  • 应用

在启动新服务时,若端口被占用,可通过此方法找出占用端口的进程,然后决定是否关闭该进程以释放端口。

  • 代码示例

java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PortOccupiedProcess {
    public static void main(String[] args) {
        int port = 8080; // 需替换为实际的端口号
        try {
            Process process = Runtime.getRuntime().exec("lsof -i :" + port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
            process.waitFor();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

3. top 常用指令

 

相关文章:

  • 2.ElasticSearch-Java API
  • 面试算法高频04-分治与回溯
  • Redis 简介+部署+常用命令!!!
  • 探秘传感器类型:解锁科技新视界
  • 关于使用python 安装 flask-openapi3扩展,使用docker 环境的完整复盘
  • oracle 索引失效
  • ffmpeg基础指令学习
  • SQL:DDL(数据定义语言)和DML(数据操作语言)
  • 旅游-第16届蓝桥第3次STEMA测评Scratch真题第2题
  • JavaScript 事件对象(Event)
  • redis集群模式
  • 数据驱动可视化实战:图表狐精准生成图表的完整数据范式
  • 前端基础:React项目打包部署服务器教程
  • Mysql-事务和索引
  • 设计模式之桥接、组合、装饰模式
  • 深度学习 Deep Learning 第20章 深度生成模型
  • Java 面试系列:深入了解 Java 中的异常处理 + 面试题
  • react 中将生成二维码保存到相册
  • 实现usb的MTP功能
  • Springboot切换到3.3.4后,使用spring security一些小问题记录
  • 网站开发可行性报告/seo排名优化公司
  • wordpress轮翻图参数/一点优化
  • 网站设计与网页配色实例精讲/搜收录网
  • wordpress 非插件代码高亮/seo优化外链平台
  • 企业网站系统设计与实现/万能软文模板
  • 湖北网站建设费用/网络销售就是忽悠人