可执行文件的符号表(symbol table)记录了某个可执行文件中的函数名、全局变量、宏定义等符号信息,这些信息对于我们调试十分重要。...目前,我正在DragonOS上开发内核栈traceback程序,因此需要导出内核文件的符号表.这个时候就需要用到Linux的nm命令。...nm命令属于GNU binutils的功能,能够输出可执行文件的符号表。它的用法是这样的: 用法:nm [选项] [文件] 列举 [文件] 中的符号 (默认为 a.out)。...对于不记录符号大小的目标文件格式,此选项不起作用,除非使用了--size sort,在这种情况下,将显示计算的大小 -s, --print-armap 当列出库中成员的符号时,同时列出索引。...只有在启用插件支持的情况下构建了工具链时,此选项才可用 --size-sort 按符号大小排列 --special-syms 显示目标相关的具体特殊含义的符号。
一、操作目的和应用场景 Capabilities机制是在Linux内核2.2之后引入的,原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程...(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。...2、 Capabilities的管理方法 (1)设置Capability 举个例子,安装wireshark软件后,默认情况下,普通用户无法对网卡实施抓包操作。这是因为普通用户不具备相应的权限。 ?...(二)利用Capabilities实现权限提升 现在假设管理员对一些可执行文件设置了capabilities。测试人员通过下面的命令查找这些文件: getcap -r / 2>/dev/null ?...在kali linux上提权成功,获取了root shell。 在CentOS 7系统中安装的低版本php无法提权: ?
由于linux系统的稳定性,大部分的PHP服务器都被部署在linux上,而且像redis等扩展在linux能得到更好的支持,所以对于PHP程序员来说,使用linux的功底也相当重要,接下来总结一下我从一开始在...linux下安装配置linux的心得。...用过小巧的virtual box,在win7下安装要改theme主题文件,辛苦装好的环境因为未知原因(兼容问题排除后,猜测是BIOS设置的问题,可参考)打不开虚拟机而放弃后,终于选择了VM,VM下安装linux...说一下要注意的地方吧:虚拟机配置选择“桥接模式”,这样,虚拟机和主机就在同一个IP段下,可以很轻松地互相访问,VM下如图: ? 然后是我们经常要遇到的问题网络配置、和虚拟之间的交互、yum配置。...像mongo等扩展服务器是扩展的核心,要在各自的官网找到下载地址,用wget命令下载下来,然后解压安装,一般是官方编译好的可执行文件,直接复制到目标目录即可。
Linux可执行文件与进程的虚拟地址空间 一个可执行文件被执行的同时也伴随着一个新的进程的创建。...Linux会为这个进程创建一个新的虚拟地址空间,然后会读取可执行文件的文件头,建立虚拟地址空间与可执行文件的映射关系,然后将CPU的指令指针寄存器设置成可执行文件的入口地址,然后CPU就会从这里取指令执行...Proc目录下的进程虚拟地址空间布局 Linux在装载可执行文件的时候,会将这些segment映射到进程的地址空间中。映射的时候,这里面的segment会对应一个VMA。...当我们在谈到ELF装载时,段专门指segment,而在其他的情况下,段指的是section。 在实际的映射过程中,只发现有代码段映射的VMA,有数据段映射的VMA,却没有BSS段映射的VMA。 ?...可以发现,MemSiz比FileSiz多出了0x20个字节,十六进制的20对应的十进制是32。再来看一下这个ELF可执行文件中BSS段的大小。 ? 可以看到,BSS段的大小正好是十进制的32,。
在cmd或者powershell执行以下命令set GOARCH=amd64go env -w GOARCH=amd64set GOOS=linuxgo env -w GOOS=linux然后正常go...build即可再切换回windowsgo env -w GOARCH=amd64go env -w GOOS=windows又可以愉快的编译exe可执行文件啦
有了上面汇编语言调用 C 语言的基础,我们就可以做到让汇编语言编写的 loader 拉起用 C 语言编写的内核了,本文我们就来详细了解一下编译后的可执行文件 — ELF 文件的结构,下一篇文章将会介绍如何通过汇编将...在 linux 中,可执行文件、Object文件、动态库文件都是ELF格式文件,他相当于 windows 操作系统中的 PE 文件。 通过 readelf 命令可以读取 ELF 文件的内容。 3....这里提到了“节”的概念,上一篇文章中,我们在汇编中使用了 section 关键字,就是指定了对应代码块的 section 类型,linux 支持下面的三种 section: .text — 代码段,用来存放代码...可执行文件, 3....别忘了我们的目标,我们需要通过汇编语言编写的 loader 程序将在 linux 环境上编译的 C 语言内核程序载入到内存并执行,因此,实际上我们只需要知道 ELF 文件需要如何被载入内存,并从哪里开始执行
大家好,又见面了,我是你们的朋友全栈君。 在 ADS 下,可执行文件有两种,一种是.axf 文件,带有调试信息,可供 AXD 调试工具使用.另一种是.bin 文件,可执行的二进制代码文件。...我们重点是讲描.bin 文件的组成。 我们把可执行文件分为两种情况:分别为存放态和运行态。 1. 存放态 存放态是指可执行文件通过 fromelf 产生后,在存储介质(flash 或磁盘)上的分布....可执行文件的存放态如下: +————-+———– | .bss | +————-+– 数据段 | .data | +————-+———– | .rodata | | |...运行态 可执行文件通过装载过程, 搬入到 RAM 中运行, 这时候可执行文件就变成运行态。...在 ADS 下对可执行代 码各段有另一个名称: | … | +————-+———– | .bss | ZI 段 +————-+– 数据段 | .data | RW
大家好,又见面了,我是你们的朋友全栈君。 1....Linux zip命令 压缩 zip -r filename.zip ./* // 将当前目录下的所有文件和文件夹全部压缩成 filename.zip文件 -r表示递归压缩子目录下所有文件...Linux tar命令 -c: 建立压缩档案 -x: 解压 -t: 查看内容 -j: 通过bzip2的支持进行压缩/解压,此时文件最好为*.tar.bz2 -z: 通过gzip的支持进行压缩/解压,此时文件最好为...Linux rar命令 要在Linux下处理.rar文件,需要安装RAR for Linux yum install rar 压缩 rar a filename * //将所有的文件压缩成一个rar...包,名为filename.rar 解压 unrar e filename.rar test // 将filename.rar中的所有文件解压到.
FILE... stat接受一个或者多个输入的FILE,和一系列的选项,用来控制命令的行为和输出结果。...安全内容 Access - 文件最后被访问的时间 Modify - 文件内容最后被修改的时间 Change - 文件属性或者内容最后被修改的时间 Birth - 文件创建时间(Linux 下不支持)...显示关于文件系统的信息 为了获取文件归属的文件系统相关信息,而不是获取文件本身的信息,我们使用-f,(--file-system)选项: stat -f file.txt 这个命令的输出看起来是这样:...用户的可用剩余块数 Inodes: Total - 文件系统上的总节点数 Free - 文件系统上的剩余节点数 间接(跟进)软连接 默认情况下,stat 不会跟进软连接。...总结 stat命令打印了文件和文件系统的信息。 在 Linux 下,还有其他几个命令可以显示文件信息。ls就是最有用的一个,但是它只显示stat信息中的一部分。
下面是我的配置信息: set shortmess=atI syntax enable syntax on set ai set nu set ruler set autoindent set nocompatible... if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif "删除行末的空格
一、简介 free命令是最经常使用的命令之一,用于查看内存使用情况。 free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。...输出简介 Mem 行(第二行)是内存的使用情况。...Swap 行(第三行)是交换空间的使用情况。 total 列显示系统总的可用物理内存和交换空间大小。 used 列显示已经被使用的物理内存和交换空间。...shared 列显示被共享使用的物理内存大小。 buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。 available 列显示还可以被应用程序使用的物理内存大小。...请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差 周期性查看怎么办? 使用 free -s 10 ,这里的 10 代表间隔10秒查看 ``
本文讲述 Linux pgrep命令的基础知识。 pgrep是一个命令行工具,它允许你基于给定条件来查找正在运行的程序的进程 ID。它可以是进程名字的全称或者一部分,进程运行者,或者其他属性。...这个pgrep命令是procps(或者procps-ng)软件包的一部分,它基本上在所有的 Linux 发行版上都预装了。...如果没有发现匹配的,输出将是空的: 1039 2257 6850 31279 当至少有一个进程匹配了所给的名字时,这个命令返回0.否则,返回退出错误码1。这在 shell 脚本中很有用处。...如果你想发送信号给匹配的进程,使用pkill。这个命令是pkill的封装,并且使用了同样的选项和匹配样式。 pgrep会在每一行打印一个匹配的进程。-d选项允许你指定一个分隔符。...2257 ssh-agent 6850 ssh 31279 ssh-agent 如果你想严格按照搜索样式准确匹配进程,你需要使用: pgrep '^ssh$' -l 输出: 6850 ssh 默认情况下,
本文最先发布在: https://www.itcoder.tech/posts/modprobe-command-in-linux/ Linux kernel 是 Linux 操作系统的核心部分。...它管理着系统资源,并且它是你的计算机软硬件之间的桥梁。 Linux kernel 有一个模块化设计。一个 kernel 模块,通常被称为 驱动程序,是用来扩展内核功能的一段代码。...在这篇文章中,我们将会讲解如何使用modprobe来从 Linux 内核中 添加或者移除模块。modprobe是kmod的一部分,它是用来管理 Linux 内核模块的多个程序的封装二进制包。...,在新的一行指定模块,或者创建一个新的.conf文件。...三、总结 modprobe命令可以允许你添加或者移除 Linux 内核模块。
highlight Comment ctermfg=lightblue guifg=darkblue
内容如下: /var/lib/jenkins/:默认的JENKINS_HOME。...jenkins”,把java路径加上: 开机启动 chkconfig jenkins on 4.密码忘记 修改 JENKINS_HOME/users/user.conf user.conf 就是忘记密码对应的用户...针对 yum install jenkins 安装的Jenkins,它的HOME目录位于 /var/lib/jenkins/ 下面 修改 #jbcrypt:$2a$10$QqzUz7kc8U8wkc5vexlxnuw5umudQj7A....0NmuZPrGMaq3qaV5m7hi 为 #jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS 后者是111111的hash
我们有时在Windows编辑的文件,放到了Linux环境中,打开文件,可能发现每行结尾多了一个“^M”,导致一些在Windows下能执行的解析程序,放到了Linux中,执行就会报错,问题就出在这个"^M...在Linux中vim是无法显示\r,因为ascii中对应的不是Linux中的标准acsii字符,其实其对应的ASCII码十进制形式是13(无显示形式),对应的八进制形式是15(显示为^M)。...对这个问题的解决可能有很多种, 1. 在Windows下使用文本工具进行转换win-->linux,例如notepad++、UltraEdit直接进行转换。 2....在Linux下,可以用dos2unix file,将文件转换格式。 3. 在Linux下,可以用cat file | tr -d "\r" > new_file,进行替换。 4....在Linux下,可以用sed 's/^M//old_file > new_file,进行替换。
1.首先要查看一下CentOS的版本: cat /etc/redhat-release 我们安装最好用root用户来安装,避免一些问题发生。...如果已安装这些程序,请卸载它们以及相关的依赖项。...\ lvm2 6.使用以下命令来设置稳定的存储库 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux...命令行运行docker命令的时候,需要本机有 Docker 服务。...用下面的命令启动 systemctl start docker 10.安装完成后,运行下面的命令,验证是否安装成功 docker version 或者 docker info 补充一下1.如果想设置开机自启可以
本文简要介绍了 C 语言的编译命令。 Hello World! #include int main() { printf("Hello World!...# include “max.c” # 不声明,会发生警告信息 $ gcc max.c hello.c -o main.out # 声明 $ gcc hello.c 头文件与函数定义分离 不经常变动的函数
step7:安装,将redis的命令安装到/usr/local/bin/⽬录 sudo make install step8:安装完成后,我们进入目录/usr/local/bin中查看
/configure make make install 查看Python的版本 python –V 查看Python执行文件位置 which python 之前的Python不用卸载,新装的Python...与之不会冲突,比如安装完成之后,会有一个python2.5即是我们安装的最新版本Python。
领取专属 10元无门槛券
手把手带您无忧上云