当前位置: 首页 > 编程日记 > 正文

Linux05-进程管理

目录

一、进程

1.1、进程ID

1.2、列出进程

1.3、进程前后台

二、使用信号控制进程

三、以管理员身份注销用户(踢掉在线用户)

四、监控进程活动

4.1、负载平均值

4.2、实时进程监控


进程是已启动的可执行程序的运行中的实力。它由以下部分组成:已分配内存的地址空间、安全属性(爆款所有权凭据和特权)、程序代码的一个或多个执行线程、进程状态。通俗来讲,进程就是在系统发生的某一件事情。

一、进程

1.1、进程ID

每个新进程分配到一个唯一的进程D(PID)以满足跟踪和安全的需要,父级进程ID是PPID。通过对PID的管理,来实现对某个进程的管理。所有进程都是第一个系统进程的后代,在RHEL7里面,第一个系统进程是systemd。

1.2、列出进程

ps命令用于静态列出当前的进程,ps -ef 或 ps aux 或ps lax。top命令用于动态列出进程。

或者用命令 pstree以树状结构列出进程。

1.3、进程前后台

从特定终端窗口中读取输入和键盘生成的信号,这就是前台进程。后台进程是与该终端相关联的任何其他作业的成员,终端的后台进程无法从终端读取输入或接收键盘生成的中断,但是可以写入终端(输出到屏幕)。ps命令在TTY列中显示进程的控制终端的设备名称。某些进程(如系统守护进程)是由系统启动的,并不是从shell提示符启动的,这些进程没有控制终端,无法转至前台,这些进程的TTY列会显示一个问号“?”。

任何命令都可以在后台启动,只需要在命令结尾附加“&”符号即可。回显是作业编号和PID。

命令jobs可以查看后台作业。

fg命令和PID(%加上作业编号)将该作业转至前台。

要将前台进程发送到后台,按Ctrl+z暂停即可。该作业将立即置于后台并暂停。

bg命令和PID(%加上作业编号)可以启动在后台运行且已经暂停的进程。

我们以ping命令为例,执行ping server0 > a & 回显作业编号为1。打开另一个中断用tail -f  a查看是否在ping。用ps aux | grep ping来查看后台ping的状态。用fg %1让ping转移到前台。Ctrl + z暂停并转移到后台,job查看后台作业,注意查看a文件是否还继续写入ping的回显。再用bg %1启动ping,注意查看a文件是否还继续写入ping的回显。

[root@server0 ~]# tail -f a
^C
[root@server0 ~]# ping server0 > a &
[1] 2201
[root@server0 ~]# ps aux | grep ping
root      2201  0.0  0.0 120700  1052 pts/1    S    11:31   0:00 ping server0
root      2211  0.0  0.0 112640   936 pts/1    S+   11:31   0:00 grep --color=auto ping
[root@server0 ~]# fg %1
ping server0 > a
^Z
[1]+  Stopped                 ping server0 > a
[root@server0 ~]# ps aux | grep ping
root      2201  0.0  0.0 120700  1052 pts/1    T    11:31   0:00 ping server0
root      2213  0.0  0.0 112640   936 pts/1    R+   11:32   0:00 grep --color=auto ping
[root@server0 ~]#
[root@server0 ~]# jobs
[1]+  Stopped                 ping server0 > a
[root@server0 ~]# bg %1
[1]+ ping server0 > a &
[root@server0 ~]# fg %1
ping server0 > a
^C[root@server0 ~]#

二、使用信号控制进程

信号是传递至进程的软件中断。系统管理员用于管理进程的基本信号如下,注意信号编号随硬件平台不同而有差别,但是名称和定义都已经标准化,使用时建议使用短名称而不是编号。这里列出的编号适用于x86。

信号编号短名称定义目的
1HUP挂起

用于报告终端控制进程的终止。

也用于请求进程重新初始化而不终止。

相当于systemctl reload sshd.service,优点:不会中断,进程号不会变。

2INT键盘中断程序终止。通过Ctrl+c发送。
3QUIT键盘退出程序终止,但生成进程转储。通过Ctrl+\发送。
9KILL中断、无法拦截立即终止程序。一棒子打死!
15(默认值)TERM终止立即程序终止。友好方式,允许自我清理。
18CONT继续发送至进程使其恢复(若已经停止)
19STOP停止、无法拦截暂停进程。无法被拦截或处理。
20TSTP键盘停止

暂停进程,可以被拦截、忽略或处理。通过Ctrl+z发送。

用户可以向当前的前台进程发送信号,具体为暂停Ctrl+z、中止Ctrl+c、核心转储Ctrl+\。

用户向后台进程或另一个会话中的进程发送信号,需要使用信号发送命令。用户可以中断自己的进程,root特权可以终止其他人的进程。

kill命令根据ID向进程发送信号,用法是kill -signal PID 查看有多少种signal用kill -l。虽然命令名字叫kill,但是不是只能杀死进程,kill可以发送任何信号!

验证的方法也是 ping server0 > a &,然后查看一下后台的PID(本例PID是),然后tail -f a看进程是否进行。然后用kill -signal PID来控制后台进程的暂停、继续、终止。

[root@server0 ~]# ping server0 > a &
[1] 2586
[root@server0 ~]# kill -l1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
[root@server0 ~]# kill -SIGSTOP 2586
[root@server0 ~]# kill -SIGCONT 2586[1]+  Stopped                 ping server0 > a
[root@server0 ~]# kill -SIGTERM 2586
[root@server0 ~]# kill -SIGCONT 2586
-bash: kill: (2586) - No such process
[1]+  Terminated              ping server0 > a

三、以管理员身份注销用户(踢掉在线用户)

w命令可以查看当前登录系统的用户,以及他们积累的活动。通过TTY和FROM列确定用户的位置。

所有用户都有一个控制终端,其列为pts/N(在图形环境窗口(伪终端)中操作时),而通过系统控制台、替代控制台或其他直接连接的终端设备操作时则列为ttyN。使用 w -f 选项时,远程用户在FROM列中显示其连接系统名称。如图,共有3个终端以root身份登录server0和一个终端以student身份登录server0,就有了pts/0、pts/1、pts/2和tty1。还可以看到是什么时间登录、空闲多久、shell执行的是什么命令。

我们可以通过pgrep -l -u username来查看某个用户的进程。当不需要终端用户所有进程时,用w命令确定会话的控制终端,然后仅终端应用同一终端ID的进程。除非指定SIGLILL,否则会话首进程(bash)可以成功处理终止并保留,但其他会话进程被终止。

[root@server0 ~]# pgrep -l -u student
7921 sshd
7922 bash
7965 ping
[root@server0 ~]# w -u student12:42:48 up  1:56,  3 users,  load average: 0.01, 0.08, 0.12
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
student  pts/1     12:41   40.00s  0.06s  0.02s ping server0 -c 100
[root@server0 ~]# pkill -t pts/1
[root@server0 ~]# pgrep -l -u student
7921 sshd
7922 bash
[root@server0 ~]# pkill -SIGKILL -t pts/1
[root@server0 ~]# pgrep -l -u student
[root@server0 ~]#

四、监控进程活动

4.1、负载平均值

查看有CPU的内核表示,可以求出CPU核数。uptime命令可以显示负载平均值。将显示的负载平均值初一系统中逻辑CPU数(核数)。值低于1表示资源利用率较好,等待时间短。值高于1表示资源饱和,有一定的服务等待时间。

[root@server0 ~]# grep "model name" /proc/cpuinfo
model name      : QEMU Virtual CPU version 1.5.3
[root@server0 ~]# grep "model name" /proc/cpuinfo | wc -l
1
[root@server0 ~]# uptime14:15:40 up  1:22,  2 users,  load average: 0.00, 0.01, 0.05

4.2、实时进程监控

top是系统进程的动态视图。默认输出列可以从其他资源工具识别:

  • 进程ID(PID)
  • 用户名称(USER)
  • 虚拟内存(VIRT对应ps命令的VSZ)
  • 常驻内存(RES对应ps命令的RSS)
  • 进程状态(S,D=不可中断睡眠,R=运行中或可运行,S=睡眠中,T=已停止,Z=僵停)
  • CPU时间(TIME)
  • 进程命令名称(COMMAND)

top命令中还可以继续输入命令来操作

按键目的
?或 h交互式击键操作的帮助。
l、t、m切换到负载、线程、内存标题行。
s更改刷新率,以带小数的秒表示(如0.5、1、2.6)。安全模式下不可用
b切换方向突出显示运行中的进程;默认仅为粗体。
B在显示中使用粗体,用于标题以及运行中的进程。
H切换线程;显示进程摘要或单独线程。
u、U过滤用户名。
M按照内存使用率,以降序方式对进程列表排序。
P按照处理器使用率,,以降序方式对进程列表排序。
k中断进程。若有提示,输入PID,再输入signal
r调整进程的nice值。若有提示,输入PID,再输入nice_value。
W写入当前显示配置,以便在下一次启动top时使用。
q退出

相关文章:

Mat常用赋值方式

参考https://blog.csdn.net/wanggao_1990/article/details/53264753 #include <iostream> #include <opencv2/opencv.hpp> #include <unordered_map> using namespace std; using namespace cv; int main(int argc,char** argv) {// 1Mat mat (Mat_<flo…

java modbus协议

概念 Modbus是一种串行通信协议&#xff0c;Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。 大多数Modbus设备通信通过串口EIA-485物理层进行。 通讯格式 地址域功能码数据CRC校验(低字节在前)1字节1字节N字节2字节 在单片机硬件通讯串口行业&…

layui栅格布局问题

在使用layer.open弹出到窗口中&#xff0c;使用布局一直不起作用。 开始到写法如下, 目的是一行分成左右两块&#xff0c;比例为8:4等分。 <div class"layui-fluid"><div class"layui-row layui-col-space10"><div class"layui-col-md…

Unity3d载入外部图片文件

unity里的图片在生成时会压缩成资源文件&#xff0c;有时客户想自己放一些图片用unity显示&#xff0c;就必须载入外部图片。 大体思路&#xff1a;用Application.streamingAssetsPath或Application.dataPath来指定存放图片的相对路径。用DirectoryInfo获得目录。遍历后FileInf…

Linux06-服务、守护进程和systemd

目录 一、简介systemd 二、使用systemd 2.1、systemctl命令与systemd单元 2.2、控制系统服务 一、简介systemd RHEL6及以前&#xff0c;系统启动和服务器进程是由第一个进程 init 管理&#xff0c;init按顺序启动、启动慢。 RHEL7以后系统启动和服务器进程由 systemd系统和…

ORB_SLAM2回环检测

词典是特征点的描述子的集合&#xff0c;属于同一类特征的特征点的描述子组成单词。 在局部建图线程中&#xff0c;处理完一个关键帧后&#xff0c;会将其放入回环检测线程     在使用关键帧数据库搜索候选关键帧组&#xff08;DetectLoopCandidates&#xff09;的时候&…

nginx 启动 + uwsgi + django

https://www.cnblogs.com/chenice/p/6921727.html https://blog.csdn.net/Aaroun/article/details/78218131转载于:https://www.cnblogs.com/pythonClub/p/9746866.html

poj1741(树的点分治)

题目连接&#xff1a;POJ - 1741 看了好长时间才明白了点...... 网上讲解很多但感觉都不够详细。。。大概是太弱了吧-_-|| 学通了再回来写详解。。。 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 #include<algorithm>5 #define LL lo…

Android 串口通讯

概念 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方式的扩展接口。串行接口&#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简单&#xff0c;只要一…

Linux07-OpenSSH

目录 一、使用SSH访问远程主机 1.1、什么是OpenSSH Secure Shell&#xff08;SSH&#xff09; 1.2、SSH主机密钥 二、配置基于SSH密钥的身份验证 2.1、基于SSH密钥的身份验证 2.2、自定义SSH服务配置 2.3、sftp传输文件 一、使用SSH访问远程主机 1.1、什么是OpenSSH Se…

ORB_SLAM2中的Sim3变换

对于双目、RGB-D相机&#xff0c;可获得深度&#xff0c;因此不存在尺度问题&#xff0c;因此Sim3中的尺度s1。 &#xff08;1&#xff09;通过词袋加速算法实现当前帧、闭环帧的特征点的匹配&#xff0c;建立闭环帧的路标点和当前帧的特征点间的联系。 &#xff08;2&#xff…

Ubuntu16.04 下的网易云出现网络异常、无法播放,界面无响应问题的统一解决

能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情&#xff0c;但是它总是经常性的出现网络异常&#xff0c;界面无响应的问题 为了听歌的体验&#xff0c;进行深入探究&#xff1a; 首先通过终端启用网易云音乐&#xff1a;sudo netease-cloud-music 会得到网易云音…

SpringBoot 概念和起步

一、概念和由来 1、什么是 Spring Boot Spring Boot 的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用特定方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 Spring Boot 其实不是什么新的框架&#xff0c;它默认配置了很多框架的使用…

WKWebView Safari调试、JS互调、加载进度条、JS中alert、confirm、prompt

主要内容 Safari调试swift/OC与JS互调增加加载进度条支持JS中alert、confirm、prompt Safari调试 设置 —> safari --> 高级&#xff0c;开启JavaScript、网页检查器 打开Safari浏览器&#xff0c;选择调试的网页,同样在js里面可以断点调试: swift/OC与JS互调 这里…

CentOS7 打包RPM 升级OpenSSH8.3

目录 一、源码包 二、打包RPM 2.1、准备阶段 2.2、打包排错阶段 三、升级 漏扫设备发现OpenSSH有漏洞&#xff0c;需要升级到OpenSSH 8.1及以上版本&#xff0c;那么干脆就直接升级到发文时最新的版本&#xff0c;OpenSSH 8.3。做法是找到OpenSSH 8.3的源码包&#xff0c;…

步步为营-44-窗体之间传值--观察者模式

说明 :观察者模式又叫发布-订阅模式,其中又涉及到中介者模式 1 结构 2 创建Main窗体(中介者),ChildForm1(发布者),ChildForm2(订阅者),ChildForm3(订阅者), 2.1 ChildForm1中添加按钮,当按钮被点击是ChildForm2(订阅者),ChildForm3(订阅者),的文本框汇中获取信息 2.2 定义接口 …

java指令详解

Java是通过java虚拟机来装载和执行编译文件&#xff08;class文件&#xff09;的&#xff0c;java虚拟机通过命令java option 来启动&#xff0c;-option为虚拟机参数&#xff0c;通过这些参数可对虚拟机的运行状态进行调整. 一、如何查看参数列表: 虚拟机参数分为基本和扩展两…

wrs-arcface虹软人脸识别

前言 虹软人脸识别组件&#xff0c;支持活体识别、离线识别、图片人脸特征识别、图片是否同一人对比、相机人脸识别或对比,虹软免费版请使https://ext.dcloud.net.cn/plugin?id6084 功能 支持活体识别、离线识别图片人脸特征识别(年龄、性别、3DAngle)两张图片是否是同一人…

C++指针与引用的区别

&#xff08;1&#xff09;指针是一个变量&#xff0c;本身占有内存&#xff0c;内存中存储的是所指向对象的地址。引用是内存的别名。 &#xff08;2&#xff09;指针可以通过解引用的方式&#xff0c;取出所指向内存中的值。引用没有解引用。 &#xff08;3&#xff09;指针可…

Linux08-日志

目录 一、systemd的日志 1.1、sytemd-journald与systemd日志 1.2、systemd日志的持久化 二、系统常规日志 2.1、系统日志概述 2.2、查看系统日志文件 2.3、日志的轮转 2.4、分析系统日志 2.5、使用logger发送消息到日志 RHEL7的日志由2个服务负责记录&#xff0c;分别…

Java的小实验——各种测试以及说明

日期&#xff1a;2018.10.07 星期五 博客期&#xff1a;014 一、Java中的位运算 代码如下&#xff1a; 1 package Morts107;2 3 public class Test107 {4 public static void main(String[] args) {5 int z;6 z 13>>1;//00001101(13)---------------…

C++内存的分区

C内存分为四个区&#xff1a; &#xff08;1&#xff09;代码区&#xff1a;存放代码转译成的二进制代码。 &#xff08;2&#xff09;全局区&#xff1a;存放全局变量、静态变量&#xff08;static&#xff09;、常量&#xff08;如字符串常量&#xff09;。 全局区中还包含一…

SpringCloud的服务网关zuul

演示如何使用api网关屏蔽各服务来源 一、概念和定义 1、zuul最终还是使用Ribbon的&#xff0c;顺便测试一下Hystrix断路保护2、zuul也是一个EurekaClient&#xff0c;访问服务注册中心&#xff0c;获取元数据&#xff0c;使用本地的Ribbon负载均衡&#xff0c;Hystrix断路保护&…

wrs-tuya-cloud

前言 wrs-tuya-cloud是涂鸦官网针对云开发的插件&#xff0c;包含垂直品类硬件API(万能红外开放能力、设备连接服务、设备OTA固件升级、实时音视频、睡眠带开放能力、体脂秤开放能力、智能门锁开放能力、视频云存储 、邮件服务 、 语音消息服务、消息推送服务、短信服务 、内测…

Windows Server 2016 笔记

从业界普遍实践结果来看&#xff0c;Windows Server在服务器领域真是不太好用。但是&#xff0c;有些时候由于种种原因不得不用&#xff0c;所以还是有必要了解一下的。今天参加了一个Windows Server的培训&#xff0c;主要面对Windows Server 2016&#xff0c;写下这篇博客备忘…

(办公)网页发送到桌面快捷方式怎么做

转载自百度:https://jingyan.baidu.com/article/f79b7cb303d50a9145023e6e.html 有时候一个网页我们需要经常用到&#xff0c;每次找那个需要的网页很耗时间&#xff0c;那么我们怎么把我们需要的网页发送到桌面快捷方式呢&#xff1f; 这样下次我们直接点击桌面上的快捷方式就…

C++程序编译过程

程序编译的过程&#xff0c;是将源代码转换为计算机可执行的机械语言的过程。分为预处理、编译、汇编、链接四步。 &#xff08;1&#xff09;预处理&#xff1a;对程序进行预处理&#xff0c;比如将头文件的代码直接赋值到当前代码中等等. &#xff08;2&#xff09;编译&am…

Java的注释(详细版)

注释是对代码进行必要的说明&#xff0c;以便于后期的修改、维护和升级。Java的注释分为三种&#xff1a;第一种是**单行注释**&#xff1a;用双斜杠“//”来进行实例&#xff1a;//单行注释第二种是**文档注释**&#xff1a;用斜杠“/”和星号“*”来进行实例&#xff1a;/***…

Hadoop的存储架构介绍

http://lxw1234.com/archives/2016/04/638.htm 该文章介绍了Hadoop的架构原理&#xff0c;简单易懂。 目前公司提供Hadoop的运算集群BMR&#xff0c;可以直接申请集群资源。转载于:https://www.cnblogs.com/blog-of-Fourier/p/6809811.html

编译OpenSSH8.4的RPM包及升级

目录 一、安装相关依赖包 二、创建rpmbuild目录并下载源码 三、打包及排错 四、升级到OpenSSH 8.4p1 以下是打包好的OpenSSH 8.4p1&#xff0c;包括7个rpm包&#xff0c;欢迎下载使用。 OpenSSH-8.4p1-Bundle 一、安装相关依赖包 根据以往经验&#xff0c;需要安装wget、…