【Linux学习】Linux进程(二)

news2024/12/22 22:22:01

文章目录

    • 📕查看进程
      • 🚀/proc目录
      • 🚀cwd与exe
    • 📕改变进程的工作目录
      • 🚀chdir指令
    • 📕vim卡住了怎么解决


本篇文章接着【LInux进程(一)】继续编写。

📕查看进程

🚀/proc目录

除了上篇文章中的用ps命令在系统中去搜索去查,还有一种方法。
Linux系统会把进程相关的内存的数据以文件系统的形式存储在一个特定的目录里面,这个目录在那里呢?是在 /proc目录下的。

该目录是在根目录下的。

说白了,就是每个进程的数据以文件的形式给我们存储起来了,显示到我们的文件系统上。
在这里插入图片描述

当我们运行一个伪代码时,然后再去/proc目录里面去查看该进程,发现是可以查看到的,但是当我们ctrl^C结束进程后,就查询不到了。
在这里插入图片描述

🚀cwd与exe

当我们打开这个文件可以发现两个数据,如下图,cwd(下面会简单讲解)与exe
红色圈出来的是:当前这个进程16229对应的磁盘上对应的可执行程序以及所在的路径。
在这里插入图片描述

我们来看这样一个现象:(如图)
当我们启动一个进程的时候,这个进程已经在运行了,然后把它的可执行程序删除掉了,但是这个我们查询到该进程还在执行,只不过查询到的进程的exe处于高亮闪烁状态。
在这里插入图片描述
思考:那为什么可执行程序都删除了,怎么还在运行呢?

  • 因为在运行一个程序的时候,实际上是将程序从磁盘拷贝到了内存,换句话说,我们现在的进程体积比较小,已经被拷贝到内存了,删除了可执行程序实际是将磁盘上的删除了,内存中没有删除。

现在我们现在看看cwd是什么意思:当前进程所对应的当前工作目录。

  • 我们先来看看这句话的理解:
    文件操作:当我们用fopen打开一个文件的时候,如果这个文件是不存在的文件,则会再当前路径下,创建一个文件。这个当前路径是深什么意思呢?
    意思就是当前进程所对应的cwd(当前工作目录)。这个路径和源代码在同一个目录下,就是当我们在Vs中,打开当前路径,这就是对应的该进程的工作目录。

📕改变进程的工作目录

🚀chdir指令

指令 chdir,输入指令查看该指令

# man 2 chdir

如图:
在这里插入图片描述
使用下面该伪代码看看chdir的使用

下面代码的测试逻辑:

首先打印进程编号(查询当前目录是否改变),然后当打印出改变当前目录后,再次查询当前目录是否改变,等已经创建完成后,去改到的目录里面去查看是否新建了该文件。

  1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<unistd.h>
  4 
  5 int main()
  6 {
  7     printf("slef id:%d\n",getpid());
  8     printf("改变工作目录前\n");
  9 
 10     sleep(30);
 11     chdir("/home/tw");
 12     printf("改变工作目录后\n");
 13     sleep(30);
 14 
 15     FILE* fp = fopen("file.txt","w");
 16     if(fp==NULL)
 17         return 0;
 18     fclose(fp);
 19                                                                                
 20     printf("文件创建完成\n");
 21     sleep(50);
 22     return 0;
 23 }

运行结果:
在这里插入图片描述

📕vim卡住了怎么解决

这个问题我是经常碰到:vim突然按什么都没反应,卡死一样,解决方法也很简单。

  • 1.原因:按了[crtl]+s 停止了vim界面刷新
  • 2.解决办法:按下 [crtl]+q恢复界面刷新

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

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

相关文章

java使用trim方法和replaceAll方法去除空格之后,还存在空格

今天使用其他人的一个功能&#xff0c;发现生成的映射少了一个&#xff0c;后面去代码里面debug发现是字符串中左边空格没有去除导致。查看代码&#xff0c;里面是使用了字符串.trim().replaceAll(" ", "")去除空格的。这个代码虽然能去除&#xff08;半角…

windows查看xxx的版本号

node -v python --version redis-server --version java -version go version mvn -version git --version

工业抗振动和姿态控制的传感器:XV7021BB

针对工业应用的抗振动和姿态控制的陀螺仪传感器XV7021BB。XV7021BB陀螺仪传感器的电源电压(VDDM)均为2.7V~3.6V&#xff0c;接口电源电压(VDDI)范围为1.65V~3.6V&#xff0c;较低的电压需求便于应用电路的设计;XV7021BB内置温度传感器&#xff0c;并集成了用户可选数字滤波器&a…

Redis入门到通关之数据结构解析-Dict

文章目录 概述构成Dict的扩容Dict的rehash总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类&#xff1a;字符串 知识点&#xff1a; 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍

文章目录 前言 1、为什么大模型训练需要GPU&#xff0c;而非CPU 2、现在都有哪些合适的GPU适合训练&#xff0c;价格如何 前言 今天偶然看到一篇关于介绍GPU的推文&#xff0c;我们在复现代码以及模型训练过程中&#xff0c;GPU的使用是必不可少的&#xff0c;那么大模型训练需…

如何评价微软发布的Phi-3,手机都可以运行的小模型

前几天才刚刚发布了Llama 3&#xff0c;今天微软就出手了&#xff0c;发布了小而精的phi-3 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 刚刚发布的Phi-3系列小模型技术报告&#xff0c;引起AI圈热议。 添加图片注释&#xff0c;不超过 140 字&#x…

DHCP和DNS

DHCP和DNS 一、DHCP服务 1.简介 Dynamic Host Configuration Protocol&#xff08;DHCP动态主机配置协议&#xff09; 可以能看见下面的IP、子网掩码、默认网关、DNS都是自动获取得到。但是它是怎么自动获取的&#xff0c;别急我给大家来介绍下 2.DHCP原理 介绍前先给大家…

移动端日志采集与分析最佳实践

前言 做为一名移动端开发者&#xff0c;深刻体会日志采集对工程师来说具有重要意义&#xff0c;遇到问题除了 debug 调试就是看日志了&#xff0c;通过看日志可以帮助我们了解应用程序运行状况、优化用户体验、保障数据安全依据&#xff0c;本文将介绍日志采集的重要性、移动端…

接口测试|超详细面试题【附答案】

今天给姐妹们整理了一套超详细的附答案的接口测试面试题&#xff0c;姐妹们快学起来吧~ 接口测试的重要性&#xff0c;相信不用我多说了。接口测试是现在软件测试工程师一个加分项。因为很多朋友一开始做了几年的软件测试都是在做功能测试&#xff0c;做界面UI的测试&#xff…

(二)Go的Mysql、Redis、Cookie、Logger等的文件配置

初始化配置 文章目录 初始化配置一、配置yaml文件二、Go读取配置文件三、初始化日志Logger四、初始化数据库&#xff08;MySQL或SqlLite&#xff09;五、初始化缓存&#xff08;Redis&#xff09;六、中间件服务&#xff08;middleware&#xff09; 一、配置yaml文件 Server:M…

2024.4.24

求圆半径和周长 #include <iostream> using namespace std;struct Cir { private:int r; public:void set_r(int i);void show(); }; void Cir::set_r(int i)//设置半径 {r i; } void Cir::show()//打印周长面积 {double Pi 3.14;double l 2*Pi*r;double s Pi*r*r;c…

【pycharm】调试模式中四个常用按钮介绍

【pycharm】调试模式中四个常用按钮介绍 在 PyCharm 的调试模式中&#xff0c;有四个常用的按钮&#xff0c;它们的功能如下&#xff1a; Step Over (F8)&#xff1a;单步执行&#xff0c;但在遇到函数调用时&#xff0c;不会进入函数内部&#xff0c;而是将整个函数作为一步执…

技术速递|Java on Azure Tooling 3月更新 - Java on Azure 开发工具未来六个月路线图发布

作者&#xff1a;Jialuo Gan - Program Manager, Developer Division At Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎阅读 Java on Azure 工具的三月更新。在本次更新中&#xff0c;我们将分享未来几个月对 Java on Azure 开发工具的投资。此外&#xff0c;我…

基础SQL DCL语句

DCL是数据控制语言&#xff0c;用来管理数据库用户&#xff0c;还有控制用户的访问权限 1.用户的查询 MySQL的用户信息存储在mysql数据库中&#xff0c;查询用户时&#xff0c;我们需要使用这个数据库。 后面&#xff0c;还有很多数据&#xff0c;因为篇幅的问题&#xff0c;就…

码头船只出行及配套货柜码放管理系统-毕设

毕业设计说明书 码头船只出行及配套货柜码放 管理系统 码头船只出行及配套货柜码放管理系统 摘要 伴随着全球化的发展&#xff0c;码头的物流和客运增多&#xff0c;码头业务迎来新的高峰。然而码头业务的增加&#xff0c;导致了人员成本和工作量的增多。为了解决这一基本问题&…

SpringBoot Bean管理(扫描、注册、注册条件)

Bean扫描 一般的扫描包路径 需要使用xml标签或者是ComponentScan(basePackages “xxx.xxx”) ,但是在SpringBoot中不需要。 在springBoot 项目的启动类中有一个注解&#xff1a;SpringBootApplication,这个注解包含以下注解&#xff1a; 但是ComponentScan并没有指明包路径…

consul ui访问安全加固

本文侧重介绍访问ui安全加固部分。 安装配置以及集群搭建请参考官方文档 下载安装 官方下载地址&安装教程 Install | Consul | HashiCorp Developer 修改配置&#xff0c;开启acl 首先自行规划好 server和client机器。 按照下述流程在server 生成 bootstrap token。 修改ac…

【大语言模型LLM】-基础语言模型和指令微调的语言模型

&#x1f525;博客主页&#xff1a;西瓜WiFi &#x1f3a5;系列专栏&#xff1a;《大语言模型》 很多非常有趣的模型&#xff0c;值得收藏&#xff0c;满足大家的收集癖&#xff01; 如果觉得有用&#xff0c;请三连&#x1f44d;⭐❤️&#xff0c;谢谢&#xff01; 长期不…

openEuler 22.03 LTS SP3(华为欧拉)一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 LTS SP3 一键安装 Oracle 11GR2 RAC&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地…