• Linux---进程/磁盘管理


    文章目录


    一.Linux中进程的概念

            在Linux中,进程是指操作系统中正在执行的程序的实例。每个进程都由操作系统分配了独立的内存空间,用于存储程序的指令、数据和运行时的堆栈等信息。进程之间相互独立,彼此不会直接影响。

            Linux操作系统使用进程来实现多任务执行。进程可以执行各种不同的任务,包括运行用户应用程序、执行系统服务以及管理系统资源等。每个进程都有自己的唯一标识符(PID),可以通过PID来识别和管理进程。

            进程之间可以通过进程间通信(IPC)机制进行相互通信和数据交换。常用的IPC机制包括管道、消息队列、共享内存和信号等。

    进程的运行状态:

    Linux中,进程有以下几种状态:

    1. 运行态(Running):正在执行的进程。

    2. 就绪态(Ready):等待CPU执行的进程。

    3. 僵尸态(Zombie):已经结束,但是父进程还没有回收资源的进程。

    4. 停止态(Stopped):因为某种原因暂停执行的进程,例如收到了信号SIGSTOP。

    磁盘,内存,CPU的区别

    • CPU是中央处理器的核心,负责处理各种计算任务和进程。
    • 内存又称运行内存,是服务器用于正在运行的程序,进程和数据的地方。
    • 硬盘用于存储数据和文件。

    二.显示系统执行的进程

    2.1: ps 命令

    ps命令用于显示当前系统正在执行的进程,常用的参数:

    1. -e:显示当前系统正在执行的权限
    2. -f:显示进程的详细信息,包括进程的PID,父进程PID,进程状态等
    3. -u:显示指定用户的进程

    示例代码:

    1. [root@localhost1 ~]# ps -ef
    2. #按照CPU使用率进行升序排序
    3. ps -aux --sort %cpu
    4. #按照cpu使用率降序排序
    5. ps -aux --sort -%cpu

    示例输出:

    1. UID PID PPID C STIME TTY TIME CMD
    2. root 2 0 0 11:58 ? 00:00:00 [kthreadd]
    3. root 3 2 0 11:58 ? 00:00:00 [rcu_gp]
    4. root 4 2 0 11:58 ? 00:00:00 [rcu_par_gp]
    5. root 5 2 0 11:58 ? 00:00:00 [netns]
    6. root 7 2 0 11:58 ? 00:00:00 [kworker/0:0H-events_highpri]
    7. root 9 2 0 11:58 ? 00:00:00 [kworker/0:1H-events_highpri]

    在上面1输出中,每一列的含义如下:

    • UID:进程所属于的用户 
    • PID:表示用户的进程
    • PPID:父进程的PID
    • C:CPU的使用情况,表示进程在CPU上占用的时间
    • STIME:进程的启动时间
    • TTY:进程所在的终端
    • TIME:进程运行的时长
    • CMD:进程执行的命令

    2.2 top 命令

    top命令用于实时监控系统的性能和资源使用情况,并按照内存或CPU使用率进行排序。

    示例代码:

    [root@localhost1 ~]# top

     示例输出:

    1. top - 15:51:20 up 3:52, 2 users, load average: 0.00, 0.00, 0.03
    2. Tasks: 303 total, 1 running, 297 sleeping, 4 stopped, 1 zombie
    3. %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.2 hi, 0.0 si, 0.0 st
    4. MiB Mem : 1743.7 total, 83.1 free, 1418.2 used, 417.4 buff/cache
    5. MiB Swap: 2048.0 total, 1703.2 free, 344.8 used. 325.5 avail Mem
    6. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    7. 36220 mysql 20 0 1775464 430940 36396 S 0.7 24.1 0:22.88 mysqld
    8. 36424 root 20 0 0 0 0 I 0.3 0.0 0:01.56 kworker/0:2-pm
    9. 36438 root 20 0 226140 4412 3440 R 0.3 0.2 0:00.05 top
    10. 1 root 20 0 174376 13572 6052 S 0.0 0.8 0:01.37 systemd
    11. 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
    12. 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
    13. 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
    14. 5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns

     示例输出的上半部分含义如下:

    • 当前时间:15:51:20
    • 系统运行时间:3小时52分钟
    • 当前有2个用户登录系统
    • 运行队列的平均负载情况:最近1分钟内的平均负载为0.00,最近5分钟内的平均负载为0.00,最近15分钟内的平均负载为0.03
    • 任务情况:总共有303个任务,其中有1个正在运行,297个正在睡眠,4个被暂停,1个为僵尸进程
    • CPU使用率情况:用户空间占用CPU时间为0.0%,内核空间占用CPU时间为0.0%,改变过优先级进程占用CPU时间为0.0%,空闲CPU时间为99.8%,等待磁盘I/O操作占用CPU时间为0.0%,硬件中断占用CPU时间为0.2%,软中断占用CPU时间为0.0%,虚拟化占用CPU时间为0.0%
    • 内存使用情况:总共有1743.7 MiB内存,其中有83.1 MiB空闲,1418.2 MiB被使用,417.4 MiB被用作缓存
    • 交换空间使用情况:总共有2048.0 MiB交换空间,其中有1703.2 MiB空闲,344.8 MiB被使用,325.5 MiB可用于内存回收

    下半部分含义:

    三.终止进程 

    3.1 kill命令

    kill 命令用于终止进程

    示例代码:

    [root@localhost1 ~]# kill 添加PID

    四.磁盘分区

            在磁盘创建或格式化时,指定文件系统格式类型可以确保磁盘正确的被识别和挂载,以及提供适合的读写性能和功能。同时,不同的文件系统格式还有不同的特性,如支持文件大小、文件系统大小等方面的限制,需要根据需求选择适合的格式类型。

            通过分区可以将操作系统、应用程序和用户数据分开存储。这样,如果需要重新安装操作系统或者更换硬盘,只需要备份和恢复对应的分区,而不影响其他分区。

            磁盘中的最小存储单位是扇区,一个扇区512个字节,从数据存放角度来看,一个数据块默认4KB(4096字节)相当于8个扇区。

    Linux系统中常见的分区:

    1. 根分区(/):用于安装操作系统和系统文件,包括/boot和/目录。

    2. 交换分区(swap):用于虚拟内存,当物理内存不足时,用来存储不常用的内存数据。

    3. /home分区:用于存储用户的个人文件和配置文件。

    4. /var分区:用于存储系统日志文件、数据库文件和其他变化较频繁的文件。

    5. /tmp分区:用于临时文件的存储,存放系统和应用程序临时生成的文件。

    6. /boot分区:用于存储启动加载器和内核映像文件。

    7. 其他分区:根据需要,可以创建其他独立分区,如/data用于存储数据或/app用于存放应用程序文件。

    Linux磁盘数据写入原理:
    Linux中磁盘需要通过操作系统对数据进行写入,默认的磁盘为dos,磁盘首先调用主引导程序mbr(占用一个扇区),该程序默认前446个字节存放主引导程序

    示例操作:

    首先查看你磁盘分区情况

    1. [root@localhost ~]# fdisk -l
    2. Disk /dev/nvme0n1:20 GiB,21474836480 字节,41943040 个扇区
    3. 磁盘型号:VMware Virtual NVMe Disk
    4. 单元:扇区 / 1 * 512 = 512 字节
    5. 扇区大小(逻辑/物理):512 字节 / 512 字节
    6. I/O 大小(最小/最佳):512 字节 / 512 字节
    7. 磁盘标签类型:dos
    8. 磁盘标识符:0x0f127cc4
    9. 设备 启动 起点 末尾 扇区 大小 Id 类型
    10. /dev/nvme0n1p1 * 2048 2099199 2097152 1G 83 Linux
    11. /dev/nvme0n1p2 2099200 41943039 39843840 19G 8e Linux LVM
    12. Disk /dev/nvme0n2:30 GiB,32212254720 字节,62914560 个扇区
    13. 磁盘型号:VMware Virtual NVMe Disk
    14. 单元:扇区 / 1 * 512 = 512 字节
    15. 扇区大小(逻辑/物理):512 字节 / 512 字节
    16. I/O 大小(最小/最佳):512 字节 / 512 字节
    17. 磁盘标签类型:dos
    18. 磁盘标识符:0xf53d2908
    19. Disk /dev/mapper/rhel-root:17 GiB,18249416704 字节,35643392 个扇区
    20. 单元:扇区 / 1 * 512 = 512 字节
    21. 扇区大小(逻辑/物理):512 字节 / 512 字节
    22. I/O 大小(最小/最佳):512 字节 / 512 字节
    23. Disk /dev/mapper/rhel-swap:2 GiB,2147483648 字节,4194304 个扇区
    24. 单元:扇区 / 1 * 512 = 512 字节
    25. 扇区大小(逻辑/物理):512 字节 / 512 字节
    26. I/O 大小(最小/最佳):512 字节 / 512 字节
    27. [root@localhost ~]# fdisk /dev/nvme0n2
    28. 欢迎使用 fdisk (util-linux 2.37.4)。
    29. 更改将停留在内存中,直到您决定将更改写入磁盘。
    30. 使用写入命令前请三思。

    创建磁盘分区:

    1. [root@localhost ~]# fdisk /dev/nvme0n2
    2. 欢迎使用 fdisk (util-linux 2.37.4)。
    3. 更改将停留在内存中,直到您决定将更改写入磁盘。
    4. 使用写入命令前请三思。
    5. 命令(输入 m 获取帮助):n
    6. 分区类型
    7. p 主分区 (0 primary, 0 extended, 4 free)
    8. e 扩展分区 (逻辑分区容器)
    9. 选择 (默认 p):p
    10. 分区号 (1-4, 默认 1): 1
    11. 第一个扇区 (2048-62914559, 默认 2048):
    12. 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-62914559, 默认 62914559): +20G
    13. 创建了一个新分区 1,类型为“Linux”,大小为 20 GiB。
    14. 命令(输入 m 获取帮助):wq
    15. 分区表已调整。
    16. 将调用 ioctl() 来重新读分区表。
    17. 正在同步磁盘。

    格式化分区+临时挂载:

    1. #对新创建的磁盘分区进行格式化
    2. [root@localhost ~]# mkfs.xfs /dev/nvme0n2p1
    3. #将新分区挂载到下载安装Oracle数据库的目录如:/oracle (挂载后该目录所有下载内容将挂载到新建分区)
    4. [root@localhost ~]# mount /dev/nvme0n2p1 /oracle

    永久挂载

    1. vim /etc/fstab
    2. 文件系统名称 挂载点目录 格式化类型 文件参数信息 开机是否检查
    3. /dev/nvme0n2p1 /install xfs 默认defaults 默认0
    4. 通过mount -a 或 reboot 使配置文件生效

    总结

  • 相关阅读:
    Python实现Labelme的Json标注文件与YOLO格式的TXT标注文件相互转换
    IDEA->EasyCode(mapper.xml) 字段无逗号分割问题
    【ML】基于机器学习的心脏病预测研究(附代码和数据集,逻辑回归模型)
    Stearic acid-PEG-FITC 硬脂酸-聚乙二醇-荧光素
    【附源码】计算机毕业设计SSM实验室预约管理系统
    Mybatis-Plus 条件构造器Wrapper
    求解汉诺塔问题【修改版】
    【快速搞定Webpack5】基本配置及开发模式介绍(二)
    深入理解python虚拟机:程序执行的载体——栈帧
    day03 Spring-AOP面向切面编程
  • 原文地址:https://blog.csdn.net/zhoutong2323/article/details/139468870