庐山研习班上介绍的25个LINUX工具

从2013年的第一届算起,庐山研习班走过十余个年头,办了十几次了。但每一次,都有很多不一样。即使是相同的主题,也有很大差异。

今年春季的庐山研习班是在上个周末。周四晚上我和大部分同学都到了五老峰脚下的训练基地。

619c36500639e9da45e5246be9b3f4f7.jpeg

除了周六下午一起爬山之外,从周五一早到周日下午的三天两晚时间里,大家都沉浸在Linux的世界里。

754505b6be14a7f1765c853785663fd9.jpeg

为了提高知识的转化率,这一届研习班里,我尽可能减少单纯的讲解,努力增加讨论和动手试验。

讨论方面,感谢有多位资深码农参加,问了很多高质量的问题,不时还有很精彩的“点评”和“共鸣”。

f3aea436e9aba0ebe65e33654fa521c1.jpeg

动手试验方面,除了预定的大量操作之外,我还在回答问题时“临时起意”,带着大家写代码,然后上调试器,一起探索。

有一个问题是,当一个程序在做死循环,有人kill它时,是怎么从循环里跳出来的。我当场写了一个做while循环的小程序,gcc编译,然后上gdb观察信号分发的过程,使用handle命令配合,把干讲很难说清的问题,让大家看的一清二楚。

研习班上,有“同学”给我留了个作业,希望把讲过的工具和命令总结一下。我觉得这个建议非常好,立刻答应下来。

周一一早回到上海后,我便直接到单位上班了。前几天晚上又忙别的事情了,但我一直记着这个作业,今晚终于抽出时间,整理出下面这个列表。

1 apt

apt install 安装软件包

apt-cache search 搜索软件包

2 chrt

创建在“头等舱”运行的进程,管理进程的实时属性

3 dmesg

看内核的日记

4 GDB

上调试器,除了常用的命令外,还现场演示了很多种特殊的用法,比如调用malloc,弥补perf的不足查找函数名,飞程序指针等

5 insmod

将刘姥姥驱动送进高特权的内核空间

6 KernelShark

图形化方式捕捉追踪事件和显示分析

7 lsmod

观察内核模块

8 cat /proc/maps

观察进程空间

9 nice

调整普通仓里进程的优先级

10 objdump

观察二进制文件

11 perf stat

看CPU工厂的硬指标

12 perf top

观察热点

13 ps

看软件世界里的众生

14 pstree

理解进程的关系

15 readelf

理解可执行文件格式和很多软件机制

16 renice

动态调整优先级

17 STRACE

观察系统调用,理解大局观,简单调优

18 taskset

绑定CPU

19 tee

与sudo配合修改特殊的假文件

20 top

LINUX下的任务管理器

21 trace_cmd

使用追踪机制的命令行工具

22 valgrind

二进制插桩方式的内存错误检查工具

23 vim

经典的编辑器

24 windbg

Windows下的经典调试器,使用它帮助理解地址空间

25 挥码枪

last but not least,硬件调试器,将内核断下来,慢慢观察

d47b0a61b536dee71692bad8571c91d7.jpeg

对于错过庐山站的朋友,五月份的上海站正在招生中。

(写文章很辛苦,恳请各位读者点击“在看”,也欢迎转发)

*************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生

扫描下方二维码或者在微信中搜索“盛格塾”小程序,可以文章和有声读物

14578a40d2af37388a5105231d4c4105.png

也欢迎关注格友公众号

8c377d9ed870b069f45865c64f2727aa.jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【可下载】CDA 1级教材《精益业务数据分析》2023最新版

CDA一级认证教材:《精益业务数据分析》 全面、系统地讲述业务描述性分析为企业决策行为创造价值的全流程技能,涵盖描述性数据分析方法、业务分析方法、数据分析结果应用方法等内容。 条理清晰的结构、通俗易懂的语言、完整立体的知识框架为读者铺开一幅…

Vite 热更新(HMR)原理了解一下

❝ 幸福的三大要素是:有要做的事(something to do)、有要爱的人(someone to love)、有寄予希望的东西(something to hope for) ❞ 大家好,我是「柒八九」。一个「专注于前端开发技术…

CK_Label_V15

CK_Label_v15(外接供电版) 产品型号 CK_Label_v15 尺寸 63*14.6*7.9mm 按键 0 指示灯 1 RGB(7种(红/绿/蓝/黄/紫/白/青)) 通信方式 无线通信 工作频段 868MHz 供电方式 24V外接供电 电池容量 300mAh 电池寿命 …

第⑰讲:Ceph集群各组件的配置参数调整

文章目录 1.Ceph集群各组件的配置文件1.1.Ceph各组件配置方式1.2.ceph临时查看、修改配置参数的方法 2.调整Monitor组件的配置参数删除Pool资源池2.1.临时调整配置参数2.2.永久修改配置参数 1.Ceph集群各组件的配置文件 1.1.Ceph各组件配置方式 Ceph集群中各个组件的默认配置…

IDEA中配置使用maven和配置maven的中央仓库

1 以汉化后的IDEA为例配置maven 打开idea选择文件 选择 设置 点击>构建.执行.部署 点击>构建工具 点击>Maven 其中Maven主路径 就是我们maven下载解压后的路径 可以通过边上的三个点选择你解压后的绝对路径,也可以直接把解压后的绝对路劲复制过来 以下…

从零开始,快速掌握创建百度百科技巧

百科是一种常用的知识库,对于想要分享或搜索相关知识的人们来说,它是一个必备的工具。而如何创建一个百科呢?下面将详细介绍创建百科的步骤和技巧,帮助你轻松掌握创建百科的方法。 首先,创建百科需要明确一个主题或领域…

Gin+WebSocket实战——在线聊天室WebSocketDemo详细使用教程

文章目录 仓库地址项目简介如何使用 仓库地址 Github:https://github.com/palp1tate/WebsocketDemo 欢迎star!😎 项目简介 利用 GinWebSocket 实现的在线聊天室Demo项目,支持加入/离开聊天室广播、给其他用户发送消息等。 如何…

day04 51单片机-矩阵按键

1 矩阵按键 1.1 需求描述 本案例实现以下功能:按下矩阵按键SW5到SW20,数码管会显示对应的按键编号。 1.2 硬件设计 1.2.1 硬件原理图 1.2.2 矩阵按键原理 1.3软件设计 1)Int_MatrixKeyboard.h 在项目的Int目录下创建Int_MatrixKeyboard…

OpenCV 实现霍夫圆变换

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV实现霍夫变换 下一篇:OpenCV 实现重新映射 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 HoughCircles()检测图像中的圆圈。 理论 Hough 圆变换 H…

Mysql 、Redis 数据双写一致性 更新策略与应用

零、important point 1. 缓存双写一致性问题 2. java实现逻辑&#xff08;对于 QPS < 1000 可以使用&#xff09; public class UserService {public static final String CACHE_KEY_USER "user:";Resourceprivate UserMapper userMapper;Resourceprivate Re…

javascript使用setTimeout函数来实现仅执行最后一次操作

在JavaScript中&#xff0c;setTimeout函数用于在指定的毫秒数后执行一个函数或计算表达式。它的主要用途是允许开发者延迟执行某些代码&#xff0c;而不是立即执行。 当我们想要确保仅最后一次更新UI时&#xff0c;我们可以使用setTimeout来合并多次连续的更新请求。具体做法…

C++11 数据结构7 队列的链式存储,实现,测试

前期考虑 队列是两边都有开口&#xff0c;那么在链式情况下&#xff0c;线性表的链式那一边作为对头好呢&#xff1f; 从线性表的核心的插入和删除算法来看&#xff0c;如果在线性表链表的头部插入&#xff0c;每次循环都不会走&#xff0c;但是删除的时候&#xff0c;要删除线…

回归与聚类——K-Means(六)

什么是无监督学习 一家广告平台需要根据相似的人口学特征和购买习惯将美国人口分成不同的小 组&#xff0c;以便广告客户可以通过有关联的广告接触到他们的目标客户。Airbnb 需要将自己的房屋清单分组成不同的社区&#xff0c;以便用户能更轻松地查阅这些清单。一个数据科学团队…

Python爱心代码

爱心效果图&#xff1a; 完整代码&#xff1a; import random from math import sin, cos, pi, log from tkinter import *# 定义画布尺寸和颜色 CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARG…

C#实现TFTP客户端

1、文件结构 2、TftpConfig.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace TftpTest {public class TftpConfig{}/// <summary>/// 模式/// </summary>public enum Modes{…

大模型都在用的:旋转位置编码

写在前面 这篇文章提到了绝对位置编码和相对位置编码&#xff0c;但是他们都有局限性&#xff0c;比如绝对位置编码不能直接表征token的相对位置关系&#xff1b;相对位置编码过于复杂&#xff0c;影响效率。于是诞生了一种用绝对位置编码的方式实现相对位置编码的编码方式——…

LS2K1000LA基础教程

基于LS2K1000LA的基础教程 by 南京工业大学 孙冬梅 于 2024.4.25 文章目录 基于LS2K1000LA的基础教程一、目的二、平台1.硬件平台2.软件平台 三、测试0.开发板开机及编译器配置0.1 开发板控制台0.2 虚拟机编译器配置 1. 简单应用编程1.helloworld.c2. fileio 文件操作3.proce…

Scrapy 爬虫教程:从原理到实战

Scrapy 爬虫教程&#xff1a;从原理到实战 一、Scrapy框架简介 Scrapy是一个由Python开发的高效网络爬虫框架&#xff0c;用于从网站上抓取数据并提取结构化信息。它采用异步IO处理请求&#xff0c;能够同时发送多个请求&#xff0c;极大地提高了爬虫效率。 二、Scrapy运行原…

入坑 Java

原文&#xff1a;https://blog.iyatt.com/?p11305 前言 今天&#xff08;2023.8.31&#xff09;有个学长问我接不接一个单子&#xff0c;奈何没学过 Java&#xff0c;本来不打算接的。只是报酬感觉还不错&#xff0c;就接了。 要求的完成时间是在10月初&#xff0c;总共有一…

Spring Boost + Elasticsearch 实现检索查询

需求&#xff1a;对“昵称”进行“全文检索查询”&#xff0c;对“账号”进行“精确查询”。 认识 Elasticsearch 1. ES 的倒排索引 正向索引 对 id 进行检索速度很快。对其他字段即使加了索引&#xff0c;只能满足精确查询。模糊查询时&#xff0c;逐条数据扫描&#xff0c…