
Linux
文章平均质量分 56
coldice0521
主要负责网站,软件整体构架
展开
-
Linux:strace的跟踪程序运行过程
strace 用于记录和跟踪程序运行期间收到的信号和调用的系统调用。其中包括跟踪程序运行过程中的向操作系统的内存申请和释放。一、命令格式bingsanlang@ubuntu:~$ strace -helpusage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]... [-a column] [-o file] [-s strsize] [-P path]... -p pid... / [-D] .原创 2021-01-10 18:51:50 · 2013 阅读 · 1 评论 -
Linux:ldd 查看程序依赖的共享库
ldd不是一个可执行程序,只是一个shell脚本,如果程序执行时,依赖的某个库找不到,通过这个命令可以迅速定位问题所在。一 命令格式ldd 用于打印程序或者库文件的依赖库关系。bingsanlang@ubuntu:~$ ldd --helpUsage: ldd [OPTION]... FILE... --help print this help and exit //打印帮助 --version print version i.原创 2021-01-10 15:01:13 · 3724 阅读 · 1 评论 -
Linux:超线程判断关联的物理CPU个数、核数、逻辑CPU个数
本文主要是判断linux是否使用超线程技术。一、超线程的判断依据未开启超线程:CPU总线程数 = 物理CPU个数 * 每个物理CPU的逻辑核数 * 1;开启超线程:CPU总线程数 = 物理CPU个数 * 每个物理CPU的逻辑核数 * N。其中N是超线程的个数。二、物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l三、每个物理CPU的逻辑核数cat /proc/cpuinfo| grep "cpu c.原创 2021-01-09 23:40:03 · 643 阅读 · 0 评论 -
gdb与peda、pwngdb、pwndbg组合安装与使用
gdb是一个很强大的工具,可以 组合一些插件使用,功能更加全面。这篇文章主要是讲讲如何安装,至于功能,还需了解学习。环境:ubuntu 16.04一、下载我们默认把peda、pwngdb、pwndbg都安装用户的根目录下,可以减少一些文件的改动。下载 前先进入用户根目录:bingsanlang@ubuntu:cd ~1.1 下载pedagit clone https://github.com/longld/peda.git1.2 下载Pwngdbgit clone https://.原创 2021-01-09 23:18:27 · 15722 阅读 · 6 评论 -
Linux查看glibc版本
有两种方式查看glibc版本:方式一bingsanlang@ubuntu:~$ getconf GNU_LIBC_VERSIONglibc 2.23方式二:bingsanlang@ubuntu:~$ ldd --versionldd (Ubuntu GLIBC 2.23-0ubuntu11.2) 2.23Copyright (C) 2016 Free Software Foundation, Inc.This is free software; see the source for cop原创 2021-01-09 22:00:19 · 2087 阅读 · 0 评论 -
gdb调试出错程序
今天写了一个hook函数,执行出错,不得其解,错误信息无法定位原因,使用gdb很快解决。Ubuntu 16.04.6 LTS一、背景写了一个hook函数,放在LD_PRELOAD下,用来监控malloc和free行为,代码如下:#define _GNU_SOURCE#include <stdio.h>#include <stdint.h>#include <dlfcn.h>#include <stdlib.h>#include <s.原创 2021-01-09 18:12:08 · 2177 阅读 · 1 评论 -
Linux的hook机制:自定义动态链接库hook
最近在研究应用申请内存时的行为,这时候需要hack掉glibc的malloc和free等内存申请操作。用自己写的钩子函数统计malloc和free的频次和大小,以便于解决问题。一、原理linux调用C库中的函数,使用动态库时,环境变量 LD_PRELOAD 所指定程序(动态库)在运行时会优先加载,这个动态库中的符号优先级最高,该库中的函数将会替换掉 glibc 中的相关函数,例如 malloc() 和free()。可以将内存管理库替换为 jemalloc 或者 tcmalloc 。LD_PREL.原创 2021-01-09 17:42:31 · 2168 阅读 · 3 评论 -
每天学习一个linux命令:jmap命令
jmap是分析Java堆的有效工具,可以查看堆的设置和当前堆各个区域的状态。一、命令格式1.1 jmap -heap命令执行如下命令 打印堆的汇总信息:jmap -heap 进程Id打印的信息如下:Attaching to process ID 119130, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.101-b13using thread-l.原创 2021-01-03 15:07:26 · 1056 阅读 · 3 评论 -
深入研究glibc内存管理器原理及优缺点
最近查清了线上内存占用过大和swap使用频繁的原因:由于linux使用的glibc使用内存池技术导致的堆外内存暴增,基于这个过程中学习和了解了glbic的内存管理原理,和大家分享,如有错误请及时指出。一、应用内存分布从Linux操作系统层面来看,每个应用进程使用task_struct结构进行描述和管理,在task_struct的中,使用mm_struct对内存进行管理,如下图所示:在mm_struct管理的虚拟内存中,主要包括:Kernel Space、MMAP segment、Stack、He.原创 2020-12-26 23:37:29 · 4148 阅读 · 0 评论 -
每天学习一个linux命令:jstat查看Java应用的资源和性能
11111原创 2020-09-13 14:57:39 · 381 阅读 · 0 评论 -
linux内核源码解析:linux源码下载及top命令中的RES是如何计算的
CLion:2019.3.6源码管理平台:Macbook Pro 10.12.6linux源码一、背景通过上一节,我们知道了top中的RES是从/proc/pid/statm文件中读取出来的,详细的可以看这篇博客《linux的top命令源码解析:RES指标》,这次我们要弄清楚/proc/pid/statm文件中resident值是怎么计算出来的。二、克隆linux源码2.1 linux源码github上,linux的源码地址是:https://github.com/torvalds/lin.原创 2020-09-06 13:26:25 · 2192 阅读 · 0 评论 -
linux的top命令源码解析:RES指标
CLion:2019.3.6源码管理平台:Macbook Pro 10.12.6C语言源码程序:Makefile格式的linux系统的top命令源码。top所在的系统:ubuntu 14.04一、源码导入linux的top命令采用的是procps-ng项目,可以通过Clion 导入Makefile格式的C语言源程序:procps项目 这篇博客将源码进行下载和导入。二、RES 指标的源码分析1、输入top命令后显示如下:对于RES指标, 代表PID进程占用的物理内存,其中包括共享库内存,.原创 2020-09-06 08:49:23 · 17796 阅读 · 2 评论 -
Clion 导入Makefile格式的C语言源程序:procps项目
CLion:2019.3.6平台:Macbook Pro 10.12.6C语言源码程序:Makefile格式的linux系统的top命令源码。一、背景最近在研究JVM虚拟机内存的占用情况,通过top命令看到进程的RES占用的内存很大,已经超过了java虚拟机设置的大小,所以想弄明白top的RES的数据是怎么计算出来的,但是前提是需要将top的源码下载到本地进行研究。二、源码地址top命令的项目是procps-ng项目,地址是:https://gitlab.com/procps-ng/proc.原创 2020-09-05 22:35:15 · 2417 阅读 · 0 评论 -
国内高速镜像汇总
众所周知,下载国外的一些资源,相当的慢,幸好国内的一些高校和企业存储了一些资源的镜像,并且会不定期的更新,现在提供给大家使用官方网站:https://www.centos.org/阿里云开源镜像:http://mirrors.aliyun.com/搜狐开源镜像:http://mirrors.sohu.com/网易开源镜像:http://mirrors.163.com/清华大学开源镜像...原创 2020-05-04 13:28:01 · 415 阅读 · 0 评论 -
每天学习一个linux命令:less查看文档
运行环境:Ubuntu 16.04.6 LTShttps://www.cnblogs.com/peida/archive/2012/11/05/2754477.html转载 2020-04-25 19:29:31 · 221 阅读 · 0 评论 -
每天学习一个linux命令:more查看文档
运行环境:Ubuntu 16.04.6 LTS一、语法Usage: more [options] <file>...A file perusal filter for CRT viewing.Options: -d display help instead of ringing bell//d 提示使用者,在画面下方显示 [Press space to...原创 2020-04-25 17:52:56 · 363 阅读 · 0 评论 -
每天学习一个linux命令:netstat 查看网络连接情况
运行环境:Ubuntu 16.04.6 LTS一、netstat 语法bingsanlang@ubuntu:~$ netstat -husage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vWnNcaeol] [<Socket>...原创 2020-04-22 23:37:57 · 2347 阅读 · 0 评论 -
Linux:Java应用随着持续运行一段时间后,内存可用率逐渐减少的乌龙事件排查过程
环境:centos,运行程序: springMVC的web服务容器:jetty一、背景原创 2020-04-21 22:09:49 · 2985 阅读 · 1 评论 -
Linux:VSS、RSS、PSS和USS的图解说明
一、名词概念一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USSVSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)USS...转载 2020-04-14 23:02:32 · 16362 阅读 · 1 评论 -
Linux:/proc/meminfo参数详细解释
最近公司的机器在使用的过程中,内存占用率随着运行逐渐升高,所以计划学习下linux内存方面的知识。一、Linux内存总览图转载 2020-04-12 13:25:41 · 38170 阅读 · 5 评论 -
每天学习一个linux命令:free命令和/proc/meminfo【centos环境】
运行环境:CentOS Linux release 7.0.1496(core)如果是ubuntu环境,请访问每天学习一个linux命令:free命令和/proc/meminfo【ubuntu环境】一、free命令 total used free shared buff cacheMem: ...原创 2020-04-06 23:15:26 · 1626 阅读 · 0 评论 -
每天学习一个linux命令:free命令和/proc/meminfo【ubuntu环境】
运行环境:Ubuntu 16.04.6 LTS一、free命令执行free 命令如下,输出结果如下:bingsanlang@ubuntu:~$ free total used free shared buff/cache availableMem: 1519744 977952 1...原创 2020-04-06 18:12:15 · 926 阅读 · 1 评论 -
linux操作系统下oracle的启动和停止
首先切换到oracle用户:su oraclesqlplus / as sysdba进入sql命令行:1.启动: sql> startup 即可启动oracle sql>exit 退出然后打开监听: $ lsnrctl start (启动监听)2.停止 sqlplus / as sysdbasql> shutdown 即可停止数据库 sql>exit 退出然后停止监听: $ l原创 2016-07-31 20:15:25 · 524 阅读 · 0 评论 -
ubuntu:查看ubuntu系统的版本信息
有时候我们安装软件或者搭建服务的时候,需要了解当前系统的版本信息,下面几个命令可以帮助我们查看当前ubuntu系统的版本信息。一:利用命令:cat /proc/version显示如下: Linux version 3.16.0-30-generic (buildd@kissel) linux内核版本号gcc version 4.8.2 gcc编译器版本号Ubun原创 2016-07-30 18:56:42 · 178001 阅读 · 7 评论 -
如何用命令在ubuntu(linux)下安装mysql数据库
现在各种开发都会用到一些开源代码,比如mysql数据库,下面讲一下在ubuntu下安装mysql数据库。 1)首先检查系统中是否已经安装了MySQL 在终端里面输入 sudo netstat -tap | grep mysql 若没有反映,没有显示已安装结果,则没有安装。若如下显示,则表示已经安装原创 2015-11-29 22:15:57 · 3504 阅读 · 0 评论