Linux进程管理命令

news2024/11/25 6:30:23

一、进程
程序由一条条指令构成,在运行一个程序的时候就是把这些指令从第一条执行到最后一条,而进程是一个正在运行的程序。

比如说,一个main.c文件是不可以直接运行的,对main.c进行编译链接之后生成一个main.exe(在Windows系统中)或main(在Linux系统中),这里的main.exe或者main叫做可执行程序,这个可执行程序是二进制的。所以,其实程序是一个二进制文件,计算机把它运行或者执行起来,它就会产生一个进程。操作系统管理这些进程。

每一个进程都有一个id号为pid,这个pid就是用来唯一标识一个进程的,每个进程的id都是唯一的。

二、进程管理命令

1.ps命令,默认显示与当前终端有关的进程信息

(1)ps
显示的是当前终端中所运行的进程,而不是整个系统所运行的进程:

在这里插入图片描述

从显示的结果可以看出,当前终端中有2个进程,bash打印的内容为:

在这里插入图片描述

ps打印的就是当前终端的进程信息。

【注意】执行3次ps:

在这里插入图片描述
我们可以发现,ps进程的id号逐渐变大,这是因为在第一个ps进程结束以后,它对应的id就会被释放出来,释放出来的id号可以被别的进程再次使用,被复用,但是并不是刚释放出来就被别的进程去使用;当第二次再运行ps时,它的id号会在原有的基础上增加,当id值一直增加到它的最大值以后,才会后头重新寻找没有被使用的id值,也就是被释放出来的id值。

(2)ps -f,显示更多的进程属性信息(全格式),即详细信息。

在这里插入图片描述

(3)ps -e,显示系统中所有的进程信息。我们发现第一个进程的编号是从1开始:

在这里插入图片描述

(4)ps -ef,显示系统中所有的进程的详细信息:

在这里插入图片描述

(5)ps -L,显示进程中的线程ID,LWP就代表线程id:

在这里插入图片描述

2.sleep n,表示睡眠(阻塞)n秒钟。

重新打开一个终端,输入sleep 400,表示睡眠400秒:

在这里插入图片描述

再回到之前打开的终端输入ps,并不能看到刚刚重新打开的终端中的sleep进程:

在这里插入图片描述
输入ps -ef来查看系统中所有进程的详细信息,这时我们就可以看到刚刚在新的终端中运行的sleep进程:

在这里插入图片描述

但是这样很麻烦,我们可以通过管道和过滤来查看,ps -ef | grep "sleep"

在这里插入图片描述

这样就非常方便。

3.Ctrl+c用来结束前台运行进程

结束刚刚sleep 400的进程:

在这里插入图片描述

4.kill命令

(1)kill pid结束或者挂起一个进程,后台和前台的进程都可以通过kill来结束。

先重新打开一个终端,输入sleep 600,表示睡眠600秒:

在这里插入图片描述

然后在另一个终端找到刚刚创建的新的终端中进程sleep的id:

在这里插入图片描述

可以看到整个进程的id是3451。

然后输入kill 3451,表示通过id号来结束整个进程:

在这里插入图片描述

(2)kill -9 pid,强制结束进程

在一个终端中输入sleep 400,表示睡眠400秒,然后按Ctrl+z停止这个进程:

在这里插入图片描述

查看当前终端中的所有进程,发现sleep还在:

在这里插入图片描述

然后通过kill ipd去结束这个进程,发现结束不了:

在这里插入图片描述

这时就需要通过kill -9 pid强制结束这个进程:

在这里插入图片描述
(3)kill -stop pid,挂起一个进程。

5.命令 &,表示这个进程在后台运行

在这里插入图片描述

如果该进程在后台运行,我们在终端就还可以进行操作,比如说上面的ps命令查看进程信息;但是如果该进程在前台运行,那么我们在终端不能进行操作,只有在该进程结束后,才能进行其他操作。

6.pstree命令,以树状图形式显示进程之间的关系

在这里插入图片描述

7.jobs命令,显示当前后台的任务

如下图所示,当前后台没有任务:

在这里插入图片描述

创建一个在后台执行的进程,然后通过jobs来显示当前后台的任务:

在这里插入图片描述

8.前台和后台之间的切换

(1)fg %任务号将后台运行的或挂起的进程挪到前台执行:

在这里插入图片描述

(2)bg %任务号将挂起的进程唤醒到后台执行

先在前台创建一个睡眠400秒的进程:sleep 400,然后通过Ctrl+z停止这个进程:

在这里插入图片描述

然后通过jobs命令显示后台的进程,发现sleep 400这个进程的状态是停止:

在这里插入图片描述

这时,通过bg %任务号,将停止的进程sleep 400唤醒到后台执行:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/865578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT学习笔记-QT安装oracle oci驱动

QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中,往…

Mysql SUBSTRING_INDEX - 按分隔符截取字符串

作用: 按分隔符截取字符串 语法: SUBSTRING_INDEX(str, delimiter, count) 属性: 参数说明str必需的。一个字符串。delimiter必需的。分隔符定义,是大小写敏感,且是多字节安全的count必须的。大于0或者小于0的数值…

案例分析丨大数据平台和应用测试,应该关注哪些点?

互联网的发展催生了大数据行业的诞生和发展。大数据平台和大数据应用成为了各家排兵布阵的重要之地。那么,从测试的视角来看,大数据平台和应用的测试,我们应该关注哪些点呢? 换个姿势看问题。今天我们从问题域的角度来聊一聊。 什…

【数据处理-番外篇】手写了几个数据处理,都是用的递归

博主:_LJaXi Or 東方幻想郷 专栏: JavaScript | 脚本语言 开发工具:Vs Code 数据处理 对象修改结构判断两对象是否全等(只针对对象未做其他类型)复杂结构去重我写的破代码(没用,逻辑,结构都不对) 一些原理我也不讲了,我就是记录一…

MySQL不走索引的情况分析

未建立索引 当数据表没有设计相关索引时,查询会扫描全表。 create table test_temp (test_id int auto_incrementprimary key,field_1 varchar(20) null,field_2 varchar(20) null,field_3 bigint null,create_date date null );expl…

【C++】虚继承(virtual base classes)

【C】虚继承(virtual base classes) 文章目录 【C】虚继承(virtual base classes)1. 使用原因2. 解决方法3. 例题练习 1. 使用原因 在多重继承(Multiple Inheritance) 的情况下,尤其是菱形继承时,容易出现问题,关于菱…

STM32F429IGT6使用CubeMX配置GPIO点亮LED灯

1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、生成工程配置 5、部分代码 6、实验现象

CentOS7有线未托管,网络连接图标消失

问题描述 网络图标消失,显示“有线 未托管”,且无法连接网络 解决方案 ①编辑文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33 ②删除NM_CONTROLLEDno ③重启网络:service network restart 立马就可以自动连接上网络&…

SqlServer基础之(触发器)

概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发&#x…

面试热题(两数之和)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答…

并发——JDK 提供的并发容器总结

文章目录 一 JDK 提供的并发容器总结二 ConcurrentHashMap三 CopyOnWriteArrayList3.1 CopyOnWriteArrayList 简介3.2 CopyOnWriteArrayList 是如何做到的?3.3 CopyOnWriteArrayList 读取和写入源码简单分析3.3.1 CopyOnWriteArrayList 读取操作的实现3.3.2 CopyOnW…

K8S MetalLB LoadBalancer

1. 简介 kubernetes集群没有L4负载均衡,对外暴漏服务时,只能使用nodePort的方式,比较麻烦,必须要记住不同的端口号。 LoadBalancer:使用云提供商的负载均衡器向外部暴露服务,外部负载均衡器可以将流量路由…

【数学】CF1514 C

Problem - 1514C - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>using i64 long long;constexpr int N 2e5 10; constexpr int M 2e5 10; constexpr int mod 998244353;void solve() {int n;std::cin >> n;std:…

图像处理技巧形态学滤波之腐蚀操作

1. 引言 欢迎回来&#xff0c;我的图像处理爱好者们&#xff01;今天&#xff0c;让我们深入研究图像处理领域中的形态学计算。这些非线性的图像处理技术允许我们操纵图像中对象的形状和结构。在本系列中&#xff0c;我们将依次介绍四种基本的形态学操作&#xff1a;腐蚀、膨胀…

走出象牙塔:李郓梁的区块链实践之路丨对话MVP

如何从科研走向实践&#xff1f;李郓梁在社区找到了答案。 作为西安工业大学的硕士研究生&#xff0c;李郓梁从学校的实验室接触区块链技术。通过研读大量论文&#xff0c;李郓梁为区块链多中心化、不可篡改等前沿理论深深着迷&#xff0c;并选择将区块链作为主要研究方向&…

网络原理(JavaEE初阶系列11)

目录 前言&#xff1a; 1.网络原理的理解 2.应用层 2.1自定义协议的约定 2.1.1确定要传输的信息 2.1.2确定数据的格式 3.传输层 3.1UDP 3.1.1UDP报文格式 3.2TCP 3.2.1确认应答 3.2.2超时重传 3.2.3连接管理 3.2.3.1三次握手 3.2.3.2四次挥手 3.2.4滑动窗口 3.…

Invalid bound statement (not found)

在使用Mybatisplus时报错Invalid bound statement (not found)&#xff0c;在此记录一下 先附上解决办法 step 1、启动类加上MapperScan注解 package com.study.test;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; …

基于QT ,halcon实现可视化程序编程框架

基于qt ,halcon 实现可视化程序编程框架 完整源码 :订阅后 请加微信 SimpleAuto6,将在第一时间发送,未订阅,时间宝贵,勿扰 部分源码: #include "LogInDialog.h"LogInDialog::LogInDialog(int w, int h,QWidget *parent): QDialog(parent),m_Password(…

SpringBoot复习:(31)Controller中返回的对象是如何转换成json字符串给调用者的?

首先&#xff0c;SpringBoot自动装配了HttpMessageConvertersAutoConfiguration这个自动配置类 而这个自动配置类又通过Import注解导入了JacksonHttpMessageConvertersConfiguration类&#xff0c; 在这个类中配置了一个类型为MappingJackson2HttpMessageConverter类型的bean…

教你一招:非计算机科班如何丝滑转码?

近年来&#xff0c;很多人想要从其他行业跳槽转入计算机领域。非计算机科班如何丝滑转码&#xff1f; 目录 一、确定方向 二、确定学习计划&#xff08;自学&#xff09; 三、学习 看到组里好多非科班姐妹决定转码之后&#xff0c;因为相关背景知识不足难以确定学习计划&am…