当前位置: 首页 > news >正文

【Linux】进程

一.进程

在了解进程之前,我们首先需要弄清楚什么是程序。

在 Linux 系统中,程序本质上是一组静态的可执行指令,通常以文件的形式存在于磁盘上。比如我们常用的 ls 命令,它只是一个可执行程序文件,我们可以通过 which ls 来查看它的具体路径。

当我们在 Linux 上运行一个程序时,系统会为该程序创建一个独立的运行空间,这个空间中包含了程序运行所需的各种资源,例如内存、代码段、堆栈等。这个运行中的程序实例,就是我们所说的 进程

简单来说,程序是静态的代码进程是程序运行时的动态实例

ls 命令为例,当我们每执行一次 ls,Linux 系统都会为它创建一个新的进程,这个进程会有一个唯一的进程号(PID)。如果你连续多次运行 ls,就会看到系统中出现多个不同的 ls 进程。

二.启动进程

当想要启动一个进程时(运行一个命令),主要有两种方法

前台进程
后台进程

当我们执行一个命令,比如ls时,必须等它输出完成后,才能继续输入下一个指令。这是因为该命令在前台运行,此时终端会被该进程占用,直到它执行完毕。

但后台进程就不同了。如果我们在命令后加上一个 &,比如 ls &,这个命令就会在后台运行。这样,我们可以在 ls 还在输出的同时,继续在终端中输入其他指令,不必等待它执行结束。

三.列出正在运行的进程

ps -f显示所有字段的描述

UID 此进程所属的用户 ID(运行该进程的人员)
PID
PPID 父进程 ID(启动它的进程的 ID)
C 进程的 CPU 利用率
STIME 进程开始时间
TTY	与进程关联的终端类型	
CMD 启动此进程的命令

ps -e 显示所有终端的进程(包括后台和内核进程)
然后再加上f可以显示所有字段描述

三.停止进程

kill -9 PID

四.僵尸进程和孤儿进程

当子进程被杀掉的时候,会给父进程发送一个SIGCHLD信号,类似于让父进程做善后(执行wait()函数)。而僵尸进程产生的原因就是这里
当父进程收到SIGCHLD信号时,并没有执行wait()导致子进程虽然被杀掉了,但是还一直存在,浪费系统资源
孤儿进程则是父进程先被kill,子进程没有了父进程,但是此时子进程会被系统自动分配给新的父进程init(PID 1)
所以孤儿进程的影响比较小

五.守护进程

守护进程是在后台默默工作的程序。
比方说打印机的守护进程,一直在后台默默等候人们输入“打印”指令,才会开始工作
tty为?的都是守护进程

六.查看进程利用率(top命令)

实时更新并显示有关物理和虚拟内存、CPU 使用率、平均负载和繁忙进程的信息。
除了top命令,还有一个类似的,htop提供了更直观的界面和更多的功能

F1:查看帮助。
F2:配置界面(如调整显示列)。
F3:搜索进程。
F4:过滤进程。
F5:树状图显示进程关系
F6:按列排序(如 CPU%、内存%)。
F9:终止进程(kill)。
F10:退出。

七.如何识别可疑进程

1.top/htop命令查看​

  • ​CPU 占用过高​​:非系统/已知进程长期占用 >50% CPU。
  • 进程内存RES持续增长且无合理原因。
  • 大量进程处于 D(不可中断休眠)或 Z(僵尸)

按F6排序(CPU、MEM)
按F3搜索关键词(hack等)

2.检查进程的详细信息

ps -ef

  • 随机字符命名(5as12)
  • 路径异常(/tmp/.hidden)
  • 参数含恶意URL

3.检查路径

ls -l /tmp/exe

4.查看网络连接

sudo netstat -tulnp | grep <PID或进程名>

  • 是否存在对外连接
  • 监听非服务端口(6666,2222)

5.终止并删除文件:

kill -9 PID
rm -f /tmp/.hidden
http://www.dtcms.com/a/264042.html

相关文章:

  • ELK日志分析系统(filebeat+logstash+elasticsearch+kibana)
  • Pycharm安装第三方库
  • 【实战】 容器中Spring boot项目 Graphics2D 画图中文乱码解决方案
  • 脑机新手指南(二十一)基于 Brainstorm 的 MEG/EEG 数据分析(上篇)
  • ChatGPT + GitHub Copilot + Cursor 实战提升编程效率
  • Oracle 常用函数
  • WPF中Style和Template异同
  • 【CodeTop】每日练习 2025.7.1
  • 使用 Conda 工具链创建 Poetry 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》
  • 迅为高情性6TOPS算力的RK3576开发板NPU rknn-model-zoo例程演示
  • Windows VMWare Centos Docker部署Springboot + mybatis + MySql应用
  • Windows版minio下载安装使用教程
  • 最大子数组和-力扣
  • 微软开源GitHub Copilot Chat,AI编程领域迎新突破
  • ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模
  • 康养休闲旅游服务实训室建设方案:数字化赋能与全链条实训创新
  • 在vscode中进行git推送拉取的详细方法
  • InnoDB索引
  • 深入解析NumPy的核心函数np.array()
  • ip网络基础
  • k8s一键部署tongweb企业版7049m6(by why+lqw)
  • 计网学习笔记第1章 计算机网络体系结构(灰灰题库)
  • 智能通信领域论文投稿常见问题与解决方案——基于数百篇CA检索稿件的实证分析
  • 【算法】动态规划 矩阵 :62. 不同路径
  • Android屏幕共享+WebSocket实现传输截图
  • tree 命令集成到 Git Bash:可视化目录结构的指南
  • 成为一名大数据平台SRE需要具备哪些基础技能-附录
  • 为什么js是单线程?
  • SpringMVC--使用RESTFul实现用户管理系统
  • MySQL 8.4 备份与恢复完全指南