unix命令

通过trace跟踪系统调用

╄→гoц情女王★ 提交于 2020-03-04 15:16:53
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 输出参数含义 root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */]) = 0brk(0) = 0xab1000access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29379a7000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)...brk(0) = 0xab1000brk(0xad2000) = 0xad2000fstat(1, {st_mode=S_IFCHR|0620, st

Linux strace追踪命令详解

穿精又带淫゛_ 提交于 2020-03-04 15:16:25
strace介绍 strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。 strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。 简单用法 root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */]) = 0 brk(0) = 0xab1000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29379a7000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory

[strace]跟踪进程的系统调用

你。 提交于 2020-03-04 15:15:02
转自 : https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html 简介 strace常用来跟踪进程执行时的系统调用和所接收的信号,调试应用程序的时候经常使用 。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 输出参数含义 root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */]) = 0brk(0) = 0xab1000access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29379a7000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or

strace命令

末鹿安然 提交于 2020-03-04 15:14:07
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 输出参数含义 root@ubuntu:/usr# strace cat /dev/null execve("/bin/cat", ["cat", "/dev/null"], [/* 22 vars */]) = 0brk(0) = 0xab1000access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29379a7000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)...brk(0) = 0xab1000brk(0xad2000) = 0xad2000fstat(1, {st_mode=S_IFCHR|0620, st

深入理解计算机系统——datalab实验

▼魔方 西西 提交于 2020-03-03 23:49:26
实验目的: 完善bits.c里的各个函数,实现其功能,并通过btest的测试 实验说明: 实验的目标是修改bits.c的副本,以便它通过所有在btest中进行测试而不违反任何编码准则。 1、使用dlc编译器(./dlc)自动检查代码是否符合标准。 命令:unix> ./dlc bits.c 说明:如果代码没有问题,dlc会直接返回,否则,它会打印标记问题的消息。 命令:unix> ./dlc -e bits.c 说明:dlc打印每个功能使用的操作员数量。 2、使用btest进行测试 命令: unix> make btest unix> ./btest [可选命令行参数] 说明:编译和运行btest程序(每次更改bits.c都要执行make btest重新编译)。 命令: unix> ./btest 说明:测试所有功能的正确性并打印出错误信息。 命令: unix> ./btest -g 说明:以紧凑的形式测试所有功能、错误消息。 命令:unix> ./btest -f foo 说明:测试函数foo的正确性。 命令:unix> ./btest -f foo -1 27 -2 0xf 说明:用特定参数测试函数foo是否正确。 3.助手程序 ishow和fshow程序可以查看整数和浮点表示,都需要单个十进制或十六进制数作为参数。要构建它们,执行命令:unix> make 示例用法:

cygwin学习

只愿长相守 提交于 2020-03-02 14:27:02
原文链接: https://www.cnblogs.com/endv/p/7674720.html 参考链接: https://zhuanlan.zhihu.com/p/56692626 根据cygwin user guide翻译整理,希望对大家有所帮助。有错误清指出。 1 引言 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对cygwin产生了兴趣。本文将对其作一介绍。 --------------------------------------------------------------------- 根据cygwin user guide翻译整理,希望对大家有所帮助。有错误清指出。 1 引言 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购)。它对于学习unix

自定义Unix命令

喜欢而已 提交于 2020-03-01 06:35:16
有时候Unix自带的命令太长记不住或者没有合适的命令,这时候我们可以使用Python来进行包装或者自定义命令。Mac中默认是没有tree命令的,我们可以使用Python进行包装: 1.编写脚本 tree.py # -*- coding: utf-8 -*- import os import sys if __name__ == '__main__': if len(sys.argv) < 2: print len(sys.argv) print("请输入路径!") exit(0) path = sys.argv[1] if not os.path.isdir(path): print("请输入有效的目录路径!") exit(0) cmd = "find {} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'".format(path) os.system(cmd) 2.编辑 ~/.bash_profile文件 添加 alias tree='python tree.py' source ~/.bash_profile 来源: oschina 链接: https://my.oschina.net/u/2602029/blog/776065

Linux OS 介绍

独自空忆成欢 提交于 2020-03-01 04:47:02
  Linux操作系统,是一种计算机操作系统,中文读法大致一般为“哩内克斯”,但真正的读法应为“哩纳克斯”。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。 一、概述   简单地说,Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。   Linux的出现,最早开始于一位名叫Linus Torvalds的计算机业余爱好者,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。   绝大多数基于Linux内核的的操作系统使用了大量的GNU软件,包括了shell程序、工具、程序库、编译器及工具,还有许多其他程序,例如Emacs。正因为如此,GNU计划的开创者理查德·马修·斯托曼博士提议将Linux操作系统改名为GNU/Linux。但有些人只把操作系统叫做"Linux"。   Linux的基本思想有两点

简述:Unix/Linux内存管理

人盡茶涼 提交于 2020-03-01 03:58:48
一、底层结构 采用三层结构,实际使用中可以方便映射到两层或者三层结构,以适用不同的硬件结构。最下层的申请内存函数get_free_page。之上有三种类型的内存分配函数: 1.kmalloc类型。内核进程使用,基于切片(slab)技术,用于管理小于内存页的内存申请。思想出发点和应用层的内存缓冲池同出一辙。但它针对内核结构,特别处理应用场景固定,不考虑释放。 2.vmalloc类型。内核进程使用。用于申请不连续内存。 3.brk/mmap类型。用户进程使用。malloc/free实现的基础。 二、内存管理的相关函数图 STL -> 内存自动分配和自动回收(C++) | C++ -> new分配内存,delete回收内存 | C -> malloc分配内存,free回收内存 | Unix 系统函数 -> sbrk/brk 分配和回收内存 | Unix底层系统函数 -> mmap/munmap分配回收 (用户层) ---------------------------------------------------------------------------- (内核层) Unix内核函数 kmalloc/vmalloc/get_free_page 三、进程与内存 a.所有进程(执行的程序)都必须占用一定数量的内存 b.对任何一个普通进程来讲,它都会涉及到5种不同的数据段

Linux简介

六月ゝ 毕业季﹏ 提交于 2020-02-29 13:30:55
国内常用 Linux是从Unix演化而来的 B语言、c语言创始人、Linux之父 c语言之父 70年代----贝尔实验室 ken用b语言做了一个Unix 71年两个人创建了c语言 73年用c写了Unix 80年代的太贵了 是个黑客。还提出gnu计划(软件自由) 人机互动 人操作软件》发出命令给shell层(解释层)》操作系统收到命令(Linux就在这里)》控制硬件 来源: https://www.cnblogs.com/rijiyuelei/p/12382384.html