聊聊进程-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

相关文章

Linux中的进程间通信之匿名管道解读

《Linux中的进程间通信之匿名管道解读》:本文主要介绍Linux中的进程间通信之匿名管道解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基本概念二、管道1、温故知新2、实现方式3、匿名管道(一)管道中的四种情况(二)管道的特性总结一、基本概念我们知道多

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Linux进程终止的N种方式详解

《Linux进程终止的N种方式详解》进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束,下面小编为大家整理了一些常见的Linux进程终止方式,大家可以根据需求选择... 目录前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.