strace

Linux工具

若如初见. 提交于 2020-10-28 13:18:03
Linux工具 Linux下还是有很多超棒的开发工具的。 在Linux日常使用中,最常用的命令自然是sudo, ls, cp, mv, cat等,但作为后台开发者,上述命令远远不够。从我的理解来看,合格的C/C++开发者至少需要从开发及调试工具、文件处理、性能分析、网络工具四个方面针对性使用一些开发工具。这里我罗列了一些,大部分都是开发中经常需要使用的命令,有些功能比较简单的命令我会给出一些基本用法,有些本身自带体系(比如vim, gdb等)的命令只能附上链接了。 开发及调试工具介绍了从“编辑 -> 编译 -> 分析目标文件 -> 追踪调用过程”的全套命令,文件处理部分介绍了查找、统计、替换等基本文本操作命令,性能分析介绍了查看进程信息、CPU负载、I/O负载、内存使用情况等基本命令,网络工具介绍了可以查看“链路层 -> 网络层 -> 传输层 -> 应用层”信息的工具。除此以外,其他命令中也列出了开发者经常会用到的一些命令,基本可以满足日常开发需要。 目录 Chapter 1 Chapter 2 Chapter 3 Chapter 4 Chapter 5 开发及调试 文件处理 性能分析 网络工具 其他 开发及调试 编辑器:vim 编译器:gcc/g++ 调试工具:gdb 查看依赖库:ldd 二进制文件分析:objdump ELF文件格式分析:readelf 跟踪进程中系统调用

linux运维人员常用150个命令汇总

我只是一个虾纸丫 提交于 2020-10-28 10:00:14
命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp 全拼copy,其功能为复制文件或目录。 find 查找的意思,用于查找目录及目录下的文件。 mkdir 全拼make directories,其功能是创建目录。 mv 全拼move,其功能是移动或重命名文件。 pwd 全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename 用于重命名文件。 rm 全拼remove,其功能是删除一个或多个文件或目录。 rmdir 全拼remove empty directories,功能是删除空目录。 touch 创建新的空文件,改变已有文件的时间戳属性。 tree 功能是以树形结构显示目录下的内容。 basename 显示文件名或目录名。 dirname 显示文件或目录路径。 chattr 改变文件的扩展属性。 lsattr 查看文件扩展属性。 file 显示文件的类型。 md5sum 计算和校验文件的MD5值。 查看文件及内容处理命令(21个) cat

cpu利用率高定位流程笔记

≯℡__Kan透↙ 提交于 2020-10-27 17:44:53
一、用到的一些命令 taskset:调整进程使用的cpu perf top:用于观察系统和软件内性能开销最大的函数列表 top:监控查看cpu、内存等使用情况 strace:用到-f(子进程) 和-p(进程id)参数,用于跟踪进程执行情况 ps:-m(thread) -p(pid) -o用户指定显示的信息 二、定位流程 1、管理平面运行在cpu 0上,通过top命令查看cpu 0没有idle cpu资源: 2、查看函数消耗cpu资源数: taskset -c 0 perf top -C 0 可以看到第libc库的函数一直被调用 3、查看进程执行时间,可以看到exec时间远远大于sleep时间,说明占cpu时间很长: cat /proc/sched_debug 4、进一步查看进程以及进程下的线程执行时间和占用cpu资源,可以看到占用cpu很高: 5、跟踪进程执行情况,发现一直在死循环: strace –fp 3686 msgsnd(1966081, {0, "type=\"security\" time=\"2020-06-02"...}, 1296, IPC_NOWAIT) = -1 EINVAL (Invalid argument) stat("/var/log/tos_alarmd.log", {st_mode=S_IFREG|0600, st_size=1506021, ..

Linux常用命令

限于喜欢 提交于 2020-10-27 08:37:03
参考 linw7的github 《鸟哥的Linux私房菜》 一.文件管理 1.文件查找:find 2.文件拷贝:cp 3.打包解包:tar 二.文本处理 1.(显示行号)查看文件:nl 2.文本查找:grep 3.排序:sort 4.转换:tr 5.切分文本:cut 6.拼接文本:paste 7.统计:wc 8.数据处理:sed 9.数据处理:awk 三.性能分析 1.进程查询:ps 2.进程监控:top 3.打开文件查询:lsof 4.内存使用量:free 5.shell进程的资源限制:ulimit 四.网络工具 1.网卡配置:ifconfig 2.查看当前网络连接:netstat 3.查看路由表:route 4.检查网络连通性:ping 5.转发路径:traceroute 6.网络Debug分析:nc 7.命令行抓包:tcpdump 8.域名解析工具:dig 9.网络请求:curl 五.开发及调试 1.编辑器:vim 2.编译器:gcc和g++ 3.调试工具:gdb 4.查看依赖库:ldd 5.二进制文件分析:objdump 6.ELF文件格式分析:readelf 7.跟踪进程中系统调用:strace 8.跟踪进程栈:pstack 9.进程内存映射:pmap 六.其他 1.终止进程:kill 2.修改文件权限:chmod 3.创建链接:ln 4.显示文件尾:tail 5

Linux最常用150个命令汇总

余生长醉 提交于 2020-10-26 04:11:46
Linux最常用150个命令汇总 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录。 cp 全拼copy,其功能为复制文件或目录。 find 查找的意思,用于查找目录及目录下的文件。 mkdir 全拼make directories,其功能是创建目录。 mv 全拼move,其功能是移动或重命名文件。 pwd 全拼print working directory,其功能是显示当前工作目录的绝对路径。 rename 用于重命名文件。 rm 全拼remove,其功能是删除一个或多个文件或目录。 rmdir 全拼remove empty directories,功能是删除空目录。 touch 创建新的空文件,改变已有文件的时间戳属性。 tree 功能是以树形结构显示目录下的内容。 basename 显示文件名或目录名。 dirname 显示文件或目录路径。 chattr 改变文件的扩展属性。 lsattr 查看文件扩展属性。 file 显示文件的类型。 md5sum 计算和校验文件的MD5值。

从Linux内核理解JAVA的NIO

断了今生、忘了曾经 提交于 2020-10-24 09:38:35
前言 IO 可以简单分为 磁盘 IO 和 网络 IO , 磁盘 IO 相对于 网络 IO 速度会快一点,本文主要介绍 磁盘 IO , 网络 IO 下周写。 JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel (磁盘 io)和 SocketChannel (网络 io)。 如果你对 IO 的理解只是停留在 api 层面那是远远不够的,一定要了解 IO 在系统层面是怎么处理的。 本文内容: FileChannel 读写复制文件的用法。 ByteBuffer 的介绍 jvm 文件进程锁,FileLock HeapByteBuffer ,DirectByteBuffer 和 mmap 谁的速度更快 从 Linux 内核 中的 虚拟内存 、 系统调用 、 文件描述符 、 Inode 、 Page Cache 、 缺页异常 讲述整个 IO 的过程 jvm 堆外的 DirectByteBuffer 的内存怎么回收 <img src="http://oss.mflyyou.cn/blog/20200711165857.png?author=zhangpanqin" alt="image-20200711165857889" style="zoom: 33%;" /> 本文计算机系统相关的图全部来自 《深入理解计算机系统》 对 Linux

GDB 调试 .NET 程序实录

三世轮回 提交于 2020-10-22 19:08:02
注:本文重要信息使用 *** 屏蔽关键字。 最近国庆前,项目碰到一个很麻烦的问题,这个问题让我们加班到凌晨三点。 大概背景: 客户给了一些 C语言 写的 SDK 库,这些库打包成 .so 文件,然后我们使用 C# 调用这些库,其中有一个函数是回调函数,参数是结构体,结构体的成员是函数,将 C# 的函数赋值给委托,然后存储到这个委托中。 C# 调用 C 语言的函数,然后 C 语言执行到一些步骤后, C 语言函数调用 C# 的函数。这个在 ARM64 的机器下,是正常的,例如树莓派,华为的鲲鹏服务器等。由于突然改成使用 X64 的机器部署项目,没有测试就直接打包了(Docker)。 没有测试的原因有两个: 一是,众所周知 .NET Core 是跨平台的,既然在 ARM64 下已经测试过,那么应该没问题; 二是,项目是华为 edge IoT 项目,必须走华为云注册边缘设备,然后通过云服务下发应用(Docker)到机器才能成功运行(有许多系统自动创建的环境变量和设备连接华为 IoT 的凭证)。在机器上直接启动,是无法正常完成整个流程的。 三是,事情来得太突然,没有时间测试。 事实上,就是这么幸福,出事的时候就是加班福报~~~ 大家记得,要部署上线、演示项目之前,一定要测试,测试再测试。 出现问题 应用在云上下发到设备后,启动一会儿就会挂了,然后修改 Docker 容器的启动脚本,进入容器后

技术分享 | MySQL 监控利器之 Pt-Stalk

我们两清 提交于 2020-10-15 07:07:53
作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、概述 之前在社区发了一篇 故障分析 | 有效解决 MySQL 行锁等待超时问题 文档,主要介绍了下行锁超时的监控方法,下方评论中有人提到了 pt-stalk 工具也可以监控行锁超时,因为个人没怎么用过这个工具,所以下意识的就去 google 了一下。因为没找到有介绍具体监控输出的文档,就以为这个工具没法监控行锁等待,最后果断被打脸了。 以上是个小插曲,个人在本地测试了下 pt-stalk 的监控输出后,发现其监控项远远比我预测的多,用起来也比较方便,所以在这里分享下这个工具。 二、介绍 首先介绍下 pt-stalk ,它是 Percona-Toolkit 工具包中的一个工具,说起 PT 工具包大家都不陌生,平时常用的 pt-query-digest 、 pt-online-schema-change 等工具都是出自于这个工具包,这里就不多介绍了。 pt-stalk 的主要功能是 在出现问题时收集 OS 及 MySQL 的诊断信息 ,这其中包括: OS 层面的 CPU、IO、内存、磁盘、网络等信息; MySQL 层面的行锁等待、会话连接、主从复制,状态参数等信息。 而且 pt-stalk 是一个 Shell 脚本 ,对于我这种看不懂 perl 的人来说比较友好

ssh与sftp登录对端缓慢问题

Deadly 提交于 2020-10-05 00:30:54
SSH is slow to make a connection 1. su 2. vi /etc/ssh/sshd_config 3. add UseDNS no 4. /etc/init.d/sshd restart http://www.cyberciti.biz/faq/howto-restart-ssh/ http://superuser.com/questions/359344/ssh-is-slow-to-make-a-connection https://blog.csdn.net/qq_37467907/article/details/93618122 使用strace命令来跟踪慢的问题 检查服务器SSH配置文件(sshd_config)的UseDNS配置项是否开启 vi /etc/ssh/sshd_config 该配置文件,默认会有一个注释的(#UseDNS yes)配置项,但该项的缺省值是yes,所以需要显式地设置为no #UseDNS yes UseDNS no 注:UseDNS配置项主要用于安全加固,默认为yes开启时,连接过程慢是因为客户端(Client)通过SSH协议连接服务端(Server)时,服务端会进行4次的DNS反向解析请求(每次请求失败间隔5s),即服务端会根据客户端的IP进行DNS反向解析查询出客户端的主机名

百度linux输入法字体颜色不正常

故事扮演 提交于 2020-10-04 10:02:49
用百度输入法发现字体颜色不正常,删除 .config/fcitx-qimpanel/main.conf 就好了 如何发现的,新建个用户测试正常,怀疑是配置文件的问题,然后用 strace -o ~/baidu.trace -f /opt/apps/com.baidu.fcitx-baidupinyin/files/bin/baidu-qimpanel,看 ~/baidu.trace 中 openat 的,再只看~/.config相关的,就发现了可疑文件 .config/fcitx-qimpanel/main.conf 。 来源: oschina 链接: https://my.oschina.net/u/1248114/blog/4356760