自学内容网 自学内容网

linux-进程管理-进程查看与控制

Linux 进程管理:进程查看与控制

一、进程概述

进程是操作系统中执行中的程序。Linux 将每个运行的程序看作是一个进程,每个进程都有唯一的进程ID (PID)。在 Linux 系统中,进程管理是非常重要的,它能够帮助系统管理员和用户查看、管理、优化系统资源的使用情况。

Linux 提供了丰富的命令来查看和控制进程,例如 pstophtopkill 等等。这些命令允许用户监控和控制系统中运行的进程,以确保系统资源的合理使用,并避免进程阻塞或占用过多资源。

二、进程查看

  1. ps 命令
       ps 是 Linux 中用于显示当前进程状态的最基本命令。它可以显示与用户或系统相关的进程信息。

- 常用选项
     - ps aux:显示所有用户的所有进程,包括系统进程。
     - ps -ef:提供更详细的进程信息,包括进程的父进程 (PPID)。

- 输出字段解释
     - PID: 进程 ID
     - USER: 进程所属用户
     - %CPU: 进程占用的 CPU 百分比
     - %MEM: 进程占用的内存百分比
     - VSZ: 进程使用的虚拟内存大小
     - RSS: 进程占用的物理内存大小
     - TTY: 进程运行的终端
     - STAT: 进程状态 (如 R:运行,S:睡眠,Z:僵尸进程等)
     - COMMAND: 启动进程的命令

例如,查看当前所有进程:
       ps aux    

  1. top 命令
       top 是一个实时动态的进程查看工具,可以显示系统中占用资源最多的进程,并提供有关 CPU、内存和任务的动态信息。

- 常用选项
     - top -u username:只显示特定用户的进程。
     - top -p PID:只显示指定进程的动态信息。
     
   top 输出信息不断刷新,用户可以通过上下箭头来导航进程,按 q 退出。

  1. htop 命令
       htoptop 的增强版,提供了更加友好的用户界面,支持上下滚动以查看更多进程信息,并且可以直接通过键盘和鼠标进行交互。

- 主要功能
     - 可以按进程的 CPU 或内存使用率进行排序。
     - 提供进程树视图,清晰显示进程之间的父子关系。

运行 htop
       htop    

  1. pidof 命令
       pidof 用于获取某个正在运行的进程的 PID。例如:
           pidof sshd    
       该命令会返回 sshd 进程的 PID。

三、进程控制

  1. kill 命令
       kill 用于发送信号给进程,通常用来终止进程。其基本用法是:
           kill [信号] PID    

- 常用信号
     - SIGTERM (15):请求进程友好地终止,这是默认信号。
     - SIGKILL (9):强制终止进程,不能被捕获或忽略。
     - SIGHUP (1):重新加载进程的配置文件。

例如,终止进程 PID 为 1234 的进程:
       kill 1234    

如果进程无法正常响应,可以使用 SIGKILL 信号强制终止:
       kill -9 1234    

  1. killall 命令
       killall 可以根据进程名称来终止所有匹配的进程。例如:
           killall sshd    
       该命令会终止所有名称为 sshd 的进程。

  2. pkill 命令
       pkill 是根据进程名称、用户、会话等条件来终止进程的工具。它与 killall 类似,但功能更加灵活。例如:
           pkill -u username    
       该命令会终止所有属于指定用户的进程。

  3. nicerenice 命令
       nice 用于调整进程的优先级。Linux 中进程的优先级范围为 -20 到 19,值越小,优先级越高。默认情况下,进程的优先级是 0。

使用 nice 来启动进程并设置优先级:
       nice -n 10 command    

renice 用于修改正在运行的进程的优先级。例如,将 PID 为 1234 的进程优先级设置为 5:
       renice 5 1234    

  1. bgfg 命令
       - bg:将后台停止的任务恢复为在后台运行。
       - fg:将后台运行的任务调回前台继续运行。

例如,将一个正在运行的命令暂停并放入后台:
       command &    
   如果要将其调回前台:
       fg %1    

  1. nohup 命令
       nohup 可以让进程在用户退出终端后继续运行。例如:
           nohup command &    

这使得命令在退出 shell 后仍然保持运行状态,并将输出重定向到 nohup.out 文件。

四、进程状态

  1. 进程状态解释
       在 pstop 命令输出中,我们可以看到进程的状态。主要的进程状态包括:
       - R (Running): 进程正在运行或在运行队列中等待。
       - S (Sleeping): 进程在等待某个事件(如输入或资源)。
       - D (Uninterruptible Sleep): 不可中断的睡眠状态,通常是等待 I/O。
       - T (Stopped): 进程已停止,通常是通过 ctrl+z 使其暂停。
       - Z (Zombie): 僵尸进程,进程已经终止,但其父进程尚未回收它的退出状态。

  2. 僵尸进程处理
       僵尸进程占用系统资源并可能导致系统问题。如果系统中存在僵尸进程,可以通过终止其父进程来强制清除僵尸进程:
           kill -HUP PID_of_parent    

五、进程优先级与调度

Linux 使用进程优先级来决定 CPU 的分配,进程的优先级可以通过 nice 值来调整。系统中具有较高优先级的进程将优先获得 CPU 时间。通过调整进程的优先级,用户可以控制某些进程的资源分配。

进程调度策略包括:
   - SCHED_OTHER:这是 Linux 的默认调度策略,适用于普通进程。
   - SCHED_FIFO:实时调度策略,采用先进先出的方式,优先处理高优先级的进程。
   - SCHED_RR:实时轮转调度策略,与 FIFO 类似,但在每个时间片后进程会被重新调度。

用户可以通过 chrt 命令来查看或更改进程的调度策略。

六、总结

在 Linux 系统中,进程管理是非常关键的操作。通过使用 pstophtop 等工具,用户可以轻松查看系统中的进程状态。而通过 killpkillnice 等命令,用户可以有效控制进程的运行与终止,合理分配系统资源,确保系统的高效运行。

进程管理的核心在于理解不同进程状态,合理使用系统资源,避免进程阻塞或资源消耗过多。这不仅有助于提高系统性能,还能够防止系统出现不稳定的情况。


原文地址:https://blog.csdn.net/Flying_Fish_roe/article/details/142323283

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!