Linux进程管理ps

  • 进程概念
    • 常见的5种进程状态
  • 进程常用命令
    • ps查看进程
      • 查看安全信息
      • ps查看所有进程
        • BSD风格打印
        • ps常用查看命令按内存或CPU排序
        • 完整格式
    • ps常见问题
      • 调整进程优先级
      • ps -aux显示不全被截断
      • 查看僵尸进程
      • 查看进程目录
      • pstree查看进程树
    • top查看动态进程
      • top查看指定pid
      • `htop`
      • `glances`
    • kill操作进程
      • kill列出信号名称
      • kill暂停进程和继续进程
      • kill重启进程
      • kill根据pid杀死进程
      • `killall`根据进程名杀死一组进程
    • pgrep根据名字查pid
    • `pkill`根据名字杀死进程
      • 结束ssh会话
    • 虚拟内存状态查看命令vmstat
    • Linux进程相关
      • pwdx查看pid工作目录
      • 根据pid查看进程完整信息
      • 查看哪些进程占用内存最多
      • 查看哪些进程占用cpu最多
      • 查看进程产生的时间
    • 命令后面加&后台运行
      • 将程序放入后台
      • 查看运行中的后台运行
      • 恢复&后台运行程序为前台运行
      • 将任务放入后台并且暂停
      • 查看暂停程序
      • 将暂停的任务恢复后台运行
      • 后台进程&示例
      • nohup退出账户时进程不结束

进程概念

进程(Process)是计算机中已运行程序的实体,是程序的一个具体实现。当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用。进程除包含程序的静态代码(text),还包含堆(heap)、栈(stack)、数据(data)段,堆用来在进程正在运行时分配所需的内存,栈用来保存临时数据(如函数参数、返回地址、局部变量),数据段用来保存已初始化的变量。

常见的5种进程状态

  • R(运行)(TASK_RUNNING):
    ● 正在运行或在运行队列中等待。
  • S(中断)(TASK_INTERRUPTIBLE):
    ● 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
  • D(不可中断)(TASK_UNINTERRUPTIBLE) :
    ● 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
  • Z(僵死) (TASK_ZOMBIE):
    ● 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
  • T(停止)(TASK_STOPED):
    ● 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行。

进程状态变化

进程常用命令

https://blog.51cto.com/c959c/5331522
进程管理的作用:

  • 判断服务器健康状态
  • 查看系统中所有进程
  • 杀死进程
  • pstree
  • top
  • pidof
  • nice
  • killall

ps查看进程

https://www.linuxcool.com/ps
https://wangchujiang.com/linux-command/c/ps.html
ps命令: ps命令是最基本又非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等,大部分进程信息都是可以通过执行该命令得到的。例如显示系统中终端上的所有进行进程。

选项 描述
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 使用长格式。
-w 宽行输出。
-a 显示终端上的所有进程,包括其他用户的进程。
-r 只显示正在运行的进程。
-x 显示没有控制终端的进程。

查看安全信息

参数 -e 显示所有进程信息,-o 参数控制输出。Pid,UserArgs参数显示PID,运行应用的用户和该应用。

## -e 显示所有进程信息
## -o 参数控制输出
ps -eo pid,user,args

ps查看所有进程

# -a 显示所有用户进程
ps -a

# 以Linux查看系统中所有进程名(只显示进程名)
## -A 显示所有程序
ps -A## -e:此选项的效果和指定"A"选项相同。
### e:列出程序时,显示每个程序所使用的环境变量。
ps -e


BSD风格打印

# BSD风格打印查看系统中所有进程
## -a 所有用户
## -u 以用户为主的格式来显示程序状况
## -x 显示所有程序(带程序路径)
ps aux

ps常用查看命令按内存或CPU排序

# 以内存占用排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=%mem | head# 以CPU占用排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=%cpu | head# 动态查看
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=%mem |head'

完整格式

# 完整格式
ps -ef

ps常见问题

ps命令使用中出现的一些常见问题

调整进程优先级

https://blog.csdn.net/omaidb/article/details/118720971

ps -aux显示不全被截断

PS命令默认显示的命令长度只有80字符,后面的字符会被截断.

# ps后面加w参数,可以加多个w
ps -auxww

查看僵尸进程

# 查看僵尸进程
## stat 进程的状态
## lstart 命令开始的时间
## etime 启动了多长时间
ps -A -o stat,ppid,pid,lstart,etime,cmd | egrep "^[Z z]"# 查看僵尸进程产生的时间
ps -eo pid,lstart,etime,cmd|grep anacron

查看进程目录

Linux进程保存在/proc/;
查看/proc 目录,发现目录下很多以数字开头的目录,
这个数字目录就是 进程号;里面就是进程的内容;
cd /proc/进程号,每个进程号都会生成一个目录,fb目录下是当前进程的活动

/proc目录下的数字,就是进程号

# 查看进程目录
ls /proc/

pstree查看进程树

# 先要安装psmisc
yum install psmisc -y# 查看进程树
pstree

top查看动态进程

# 查看动态进程
top## -c 提供完整的进程路径及名称
## -d 5 设定每隔5秒刷新一次信息
top -cd5

# 查看线程ID
## top默认只能查看进程ID,—H查看线程ID
top -H

top查看指定pid

## -c 提供完整的进程路径及名称
## -d 5 设定每隔5秒刷新一次信息
## -p pid 查看指定pid的资源占用
top -cd 5 -p 833

htop

# 安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 安装htop
yum install htop -y# 查看
htop

glances

# 安装glances
pip3 install glances# 执行glances
glances

kill操作进程

下面是常用的信号。
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权忽略

编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 终端挂断
挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 中断(同 Ctrl + C)
表示结束进程,但并不是强制性的,常用的 “Ctrl+C” 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出(同 Ctrl + \)
9 KILL 强制终止
杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。
18 CONT 继续(与STOP相反,fg/bg命令)
19 STOP 暂停(同 Ctrl + Z)

kill列出信号名称

https://wangchujiang.com/linux-command/c/kill.html

# 查看可:
kill -l

kill暂停进程和继续进程

# 暂停进程
kill -s SIGSTOP pid
# 或
kill -STOP pid# 继续进程
kill -s SIGCONT pid
kill -CONT pid

kill重启进程

# 重启进程:
kill -1 PID

kill根据pid杀死进程

# kill根据pid杀死进程
kill pid# 强制杀死进程:
kill -9 PID

killall根据进程名杀死一组进程

https://www.runoob.com/linux/linux-comm-killall.html

# 安装killall命令
yum install psmisc -y# 结束指定进程名
killall 进程名# 实例: 结束所有bash
killlall -9 bash

pgrep根据名字查pid

参考: https://www.linuxcool.com/pgrep
https://wangchujiang.com/linux-command/c/pgrep.html

-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID;
-x: 与命令名称完全匹配。

# 显示进程名和最小的pid
pgrep -lo httpd
4557 httpd# 显示进程名和最大的pid
pgrep -ln httpd
4566 httpd# 查看以root用户运行的bash进程的pid
pgrep -u root bash

pkill根据名字杀死进程

参考: https://wangchujiang.com/linux-command/c/pkill.html

pkill 名字# 示例
## 查看gaim的pid
pgrep -l gaim
2979 gaim## 结束gaim
pkill gaim# 强制结束进程
pkill -f trojan

结束ssh会话

# 示例2:
[localhost root yum.repos.d] #w18:53:30 up  5:47,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.0.254    18:27    2.00s  0.53s  0.01s w
# 结束pts/0会话
pkill -9 -t pts/0

虚拟内存状态查看命令vmstat

# 语法:vmstat [options] [delay [count]]
# 表示每2秒刷新一次
vmstat 2# 表示每2秒刷新一次,刷新5次后退出
vmstat 2 5

Linux进程相关

pwdx查看pid工作目录

# 查看当前pid进程启动时的工作目录
pwdx pid

根据pid查看进程完整信息

# 查看进程完整信息
ls –ali /proc/pid

cwd符号链接的是进程运行目录;
exe符号连接就是执行程序的绝对路径;
cmdline就是程序运行时输入的命令行命令;
environ记录了进程运行时的环境变量;
fd目录下是进程打开或使用的文件的符号连接。

查看哪些进程占用内存最多

!!!注意: 该软件只支持Centos7,需要使用epel源安装Dstat 0.7.2
Centos8安装的是pcp-dstat 5.3.1,不支持top-mem等参数

dstat --top-mem 1 4

查看哪些进程占用cpu最多

dstat --top-cpu 3 3

查看进程产生的时间

# 查看僵尸进程产生的时间
ps -eo pid,lstart,etime,cmd|grep anacron

命令后面加&后台运行

  • 前台进程和用户交互,需要较高的响应速度,优先级较高;前台进程就是用户使用的有控制终端的进程。
  • 后台进程几乎不和用户交互,优先级略低。 Linux 的守护进程(Daemon)是一种特殊的后台进程,其独立于终端并周期性地执行任务或等待唤醒

& 使用它在后台运行一个占用时间不长的进程。
nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。

Linux下常用以下命令管理进程,包括前后台切换及启停:

  • & :将 & 放在命令的最后,可以把这个命令放到后台执行
  • Ctrl + z :当前台正在执行一个命令时,按键 Ctrl + z,将其放到后台并暂停
  • Ctrl + c :中断当前正在执行的命令
  • jobs :查看当前有多少正在后台运行的命令
  • fg :将后台中的命令调至前台继续运行
  • bg :将后台任务唤醒,并在后台运行

将程序放入后台

# 以后台运行程序
exe_name &

查看运行中的后台运行

# 查看运行中的后台运行
jobs -l


说明:以上输出表示当前终端有1个后台工作进程sleep,工作号1,状态是运行标志是"+"。 "+"号代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。 "-"号代表倒数第二个放入后台的工作,而第三个以后的工作没有"+-"标志了。

恢复&后台运行程序为前台运行

# 恢复&后台运行程序为前台运行
fg job_id

将任务放入后台并且暂停

# 将任务放入后台并且暂停
catl+z

查看暂停程序

# 查看暂停程序
job

将暂停的任务恢复后台运行

# 恢复后台运行
bg job_id

后台进程&示例

在命令后加上& 就会进入后台进程,但不是所有命令都支持后台

#!/usr/bin/env bash
# 快速检查服务器是否可用
date;
for i in {1..100}; do(ping -c 2 rhcsa$i &>>/dev/null && echo "rhcsa$i success" || echo -e "\033[31mrhcsa$i faild\033[0m") &
done
wait;
date

nohup退出账户时进程不结束

nohup&可以不在终端前台运行程序,使用nohup& 符号配合运行一个命令

#
nohup command &

nohup命令可以在你退出帐户之后继续运行相应的进程。
nohup就是不挂起的意思(no hang up),该命令使进程忽略hangup(挂起)信号

# 退出终端时不结束进程,并将输出写入到文件
nohup command > myout.file 2>&1

守护进程(daemon)和一般进程有什么差别呢?

Linux进程管理ps相关推荐

  1. Linux进程管理(ps,pgrep,kill,killall,pkill,nohup,bg,fg)

    文章目录 Linux进程管理 什么是进程?什么是线程?二者的区别? Linux进程管理命令 ps命令 使用方法案例 ps带减号和不带减号的区别 查看进程树的命令pstree pgrep命令 kill命 ...

  2. Linux 进程管理 ps、top、kill

    文章目录 进程管理 进程字段名 进程的状态 查看进程ps(Process Status) Unix风格的参数 BSD风格的参数 GNU风格的参数 案例1:将目前属于本用户这次登入的 PID 与相关信息 ...

  3. linux进程管理 ps,Linux - 进程管理,ps与top

    一个运行的程序,可能有多个进程. PID进程ID. UID启动进程的ID. 进程所属组GID. 进程的状态R运行.S睡眠.Z僵尸. 父进程管理子进程,父进程终止的时候子进程也会终止. 常用的组合为: ...

  4. Linux进程管理之ps的使用

    主题Linux进程管理之ps工具的使用 一ps工具的介绍 ps: process state  进程状态 ps - report a snapshot of the current processes ...

  5. linux ps 进程组,linux进程管理(2)---进程的组织结构

    一.目的 linux为了不同的进程管理目的,使用了不同的方法组织进程之间的关系,为了体现父子关系,使用了"树形"图:为了对同一信号量统一处理,使用了进程组:为了快速查找某个进程,使 ...

  6. Linux进程管理四大工具ps \dstat\ top\ htop

    Linux进程管理之"四大名捕" 一.四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手"无情&qu ...

  7. linux进程管理机制,linux进程管理,linux进程管理机制

    linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...

  8. Linux—进程管理

    1. 进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的 ...

  9. Linux 进程管理工具

    Linux进程管理命令:     pstree.ps.top.pidof.htop.glances.pmap.vmstat.dstat.kill.pkill.job.bg.fg.nohup.pgrep ...

最新文章

  1. Keepalived+LVS+Nginx+DRBD+Heartbeat+Zabbix集群架构
  2. WebSocket数据加密——AES与RSA混合加密
  3. mysql备份到带库_RMAN备份恢复——备份到带库的性能
  4. 代码注释(图案:键盘)
  5. JAVA Map 和 List 排序方法
  6. IBM MQ 使用指南
  7. sql server 2008安装图解
  8. Windows设置程序 .bat 开机自启动
  9. 洛谷 P1560 [USACO5.2]蜗牛的旅行Snail Trails(不明原因的scanf错误)
  10. 2019JS必看面试题
  11. 电力监控系统的研究与应用
  12. centos下Vim编辑器配置
  13. vue 回车事件 失焦事件
  14. 转载 | 2020年腾讯技术工程十大热门文章
  15. IOS系统自带方法将汉语转换成拼音
  16. 卷积神经网络理解(一):滤波器的意义
  17. Spring 教程(一)
  18. Java一对多、多对多关系示例
  19. 指数函数----e是什么?
  20. e的根号x次方的不定积分:整体代换+分部积分法

热门文章

  1. 【Go学习】go语言圣经学习笔记
  2. FastDFS布式文件系统仿抖音小视频实现
  3. C语言的符号表和类型系统1
  4. IDEA WebLogic远程调试
  5. 【论文译文】StyleGAN
  6. 【TensorFlow】Mnist数据集 - RNN
  7. 斯里兰卡地理位置极佳,为什么却发展不起来?
  8. 高效生成均匀分布的点:快速泊松碟采样算法实现(Fast Poisson Disc Sampling)
  9. 修改Typora编辑器的字体
  10. NLP实践六:词袋模型到word2vec