Linux命令全解

strace

  • 获取某个可执行文件执行过程中用到的所有系统调用
:strace -f g++ main.cpp &| vim查看g++编译过程调用了哪些系统调用 , 通过管道符用vim接收:%! grep execve:%s/ , /\r /g将文件中的 ,+空格 换成\r , /g表示全局替换strace参数-c 统计每一系统调用的所执行的时间,次数和出错的次数等.-d 输出strace关于标准错误的调试信息.-f 跟踪由fork调用所产生的子进程.-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.-h 输出简要的帮助信息.-i 输出系统调用的入口指针.-q 禁止输出关于脱离的消息.-r 打印出相对时间关于,,每一个系统调用.-t 在输出中的每一行前加上时间信息.-tt 在输出中的每一行前加上时间信息,微秒级.-ttt 微秒级输出,以秒了表示时间.-T 显示每一调用所耗的时间.-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.-V 输出strace的版本信息.-x 以十六进制形式输出非标准字符串-xx 所有字符串以十六进制形式输出.-a columnLinux目录介绍目录/bin存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里 。/etc存放系统管理和配置文件/home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示/usr用于存放系统应用程序 , 比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用) 。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录 。/usr/x11r6 存放x window的目录 /usr/bin 众多的应用程序/usr/sbin 超级用户的一些管理程序/usr/doc linux文档/usr/include linux下开发和编译应用程序所需要的头文件/usr/lib 常用的动态链接库和软件包的配置文件/usr/man 帮助文档/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里/usr/local/bin 本地增加的命令/usr/local/lib 本地增加的库/opt额外安装的可选应用程序包所放置的位置 。一般情况下,我们可以把tomcat等都安装到这里 。/proc不能动,虚拟文件系统目录,是系统内存的映射 。可直接访问这个目录来获取系统信息 。/sys不能动 , linux内核 ,  硬件设备的驱动程序信息/root超级用户(系统管理员)的主目录(特权阶级o)/sbin存放二进制可执行文件,只有root才能访问 。这里存放的是系统管理员使用的系统级别的管理命令和程序 。如ifconfig等 。/dev用于存放设备文件 。/mnt系统管理员安装临时文件系统的安装点 , 系统提供这个目录是让用户临时挂载其他的文件系统 。/boot存放用于系统引导时使用的各种文件 , 启动时的核心文件/lib存放跟文件系统中的程序运行所需要的共享库及内核模块 。共享库又叫动态链接共享库 , 作用类似windows里的.dll文件 , 存放了根文件系统程序运行所需的共享文件 。/tmp用于存放各种临时文件,是公用的临时文件存储点 。/var用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等 。)等 。/lost+found这个目录平时是空的 , 系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里/srv不能动,service缩写,存放一些服务启动之后需要提取的数据,tmux使用能:(1) 分屏 。(2) 允许断开Terminal连接后,继续运行进程 。结构:一个tmux可以包含多个session,一个session可以包含多个window,一个window可以包含多个pane 。实例:tmux:session 0:window 0:pane 0pane 1pane 2...window 1window 2...session 1session 2...操作:(1) tmux:新建一个session,其中包含一个window,window中包含一个pane,pane里打开了一个shell对话框 。(2) 按下Ctrl + a后手指松开,然后按%:将当前pane左右平分成两个pane 。(3) 按下Ctrl + a后手指松开,然后按"(注意是双引号"):将当前pane上下平分成两个pane 。(4) Ctrl + d:关闭当前pane;如果当前window的所有pane均已关闭,则自动关闭window;如果当前session的所有window均已关闭,则自动关闭session 。(5) 鼠标点击可以选pane 。(6) 按下ctrl + a后手指松开 , 然后按方向键:选择相邻的pane 。(7) 鼠标拖动pane之间的分割线 , 可以调整分割线的位置 。(8) 按住ctrl + a的同时按方向键,可以调整pane之间分割线的位置 。(9) 按下ctrl + a后手指松开,然后按z:将当前pane全屏/取消全屏 。(10) 按下ctrl + a后手指松开,然后按d:挂起当前session 。(11) tmux a:打开之前挂起的session 。(12) 按下ctrl + a后手指松开,然后按s:选择其它session 。方向键 —— 上:选择上一项 session/window/pane方向键 —— 下:选择下一项 session/window/pane方向键 —— 右:展开当前项 session/window方向键 —— 左:闭合当前项 session/window(13) 按下Ctrl + a后手指松开,然后按c:在当前session中创建一个新的window 。(14) 按下Ctrl + a后手指松开,然后按w:选择其他window,操作方法与(12)完全相同 。(15) 按下Ctrl + a后手指松开,然后按PageUp:翻阅当前pane内的内容 。(16) 鼠标滚轮:翻阅当前pane内的内容 。(17) 在tmux中选中文本时,需要按住shift键 。(仅支持Windows和Linux,不支持Mac , 不过该操作并不是必须的,因此影响不大)(18) tmux中复制/粘贴文本的通用方式:(1) 按下Ctrl + a后松开手指,然后按[(2) 用鼠标选中文本,被选中的文本会被自动复制到tmux的剪贴板(3) 按下Ctrl + a后松开手指 , 然后按],会将剪贴板中的内容粘贴到光标处

推荐阅读