Linux进程管理,用户管理,文件压缩命令

news2024/11/30 2:26:53

gcc与g++区别(补充了解):

比如有两个文件:main.c,mainc++.cpp(分别用C语言和C语言写的)如果要用gcc编译呢?
gcc -o mainc main.c
gcc -o mainc mainc++.cpp -lstdc++ 指明用c++的标准库;
区别一:
gcc默认只链接C库,并不会链接C++的库;g++会默认链接c++标准库.
区别二:
gcc编译.c文件,则按照C语言的方式编译;gcc如果编译.cpp文件,则按照c++的方式编译;
g++不管是c文件还是cpp文件,都是按照c++的方式进行编译;即g++不管文件后缀,直接按照c++的语法规则处理
问题:如果gcc要按照c++方式编译呢?需要指定库,例如:
gcc -o test test.cpp -lstdc++    指定库

为什么是补充了解呢?就是正常使用就是gcc编译c文件,g++编译c++文件;

进程管理命令:

进程的概念

进程:运行中的程序(过程,动态)

程序:存储在磁盘上的二进制可执行文件;(静态)

操作系统是通过管理进程,让进程运行来完成用户的任务的;

PCB:进程控制块,记录的是进程的相关属性信息;数据结构

PID:是操作系统对进程的标识;唯一的;

简而言之, 程序:指令+数据; 进程:运行中的程序,也就是说,程序是存储在磁盘上的二进制可执行文件,而进程是内存上的,是运行中的程序(过程);
操作系统是通过管理进程,让进程运行来完成用户的任务的;
操作系统对于进程的描述:PCB(进程控制块,进程描述符),记录一个进程执行过程中的相关的属性数据;PID是操作系统对进程的标识,每一个进程的PID都是不同的(唯一性);
为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。
(操作系统精髓与设计原理43页) 进程的组成;
(操作系统精髓与设计原理74页) PCB进程控制块结构;

补充:僵死进程:进程实体释放与PCB的释放有一个时间差(PCB的释放是需要一定条件的),进程实体被释放,但是PCB没有释放.

(1)ps  默认显示与当前终端有关的进程信息;

参数:-e  -f  -L

-f:显示更多的进程属性信息;

-e:显示系统信息;

-L:显示进程中的线程的ID;

ps -ef |grep ...

(2)pstree

以树状图形显示进程之间的关系;

(3)kill

结束或者挂起一个进程;

语法:

kill   PID

-9  强制结束进程;(kill -9 PID);

kill  -STOP  PID:挂起一个进程

1)前后台

2)如何启动一个进程:

路径+可执行文件名

路径+可执行文件名 &(将进程放到后台去运行)

(4)jobs

显示当前终端的任务,显示后台执行的或者挂起的任务;

显示的结果分别是:

任务号   任务的状态    任务的名称;

jobs  -l:显示详细内容;

(5)pkill

结束一组同名的进程,即结束一组CMD相同的进程;

(6)fg   bg

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

将挂起的进程唤醒到后台去执行:bg  %任务号

(7)top

查看系统使用情况以及进程信息;

同Windows的任务管理器

用户管理命令:

(1)系统存储用户信息的位置:

/etc/passwd:存储用户的基本信息

UID:用户ID    GID:组ID;

(2)系统存储组信息的位置:

/etc/group

(3)系统存储用户密码信息的位置:

/etc/shadow

(2)添加用户

使用命令添加新用户:useradd  newname

桌面添加:右键:设置:用户,解锁,添加用户(Ubuntu建议用图形化界面添加用户)

(3)修改密码

先转成管理员 sudo  su

passwd 用户名

exit

(4)删除用户

userdel   用户名(默认仅仅删除用户,不删除家目录,不删除家目录中的文件 ,比如/home/stu  不要删除)

注意,Ubuntu可以使用该命令删除用户,但是必须保证该用户没有登录,比如关机之后随便进入一个用户,然后转成管理员,那么就可以删除的用户.

userdel  -r  用户名(删除家目录底下的所有文件)(一般不建议删除此文件)

文件压缩与解压命令:

(1)tar  打包或解包

tar  将文件打包

tar  cvf    xxxx.tar(打包好的名字)    需要打包的所有文件名

各参数的意义如下:

c:创建包文件

f:指定目标为文件而不是设备;

v:显示详细过程;

t:显示包中的内容而不释放;

x:释放包中的内容

z:GNU版本新加的,使得tar有压缩和解压的功能;

解包:

tar  xvf  xxx.tar(需要解包的名字)

(2)gzip   压缩或者解压

压缩:gzip  打包的名字

gzip  my.tar   (后缀名为.tar.gz)

解压:gzip  -d  xxx.tar.gz

打包--压缩--解压--解包

一步解压之后:打包--压缩---一步解压

(3)tar一步解压(重点)

GNU之后tar命令:

可解压两种格式:tgz  tar.gz

tar    zxf  xxx.tar.gz

tar   zxf  xxx.tgz

(新的系统x也可以一步解压)

常见面试题目:

(1)问题:g++与 gcc 的区别, g++能编译.c 文件吗? gcc 能编译.cpp 文件吗?
考点: 对 gcc 和 g++工具的使用

  1. gcc 现在是 GNU提供的一些编译器工具的集合(Gnu Compiler Collection),以
    前是GNU组织提供的 c 编译器(Gnu C Compiler)。 g是 c编译器编译器。
  2. gcc 可以编译.c 和.cpp 的源文件对.c 按 c 语言语法规则处理, .cpp 自动按
    c语法规则处理,但默认不链接相应的 c库,需要手动指定链接的库名"-lstdc++"

例如:gcc  -o test  test.cpp    -lstdc++

  1. g可以编译.c 和.cpp 的源文件,但是都按 c的语法规则来处理。

(2)gdb常用命令(答案略)

(3)问题:Linux 调试,程序断点实现思路?
解答:
linux 提供了系统调用 ptrace(),它可以提供一个进程跟踪控制另一个进程的方法,并可以检查和改变被跟踪进程内存和寄存器里的数据,可以用它来实现断点调试的功能。
原理是 attach 在正运行的进程使其停止,然后读取进程的指令寄存器内容所指向的指令,备份后替换成目标指令,再使其继续执行,此时被追踪进程就会执行我们替换的指令,运行完成注入的指令后,再恢复原进程的指令寄存器的值, 从而达到改变运行原程序逻辑的目的。
参考博客:
Linux Ptrace 详解-CSDN博客
Linux Hook 笔记 - 有价值炮灰 - 博客园

(4)问题:现有从网上下载的redis安装文件:redis-6.0.9.tar.gz 现在如何对其进行解压释放出源文件,请给出操作命令?
解答:
tar zxf redis-6.0.9.tar.gz

(5)问题:Linux 的版本号是多少, gcc 的版本号是多少
解答:
使用命令 uname 可以查看 Linux 的版本, 使用 gcc -v 可以查看 gcc 版本。
(6).vi/vim的基本命令
问题:vi 的基本命令使用操作
解答:

  1. 三种模式:命令模式、插入模式、末行模式
  2. 命令模式转插入模式: i a o , I A O
  3. 命令模式下几个快捷操作: nyy 复制 n 行, ndd 删除/剪切 n 行 p 粘贴 等等
  4. 末行模式几种操作: :wq 保持退出 :w 只保存 :q 只退出 :q!不保持退出 等

(7)问题:查看系统某个日志文件 ,使用哪个命令最合适?
解答:tail命令

(8)问题:程序和进程的区别?
解答:
程序:存储在磁盘上的二进制可执行文件。
进程: 是一个正在运行的程序,它是动态的,而程序是一个静态的文件,进程

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

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

相关文章

小程序中的大道理之四--单元测试

在讨论领域模型之前, 先继续说下关于测试方面的内容, 前面为了集中讨论相应主题而对此作了推迟, 下面先补上关于测试方面的. 测试覆盖(Coverage) 先回到之前的一些步骤上, 假设我们现在写好了 getPattern 方法, 而 getLineContent 还处于 TODO 状态, 如下: public String ge…

Kubernetes 秘密暴露使大型区块链公司面临风险

领先的网络安全专家对公开的 Kubernetes 配置表示担忧,这可能会威胁许多组织供应链的安全。 受影响的公司包括两家主要的区块链公司(出于安全原因,其名称已被隐去)以及其他多家财富 500 强公司。 Aqua Security 研究人员报告称&…

【C++干货铺】非类型模板 | 模板特化 | 模板分离编译

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 非类型模板参数 模板的特化 什么是模板特化? 函数模板特化 类模板的特化 全特化 偏特化 模板的分离编译 什么是分离编译? 模板的…

shiro的前后端分离模式

shiro的前后端分离模式 前言:在上一篇《shiro的简单认证和授权》中介绍了shiro的搭建,默认情况下,shiro是通过设置cookie,使前端请求带有“JSESSION”cookie,后端通过获取该cookie判断用户是否登录以及授权。但是在前…

30系列显卡在ubuntu下不能满血运行的问题

之前发现在ubuntu下,我的3080只能跑115w最高,而这在win下是可以跑165w的。于是乎google了所有结果,无解… 现已经过去一年,显卡价格飞涨,无奈只能使用笔记本跑自己的代码了。结果发现nvidia推了Linux下的动态加速&…

用友NC word.docx接口存在任意文件读取漏洞 附POC

@[toc] 用友NC word.docx接口存在任意文件读取漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使…

有了倾斜摄影,如何搭建一座智慧城市?

随着无人机航测、倾斜摄影等全新一代测绘信息技术方法的发展,可以迅速搜集制作精细化的城市三维模型,搭建城市地理信息基础服务架构。 近期都在重点关注的“智慧城市”究竟是什么,有什么重大作用,同时又面临着什么难关&#xff0c…

Deepin使用记录-deepin系统下安装RabbitMq

目录 0、引言 1、由于RabbitMq是erlang语言开发的,所有需要先安装erlang 2、更新源并安装RabbitMq 3、安装完成之后,服务是启动的,可以通过以下语句查看状态 4、这样安装完成之后,是看不到web页面的,需要再安装一…

调试器gdb

目录 一、调试 1、前言 2、 debug和release 二、基本操作 1、退出 quit 2、开始调试 r 3、打断点 b 4、查看断点 info b 5、查看代码 l 6、删除断点 d 7、逐过程 n 8、打印变量内容 p 9、逐语句(进入函数) s 10、查看函数调用堆栈 bt 11、…

扫描条形码到电脑:Barcode to pc 4.6.3 Crack

像专业人士一样使用条形码将条形码发送到 PC 排名第一的智能手机扫描应用程序 将条形码即时发送到计算机程序并自动执行任务的最简单方法 受到全球 500,000 多名用户的信赖 条形码到 PC:Wi-Fi 扫描仪应用程序,条码到 PC:适用于 Android 和 i…

visual stdio动态库的使用

导出类和使用方式 #ifndef PCH_H #define PCH_H// 添加要在此处预编译的标头 #include "framework.h"#ifdef _WIN32 #ifdef MYCLASS_EXPORTS #define MYCLASS_API __declspec(dllexport) #else #define MYCLASS_API __declspec(dllimport) #endif #else #define MYC…

Nginx反向代理实现负载均衡webshell

目录 本实验所用的环境: 问题一:由于nginx采用的反向代理是轮询的方式,所以上传文件必须在两台后端服务器的相同位置上传相同的文件 问题二:我们在执行命令时,无法知道下次的请求交给哪台机器去执行我们在执行hostn…

C#,数值计算——有理函数插值和外推(Rational_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 有理函数插值和外推 /// Rational Function Interpolation and Extrapolation /// Given a value x, and using pointers to data xx and yy, this routine returns …

AtomicReference原子引用类-线程安全

简介与作用&#xff1a; AtomicReference是Java中的一个原子类&#xff0c;它的主要作用是提供了一种原子操作的方式来更新对象的引用。它通常用于多线程环境下&#xff0c;用来解决并发访问共享对象时可能出现的竞态条件问题。 &#xff08;实际开发中用于某个数据模型更新&a…

Elasticsearch:ES|QL 查询中的元数据字段及多值字段

在今天的文章里&#xff0c;我来介绍一下 ES|QL 里的元数据字段以及多值字段。我们可以利用这些元数据字段以及多值字段来针对我们的查询进行定制。 ES|QL 源数据字段 ES|QL 可以访问元数据字段。 目前支持的有&#xff1a; _index&#xff1a;文档所属的索引名称。 该字段的…

从0开始学习JavaScript--JavaScript事件:响应与交互

JavaScript的事件处理是Web开发中至关重要的一部分&#xff0c;通过事件&#xff0c;能够实现用户与页面的互动&#xff0c;使得网页更加生动和交互性。本文将深入探讨JavaScript事件的各个方面&#xff0c;包括事件的基本概念、事件类型、事件对象、事件冒泡与捕获、事件委托、…

MATLAB在信号系统中的应用

1.产生一个幅度为1, 基频为2Hz&#xff0c;占空比为50%的周期方波.要求画出图形。 在MATLAB中&#xff0c;函数square(w0*t, DUTY)产生基本频率为w0 (周期T2*pi/w0)、占空比DUTY (τ/T)*100的周期矩形波&#xff08;方波&#xff09;&#xff0c;默认情况下占空比DUTY50。占空…

数据结构总复习

文章目录 线性表动态分配的顺序存储结构链式存储 线性表 动态分配的顺序存储结构 通过分析代码&#xff0c;我们发现&#xff0c;要注意什么&#xff1a; 要分清你的下标Insert 函数是可以用来没有元素的时候&#xff0c;增加元素的Init(或者Create )函数一般只用来分配空间…

关于泛型方法重写的问题--继承/重写/泛型

第二张图中的抽象类实现了图1 中的泛型接口;其中图2中的handler方法重写图1中的接口方法是没有问题的,但是图2中的next泛型方法指定类型重写图1中的泛型方法next却是有问题的,为什么? 其中

2023-11-25 LeetCode每日一题(二叉树中的伪回文路径)

2023-11-25每日一题 一、题目编号 1457.二叉树中的伪回文路径二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中…