Linux学习5----ps、pstree、kill

ps命令

查询进程信息

基本用法

1.ps
PID TTY          TIME CMD
 16482 pts/0    00:00:00 bash
 24030 pts/0    00:00:00 ps

PID 进程id
CMD 正在执行的系统命令行
TTY 进程所属的控制台
TIME 总时间
2.ps -ef  # 显示Linux所有进程的详细信息
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  8 13:47 ?        00:43:46 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 13:47 ?        00:00:00 [kthreadd]
root          4      2  0 13:47 ?        00:00:00 [kworker/0:0H]

UID: 哪个用户执行的
PID: 进程id
PPID:父进程id
C:cpu使用资源百分比
STIME:进程执行的时间
TTY:该进程在哪个终端执行
TIME:该进程使用CPU总时长
CMD:用户执行某条命令产生的进程信息

3.ps -ef | grep vim # 找出vim相关的进程信息

4.ps aux  # a 显示当前终端下多有进程,包括其他用户的 u 以用户为主的格式显示进程 x显示所有进程
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  8.6  0.0  46532  7016 ?        Ss   13:47  45:46 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          7  0.0  0.0      0     0 ?        S    13:47   0:12 [migration/0]

STAT:进程状态
  S:终端睡眠中,可以被唤醒
  s:进程含有子进程
  R:运行中
  D:不可终端睡眠
  T:已停止
  Z:僵尸进程,父进程异常崩溃
  +:前台进程
  N:低优先级进程
  <:高优先级进程
  L:被锁定
  
5.ps -eH # 显示进程树

pstree

安装

yum install pstree -y

或者 yum install psmisc -y

使用

1.[root@centos ~]# pstree
systemd─┬─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─containerd─┬─6*[containerd-shim─┬─pause]
        │            │                    └─8*[{containerd-shim}]]
        │            ├─containerd-shim─┬─kube-apiserver───9*[{kube-apiserver}]
        │            │                 └─8*[{containerd-shim}]
        │            ├─containerd-shim─┬─etcd───14*[{etcd}]
        │            │                 └─8*[{containerd-shim}]
        │            ├─containerd-shim─┬─kube-proxy───7*[{kube-proxy}]
        │            │                 └─8*[{containerd-shim}]
        │            ├─containerd-shim─┬─kube-controller───7*[{kube-controller}]
        │            │                 └─8*[{containerd-shim}]
        │            ├─containerd-shim─┬─kube-scheduler───8*[{kube-scheduler}]
        │            │                 └─8*[{containerd-shim}]
        │            └─26*[{containerd}]
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─dockerd───33*[{dockerd}]
        ├─irqbalance
        ├─kubelet───17*[{kubelet}]
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd───3*[systemd-udevd]
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───2*[{vmtoolsd}]
2.[root@centos ~]# pgrep docker
1382

kill命令

发送相关信号给进程,达到不同的停止效果

常用信号

  • 1 SIGHUP 挂起进程,终端突然掉线,用户突然退出

  • 2 SIGINT 中断信号,一般常用ctrl + c 发送信号2

  • 3 SIGQUIT 退出信号,一般用ctrl + \ 发送信号3

  • 9 SIGKILL 强制中断信号,一般用于立即杀死进程

  • 15 SIGTERM kill默认使用的信号 终止进程

  • 20 SIGTSTP 暂停进程 一般通过ctrl + z发出

使用

kill -9 pid # 立即杀死进程

kill pid  #终止进程

killall nginx #终止所有的Nginx进程

pkill nginx #杀死所有Nginx进程(包含子进程)

kill -0 pid #判断进程是否存在 存在返回0 不存在返回1

echo $? #shell的特殊变量,取出上一次执行结果

tty  # 查看本窗口连接信息
[root@centos ~]# tty
/dev/pts/0

w # 查看这台机器所有连接信息
[root@centos ~]# w
 12:11:12 up  9:40,  2 users,  load average: 6.53, 6.61, 6.48
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.50.1     11:35    0.00s  0.15s  0.11s -bash
root     pts/1    192.168.50.1     12:10    8.00s  0.07s  0.01s ping baidu.com

pkill -t pts/1 #杀死该连接下的进程
pkill -t -9 pts/1 #杀死所有进程及ssh进程

posted @   shog808  阅读(59)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示