Java技术八股学习Day27

Linux基础知识

初探 Linux

(1)核心定义与本质

Linux 是自由开源的类 Unix 操作系统,核心是 Linux 内核(由 Linus Torvalds 发起开源项目),单独内核无法构成完整系统,需搭配软件、文档及管理工具形成发行版本。其核心设计理念源自 Unix 的 "一切皆文件",将硬件设备、网络接口等资源均抽象为文件,通过统一接口管理。

(2)诞生与发展

1991 年 Linus Torvalds 开源 Linux 内核,灵感源自教学用的 Minix 系统。发行版本分为两类:商业公司维护(如 Red Hat Enterprise Linux)、社区维护(如基于 RHEL 的 CentOS、基于 Debian 的 Ubuntu)。初学者推荐 CentOS,因其免费开源、安全稳定,与 RHEL 功能高度一致。

Linux 文件系统

(1)核心概念:inode 与 block
  • inode(索引节点):存储文件元信息(权限、大小、修改时间、数据块指针等),每个文件对应唯一 inode,通过 stat 命令可查看。inode 数量固定,用尽后无法创建新文件,即便磁盘有剩余空间。
  • block:存储文件实际数据,由多个扇区组成(常见 4KB),一个文件可占用多个 block,一个 block 仅存放一个文件。
(2)硬链接与软链接
对比维度 硬链接 软链接(符号链接)
inode 关联 与源文件共享同一 inode 拥有独立 inode,指向源文件路径
源文件删除影响 无影响(需删除所有硬链接才彻底删除文件) 链接失效(指向无效路径)
适用对象 仅文件,不可跨文件系统 文件和目录,可跨文件系统
创建命令 ln 源文件 链接文件 ln -s 源文件 链接文件
核心限制 不能对目录、不存在文件创建 无此限制
(3)文件类型

Linux 支持多种文件类型,通过 ls 命令首字符标识:

  • 普通文件(-):存储数据(文档、源码、音视频等);
  • 目录文件(d):管理文件和子目录;
  • 符号链接(l):指向文件路径的快捷方式;
  • 设备文件(b/c):块设备(硬盘)/ 字符设备(键盘);
  • 管道文件(p):进程间通信;
  • 套接字文件(s):进程间网络 / 本地通信。
(4)目录树结构

以根目录(/)为起点,呈层次化组织,关键目录功能:

  • /bin:存放常用二进制命令(ls、cat 等);
  • /etc:系统配置文件(如网络、用户配置);
  • /home:普通用户主目录(如 /home/user);
  • /root:超级用户(root)主目录;
  • /usr:系统应用程序安装目录;
  • /opt:可选应用程序(如 Tomcat)安装目录;
  • /dev:设备文件(如硬盘、键盘);
  • /var:动态数据(日志、缓存等);
  • /tmp:临时文件存储目录。

Linux 常用命令(核心分类)

(1)目录操作
  • 切换:cd(切换目录)、cd ..(返回上一级)、cd /(根目录)、cd ~(用户主目录);
  • 查看:ls(列目录)、llls -l 别名,详细信息)、pwd(显示当前路径);
  • 创建 / 删除:mkdir(创建目录)、rmdir(删除空目录)、rm -r(递归删除目录 / 文件);
  • 复制 / 移动:cp(复制文件 / 目录)、mv(移动 / 重命名)。
(2)文件操作
  • 创建 / 修改:touch(创建文件)、vim(编辑文件,含命令模式、编辑模式、底行模式);
  • 查看:cat(读取文件)、more/less(分页查看)、tail -f(动态监控文件,如日志);
  • 搜索:find(搜索文件 / 目录,如 find /home -name "*.txt")、grep(文本搜索,如 grep "error" log.txt)。
(3)压缩与传输
  • 压缩 / 解压:tar -zcvf(打包压缩为 .tar.gz)、tar -xvf(解压);
  • 文件传输:scp(SSH 安全传输文件 / 目录)、rsync(增量复制,节省带宽)、ftp(FTP 服务器传输)。
(4)权限管理
  • 权限标识:r(读,4)、w(写,2)、x(执行,1),分属所有者(u)、所属组(g)、其他用户(o);
  • 修改权限:chmod(如 chmod 755 file.txtchmod u=rwx,g=rx,o=rx file.txt);
  • 修改所有者 / 所属组:chown(改所有者)、chgrp(改所属组)。
(5)用户与组管理
  • 用户操作:useradd(创建用户)、userdel(删除用户)、passwd(修改密码)、su(切换用户);
  • 组操作:groupadd(创建组)、groupdel(删除组)、groupmod(修改组属性)。
(6)系统与网络状态
  • 系统监控:top/htop(实时进程与资源)、free(内存使用)、df(磁盘空间)、ps(进程信息,如 ps -ef | grep java);
  • 网络命令:ping(测试连通性)、ifconfig/ip(网络接口信息)、netstat/ss(网络连接状态)、nload(实时网络流量监控);
  • 系统控制:shutdown(关机)、reboot(重启)、kill -9 <pid>(强制终止进程)。

Linux 环境变量

(1)分类
  • 按作用域:用户级(~/.bashrc~/.bash_profile,仅当前用户生效)、系统级(/etc/profile/etc/environment,所有用户生效);
  • 按生命周期:临时(export 命令设置,关闭终端失效)、永久(修改配置文件,长期生效)。
(2)读取与修改
  • 读取命令:export -p(列出所有环境变量)、env(列出环境变量)、echo $PATH(查看指定变量值);
  • 修改方式:
    1. 临时修改:export 变量名=值(如 export CLASSPATH=./lib);
    2. 永久修改:编辑对应配置文件(用户级 / 系统级),修改后执行 source 配置文件 生效。
(3)配置文件执行顺序

/etc/environment/etc/profile/etc/profile.d~/.bash_profile/etc/bashrc~/.bashrc

相关推荐
c++之路8 分钟前
C++20概述
java·开发语言·c++20
Championship.23.2412 分钟前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试
芝士就是力量啊 ೄ೨22 分钟前
Python如何编写一个简单的类
开发语言·python
橘子海全栈攻城狮27 分钟前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
逻辑驱动的ken33 分钟前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
MoonBit月兔34 分钟前
「Why MoonBit 」第一期——Singularity Note AI 学习助手
开发语言·人工智能·moonbit
zhangrelay43 分钟前
三分钟云课实践速通--模拟电子技术-模电--SimulIDE
linux·笔记·学习·ubuntu·lubuntu
木木_王1 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
OSwich1 小时前
【 Godot 4 学习笔记】数组(Array)
笔记·学习·godot
冷雨夜中漫步1 小时前
Claude Code源码分析——Claude Code Agent Loop 详细设计文档
java·开发语言·人工智能·ai