Linux进程与其他浅谈

63 阅读5分钟

Linux 基础知识完整笔记

都是很碎的知识点,之后再做整理XD

一、Linux 基础概述

1. 什么是 Linux?

  • 定义:Linux 是一种开源的、类 Unix 操作系统,由 Linus Torvalds 于 1991 年创建。
  • 组成:以内核(Kernel)为核心,结合用户空间工具和应用程序构成完整系统。
  • 特点
    • 开源免费:源代码公开,可自由使用、修改和分发。
    • 稳定可靠:全球开发者社区维护,广泛用于服务器和嵌入式设备。
    • 安全:强大的权限管理和安全机制。
    • 高效灵活:资源管理高效,可高度定制。
  • 发行版:Linux 内核搭配不同软件形成完整系统,常见发行版包括 Ubuntu、Debian、Fedora、CentOS、Red Hat Enterprise Linux (RHEL)、openSUSE 等。

2. 进程与程序

  • 程序:静态的磁盘文件,可执行但未运行,是指令序列和数据。
  • 进程:程序在内存中运行的动态实例,拥有独立地址空间和资源。
  • 进程类型
    • 前台进程:与用户交互,直接在终端运行。
    • 后台进程(守护进程,daemon):在后台运行,独立于终端,通常为系统服务(如 Web 服务器、数据库服务),常以“d”结尾,如 sshd(SSH服务)、crond(定时任务)。

二、进程管理

1. 进程基础

  • 进程标识符
    • PID(Process ID):每个进程的唯一数字标识。
    • PPID(Parent Process ID):父进程的 PID。
    • init 进程:PID 为 1,所有进程的祖先,由内核创建,负责启动系统服务。
  • 查看进程
    • ps aux:显示所有进程的详细信息。
    • ps -ef:显示所有进程,包括父进程信息。
    • top:动态显示进程状态,类似任务管理器。
    • htoptop的增强版,提供更友好的界面,显示CPU和内存使用。

2. 进程状态

  • 常见状态
    • Running (R):运行或等待运行。
    • Sleeping (S):等待事件(如 I/O),分为可中断(Interruptible)和不可中断(Uninterruptible,D)。
    • Stopped (T):暂停(如 Ctrl+Z)。
    • Zombie (Z):进程已终止但未被父进程回收,可用ps aux查看‘Z’标记。
    • Ready:等待 CPU 资源。
  • 状态转换
    • Running -> Sleeping:等待事件。
    • Sleeping -> Running:事件触发。

3. 进程控制

  • 常用命令
    • kill -9 PID:强制终止进程(SIGKILL),慎用以避免数据丢失。
    • kill -15 PID:正常终止进程(SIGTERM)。
    • pgrep name:按名称查找 PID。
    • pkill name:按名称终止进程。
    • jobs:查看当前 shell 的后台作业。
    • bg:将作业置于后台。
    • fg:将作业置于前台。
    • nohup command &:后台运行命令,终端关闭不中断。
  • 进程优先级
    • nice 值:范围 -20(高)到 19(低),默认 0。
    • nice -n 10 command:以 nice 值 10 启动命令。
    • renice 5 PID:修改运行中进程的 nice 值。

4. 进程间通信 (IPC)

  • 定义:进程间交换数据或信息的机制。
  • 常见方式
    • 管道 (Pipe):单向通信,常用于父子进程(如 ls | grep pattern)。
    • 命名管道 (Named Pipe/FIFO):无亲缘进程通信,创建:mkfifo mypipe,写入:echo "Hello" > mypipe,读取:cat < mypipe,检查:ls -l mypipe(显示类型为‘p’)。
    • 其他方式:共享内存(速度快但需同步)和消息队列(适合传递小数据)。

三、系统启动与服务管理

1. 启动流程

  • 步骤
    1. BIOS/UEFI 自检:硬件检测。
    2. 引导加载程序(如 GRUB):加载内核。
    3. 内核初始化:初始化硬件,创建 init 进程。
    4. init 进程启动:启动服务和用户登录。
  • 运行级别
    • 0:关机
    • 1:单用户模式
    • 3:多用户文本模式
    • 5:多用户图形模式
    • 6:重启
  • 查看runlevel

2. systemd 服务管理

  • 定义:现代 Linux 服务管理器,替代 SysVinit。
  • 常用命令
    • systemctl start service:启动服务。
    • systemctl stop service:停止服务。
    • systemctl restart service:重启服务。
    • systemctl status service:查看服务状态。
    • systemctl enable service:设置服务开机自启动。
    • systemctl disable service:取消服务开机自启动。

四、网络基础

1. 网络协议

  • TCP/IP:四层模型(应用、传输、网络、数据链路)。
  • 常见协议
    • TCP(Transmission Control Protocol):可靠、面向连接,通过三次握手建立连接,确保数据顺序到达,适用于文件传输(如HTTP下载)。
    • UDP(User Datagram Protocol):无连接、不可靠,适用于实时性要求高、可靠性要求低的场景(如实时视频流)。
  • 端口示例
    • HTTP:TCP 80
    • DNS:UDP 53

2. 网络配置

  • IP 地址:如 192.168.1.1,用于标识网络中的主机。
  • 子网掩码:区分网络地址和主机地址。
  • 网关:连接不同网络的设备(如路由器)。
  • DNS 服务器:域名解析为 IP 地址。
  • 常用命令
    • ip addr:查看或配置网络接口的 IP 地址。
    • ping www.google.com:测试网络连通性,返回延迟时间。
    • traceroute www.google.com:追踪数据包的路由路径。
    • ss -tuln:查看开放的 TCP/UDP 端口。

3. 防火墙

  • iptables:规则管理网络流量。
  • firewalld:动态管理,提供区域和服务配置。
  • ufw:简单易用的防火墙工具。

五、文件系统(简要补充,基于原始笔记逻辑)

1. 文件系统类型

  • ext4:常见、可靠。
  • XFS:高性能,大容量。
  • Btrfs:支持快照。
  • FAT32/NTFS:兼容 Windows。

2. 目录结构

  • 根目录/
  • 常见目录
    • /bin:常用命令。
    • /etc:配置文件。
    • /home:用户家目录。
    • /var:变化数据(如日志)。
    • /tmp:临时文件。

3. 文件操作

  • 常用命令
    • ls -l:列目录详情。
    • cd /path:切换目录。
    • mkdir dir:创建目录。
    • rm -r file:删除文件/目录。
    • cp src dest:复制。
    • mv src dest:移动/重命名。
    • touch file:创建空文件。

4. 磁盘管理

  • 分区fdisk /dev/sda
  • 格式化mkfs.ext4 /dev/sda1
  • 挂载mount /dev/sda1 /mnt
  • 常用命令
    • df -h:磁盘空间。
    • du -sh dir:目录大小。

六、Shell 编程(简要补充,基于原始笔记逻辑)

1. 什么是 Shell?

  • 定义:命令行解释器,用户与内核交互。
  • 类型:bash(常用)、sh、zsh。

2. Shell 脚本

  • 特点:自动化任务。
  • 示例:以 #!/bin/bash 开头,chmod +x script.sh,运行 ./script.sh

3. 基本语法

  • 变量var=value,使用 $var
  • 条件if [ -e file ]; then ... fi
  • 循环for i in 1 2 3; do ... done