聊聊进程-2-进程的管理

2024-08-29 10:38
文章标签 管理 进程 聊聊

本文主要是介绍聊聊进程-2-进程的管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

进程的管理是运维的基本功之一,对如何玩转shell十分关键

掌握 进程基础概念

进程的创建

  • 前台进程 python xxx.py
  • 后台进程 python xxx.py &
    • 守护进程 nohup python xxx.py &

查看进程pid

pid

$$ $BASHPID 都可以,他们的区别如下脚本

$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656

查询ppid

$PPID

查询本机进程树

pstree -p

已加pid后的操作

基本信息

ps -p
top -p

调试该进程

strace -p
gdb program

神奇的proc目录

/proc/

  • cmdline: 用’\0’分隔的命令行参数

  • cwd: 指向进程当前工作路径的符号链接,可以用来查询进程绝对路径

  • environ: 环境变量列表

  • exe: 指向进程执行文件的符号链接

  • fd: 存储该进程打开的文件句柄的符号链接
  • status: 各种状态信息(例如进程ID,内存使用,信号等)
  • task: 包含该进程所有线程的以TID命名的子目录

根据进程名字查找PID

下面几个方法:

ps -ef | grep xxx | grep -v grep | awk '{print $2}'
ps -ef | grep -w [g]xxx | awk '{print $2}'
pgrep -x xxxps -C xxx -o pid

根据PID判断进程存在与否

ps <pid>
[[ -d /proc/<pid> ]]
kill -0 <pid>

kill -0 返回为0,说明给的进程发送信号成功
,意味着
1. 进程存在
2. 权限允许

进程状态说明

  • D: 不可中断的睡眠
  • R: 等待运行,进程处于运行或就绪状态
  • S: 休眠状态
  • T: 停止状态
  • Z: 僵尸状态

进程返回码

$? 表示上一个命令的返回码,返回码范围:[0-255]
一般用 0 表示成功,非0的返回码,bash有一些特殊含义
- 1: 一般错误
- 2: Shell内置命令用法错误
- 126: 调用的命令不可执行
- 127: “命名不存在”
- 128+n: 致命错误信号“n”
- 130: Control-C终止
- 255: exit的状态码不合法

并发实现

  • 通过各个语言实现多进程多线程,这个这里不细讲,忽略
并发下载:
parallel -j5 wget xxxurlxargs –n 1 –P 6 wget xxxurl
Grep超大日志加速
cat biglog | parallel --pipe grep pattern
改写for loop
 doit() {} export -f doit; cat list | parallel doit```#### 传参数
```bash
seq 5 | parallel echo prefix_{}<div class="se-preview-section-delimiter"></div>
像cat | sh一样
 parallel -j 50 < jobs_to_run

这篇关于聊聊进程-2-进程的管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117624

相关文章

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java