进程管理


  • 了解进程 状态/生命周期
  • 查看进程
  • 管理进程 kill killall pkill
  • 进程的调度
  • 进程的nice

了解进程状态/生命周期

什么是进程?

进程的状态?

进程的生命周期?

查看进程

[bavduer@system_manager ~]$ sudo yum -y install psmisc htop atop net-tools

##查看特定进程的信息,静态 <top可以动态查看进程的信息>
[bavduer@system_manager ~]$ sudo ps aux | grep sshd ---(10000)查看指定进程的静态信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 6775 0.0 0.4 112756 4320 ? Ss 11:13 0:00 /usr/sbin/sshd -D
root 18950 0.0 0.6 161360 6144 ? Ss 17:12 0:00 sshd: bavduer [priv]
bavduer 18952 0.0 0.2 161360 2348 ? S 17:12 0:00 sshd: bavduer@pts/0
bavduer 19057 0.0 0.0 112724 988 pts/0 S+ 18:09 0:00 grep --color=auto sshd aux:
-ax: 显示所有进程的pid、tty、cmd、cpu占用总时间
-u: 显示用户列表中的所有硬件使用信息 grep: 可以用来过滤特定字符或特定程序名 grep "string字符串" USER: 运行进程的用户
PID: 子进程ID -- ppid父进程ID
%CPU: CPU占用率
%MEM: 内存占用率memory
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态
man ps (/STATE) R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠 (usually IO)
T 停止的进程/暂停⏸️
Z 僵尸进程
X 死掉的进程【了解 】
Ss s进程的领导者,父进程
S< 优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行 START: 进程启动时的时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名 [bavduer@system_manager ~]$ sudo ss -anptu | grep sshd (10000)
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=6775,fd=3))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=6775,fd=4)) Netid: 网络连接协议
State: 监听状态
Recv-Q: 网络接收队列
Send-Q: 网络发送队列
Local Address:Port: 本地地址:端口号
Peer Address:Port: 远端地址:端口号 [bavduer@system_manager ~]$ sudo netstat -anptu | grep sshd (10000)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6775/sshd
tcp 0 0 192.168.161.100:22 192.168.161.1:53983 ESTABLISHED 18950/sshd: bavduer
tcp6 0 0 :::22 :::* LISTEN 6775/sshd
Recv-Q Send-Q分别表示网络接收队列、发送队列. Q是Queue的缩写.
这两个值通常应该为0,如果不为0可能是有问题的 ##pstree查看进程树
[bavduer@system_manager ~]$ sudo pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}] [bavduer@system_manager ~]$ sudo pstree -p
systemd(1)─┬─NetworkManager(5987)─┬─{NetworkManager}(6117)
│ └─{NetworkManager}(6151)
├─agetty(6040)
├─auditd(5320)───{auditd}(5327)
├─crond(6000)
├─dbus-daemon(5924)
├─lvmetad(3135)
├─master(6954)─┬─pickup(19038)
│ └─qmgr(6960)
├─polkitd(5897)─┬─{polkitd}(5979)
│ ├─{polkitd}(5994)
│ ├─{polkitd}(5999)
│ ├─{polkitd}(6010)
│ ├─{polkitd}(6013)
│ └─{polkitd}(6033)
├─rsyslogd(6776)─┬─{rsyslogd}(6808)
│ └─{rsyslogd}(6811)
├─sshd(6775)───sshd(18950)───sshd(18952)───bash(18953)───pstree(19265)
├─systemd-journal(3115)
├─systemd-logind(5916)
├─systemd-udevd(3139)
└─tuned(6777)─┬─{tuned}(7060)
├─{tuned}(7061)
├─{tuned}(7062)
└─{tuned}(7076) ##pgrep查看特定进程的pid号, 常常与kill联合使用, 杀死问题进程
-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个
[bavduer@system_manager ~]$ sudo pgrep sshd --服务名或者命令名
6775
18950
18952
[bavduer@system_manager ~]$ sudo pgrep -l sshd
6775 sshdtingnfjangj
18950 sshd
18952 sshd
[bavduer@system_manager ~]$ sudo pgrep -o sshd ---显示最高的父进程
6775
[bavduer@system_manager ~]$ sudo pgrep -n sshd ---显示最低的子进程
18952![nethogs](img/nethogs_state.png)

top动态查看进程信息

  • buffers: 块设备数据缓冲,记录文件系统metadata(目录\权限\属性)
  • cached: 文件内容的缓冲
  • us: 用户使用CPU的百分比
  • sy:内核使用CPU的百分比
  • ni: 用户进程空间内改变过优先级的进程占用CPU的百分比
  • id: 空闲CPU百分比
  • wa: 等待输入输出的CPU时间百分比
  • hi: 硬件中断
  • si: 软件中断
  • st: CPU实时

htop动态查看进程信息

进程管理kill、killall、pkill

 1) SIGHUP		重新加载配置
2) SIGINT 键盘中断 ^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20) SIGTSTP 暂停^Z
A. kill案例1: 杀死vim进程<****** 9信号15信号>
[root@system_manager ~]# ps aux | grep vim
root 5594 0.1 0.2 151492 5120 pts/0 S+ 11:37 0:00 vim /root/b.txt
root 5609 0.0 0.0 112720 984 pts/1 S+ 11:37 0:00 grep --color=auto vim
[root@system_manager ~]# kill 5594
[root@system_manager ~]# ps aux | grep vim
root 5657 0.0 0.0 112720 984 pts/1 S+ 11:38 0:00 grep --color=auto vim B. kill案例2: 杀死远程sshd连接
[root@system_manager ~]# ps aux | grep sshd
root 1162 0.0 0.2 112796 4296 ? Ss 10:59 0:00 /usr/sbin/sshd -D
root 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1
root 5764 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd
[root@system_manager ~]# kill -9 1162
[root@system_manager ~]# ps aux | grep sshd
root 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1
root 5795 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd
[root@system_manager ~]# kill -9 3665 c.killall案例:
[root@system_manager ~]# ps aux | grep vim
root 6000 0.0 0.2 151568 5232 pts/0 S+ 11:43 0:00 vim file1.txt
root 6052 0.0 0.2 151564 5224 pts/1 S+ 11:44 0:00 vim file2.txt
root 6281 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vim
[root@system_manager ~]# killall vim
[root@system_manager ~]# ps aux | grep vim
root 6313 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vim d.pkill案例:
[root@system_manager ~]# w
17:29:06 up 21 min, 4 users, load average: 0.00, 0.03, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 107月18 ?xdm? 28.49s 0.26s /usr/libexec/gnome-session-binary --sessio
root pts/0 10.18.41.54 17:18 1:54 0.04s 0.04s -bash
root pts/1 10.18.41.54 17:10 1:46 0.06s 0.06s -bash
root pts/2 10.18.41.54 17:11 2.00s 0.12s 0.01s w
[root@system_manager ~]# pkill -9 -t pts/0
[root@system_manager ~]# w
17:29:35 up 22 min, 3 users, load average: 0.00, 0.03, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 107月18 ?xdm? 28.43s 0.26s /usr/libexec/gnome-session-binary --sessio
root pts/1 10.18.41.54 17:10 2:15 0.06s 0.06s -bash
root pts/2 10.18.41.54 17:11 7.00s 0.13s 0.02s w

进程前后台调度

1、前台运行:
# firefox 192.168.1.250
会发现该程序一直占用终端,其他命令不能够再在这个终端运行
2、后台运行
1)命令执行的时候,直接将其放置于后台运行
# firefox 192.168.1.250 &
[1] 6222
后台运行不会占用执行命令的终端,用户仍然可以使用这个终端做操作
2)对于一个已经运行的命令,如何将其放置于后台 ctrl+z
# firefox 192.168.1.250
[1] Done firefox 192.168.1.250
[2]+ Stopped firefox 192.168.1.250
ctrl+z将前台进程放置于后台,但是该进程在后台是停止的状态
# jobs //查看后台进程运行状态
[2]+ Stopped firefox 192.168.1.250
# bg 2 //激活后台进程
[2]+ firefox 192.168.1.250 &
# jobs
[2]+ Running firefox 192.168.1.250 & bg 任务编号 : 指定任务在后台运行
fg 任务编号 : 将后台运行的命令变成前台运行
# fg 2
firefox 192.168.1.250 注意:不管你是前台运行,还是后台运行,只要终端一关闭,进程就停止了。
那么如何让一个命令或者程序脱离终端?
使用nohup命令。
# nohup firefox 192.168.1.250 &
[1] 6537
# nohup: ignoring input and appending output to `nohup.out' //按回车

进程的nice值

谦让值:nice
作用:指定或者调整用户进程的nice值
nice值越高,该进程抢占资源的能力越弱
nice值越低,该进程抢占资源的能力越强
范围:-20~19 相关命令
nice -- 运行时直接设置nice值
用法: nice -n 数字 command renice -- 对于已经运行的,调整nice值
用法: renice 数字 PID

Linux系统管理实战-进程管理的更多相关文章

  1. 【Linux学习】Linux系统管理1—进程管理

    Linux系统管理1-进程管理 一.Linux的三种进程 Linux包括3中不同类型的进程: 交互进程:由一个shell启动的进程.交互进程可以在前后台运行 批处理进程:该进程和终端无联系,是一个进程 ...

  2. Linux系统管理10——进程和计划任务管理

    Linux系统管理10——进程和计划任务管理 一.程序和进程的关系 1.程序 ·保存在硬盘.光盘等介质中的可执行代码和数据 ·静态保存的代码 2.进程 ·在CPU及内存中运行的程序代码 ·动态执行的代 ...

  3. Linux 系统管理04--账号管理

    Linux系统管理04--账号管理 一.用户账号管理 1.用户账号概述 (1)用户账号的常见分类: 1>超级用户:root uid=0 gid=0 权限最大. 2>普通用户:uid> ...

  4. Linux 系统管理06--磁盘管理

    Linux系统管理06——磁盘管理 一.磁盘结构 1.硬盘的物理结构 盘片:硬盘有多个盘片,每个盘片2面 磁头:每面一个磁头 2.硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇形区存放512字节 ...

  5. Linux学习之进程管理(十九)

    Linux学习之进程管理 进程查看 查看系统中所有进程,使用BSD操作系统的格式 语法:ps aux 选项: a:显示所有前台进程 x:显示所有后台进程 u:显示这个进程是由哪个用户产生的 语法:ps ...

  6. Linux学习之进程管理

    |-进程管理     进程常用命令        |- w查看当前系统信息        |- ps进程查看命令        |- kill终止进程        |- 一个存放内存中的特殊目录/p ...

  7. Linux网络和进程管理

     1) 计算机网络是通过外围的设备和连接,将分布在相同或不同区域的多台计算机 连接在一起所形成的集合.网络中的计算机实现彼此间互相通信,并且可以共 同使用硬件.软件和数据资源,实现资源共享.Lin ...

  8. Linux网络配置&进程管理

     原理图 查看ip和网关

  9. Linux系统分区 进程管理 软件包安装

    对于一块新的磁盘来说,系统能够使用需要有分区.格式化文件系统.挂载等主要操作,下面通过命令的方式对一块磁盘进行操作. 一. Linux系统分区 1.1 在虚拟机开机前选择虚拟机配置,添加一个新的SCS ...

  10. 深入Linux内核架构——进程管理和调度(下)

    五.调度器的实现 调度器的任务是在程序之间共享CPU时间,创造并行执行的错觉.该任务可分为调度策略和上下文切换两个不同部分. 1.概观 暂时不考虑实时进程,只考虑CFS调度器.经典的调度器对系统中的进 ...

随机推荐

  1. sudo apt update 没有 Release 文件

    注: 不同环境出错原因可能不同,本文仅供参考. 今天在Ubuntu 19.04 系统运行指令 sudo apt update 时,忽然提示错误,报错如下: 404 Not Found [IP: 101 ...

  2. mysql命令行如何执行sql脚本

    本文介绍在windows操作系统和Linux操作系统中,如何在命令界面模式下执行对应的sql脚本到mysql数据库 Windows操作系统下 mysql -u root -p db1 < E:\ ...

  3. C++ NRV优化

    NRV,named return value 某个函数返回一个对象时,在外部接收 A a = Fun(); 会调用复制构造函数 会损失性能 为何不能将函数Fun定义成传入引用a,然后直接在a上进行操作 ...

  4. git入门123

    一.新手上路 最重要的4招: 1. 初始化本地仓库 git init 或者 git clone 远程仓库地址 2.添加改动文件 git add 改动的文件名或者目录 偷懒的话可以直接 git add ...

  5. vue - 解决页面跳转到外部链接后,ios回退到本页面,生命周期,路由导航守卫钩子都无法触发的问题

    虽然加班,最近心情还是可以的,没多少bug找上门. 乐级生悲,遇到了个奇葩的坑,花了点时间百度才解决...但我离不开的'板砖'是安卓的,对此坑是抗拒的,完全没问题... #此坑描述 ...订单详情某按 ...

  6. Kubernetes之Pod详解

    1.Pod生命周期 pod创建 1. API Server 在接收到创建pod的请求之后,会根据用户提交的参数值来创建一个运行时的pod对象. 2. 根据 API Server 请求的上下文的元数据来 ...

  7. el-table实现翻页选择和回看

    html <el-table ... <!-- row-key的row.id是你的行唯一标识,一般用id,翻页选的关键 --> :row-key="row => ro ...

  8. Navicat连接Oracle时报错ORA-28547:完美解决

    1. 先用你的IDEA或者别人的连接到oracle数据库(为了查询版本) 1.1 查询版本SQL:select * from v$version; 2. 引入对应的oci.dll文件 链接:https ...

  9. 其他4-shell脚本后台运行知识

    1. 用途和方法 在实际工作中,一般会通过ssh连接服务器,隐藏可能就会有脚本或命令在执行期间不能中断的需求,若中断,则不仅前功尽弃,还可能破坏系统数据,下面是防止脚本执行终端的3种方法: 1)使用s ...

  10. Spring可扩展的XML Schema机制 NamespaceHandlerSupport

    对xml文件的解析 1.可自定义标签, 2.可以覆盖原有的注册方法, 包括但不限于bean 加载,注解