寻找~昨天的熊

随便写点啥

聊聊进程-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 xxx
 ps -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 xxxurl


xargs –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
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013128262/article/details/77802651
文章标签: python shell 进程
个人分类: linux
想对作者说点什么? 我来说一句

管理进程的小工具 widows

2009年12月23日 3KB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭