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

相关推荐
学计算机的计算基2 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana27 分钟前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
AOwhisky9 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
woshihuanglaoshi24 分钟前
数据迁移与版本管理 - Flutter在鸿蒙平台实现数据库升级策略
数据库·学习·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
万亿少女的梦16826 分钟前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
灯澜忆梦9 小时前
GO_并发编程---定时器
开发语言·后端·golang
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
-银雾鸢尾-9 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-10 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#