strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
此命令可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。请参见 proc(1) 手册页。这个命令在排查进程问题时非常有用,比如我们发现一个服务一直处于work状态(如假死状态,好似死循环),使用这个命令就能轻松定位问题所在;
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。
lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。
ldd作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。示例:查看test程序运行所依赖的库::/opt/app/todeav1/test$ldd testlibstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)libc.
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必不可少的工具;启动gdb对C/C++程序的调试,需要在编译前就加上-g选项::$g++ -g hello.cpp -o hello调试可执行文件::$gdb <program>program也就是你的执行文件,一般在当前目录下。
性能优化的核心是找出系统的瓶颈点,问题找到了,优化的工作也就完成了大半;这里介绍的性能优化主要从两个层面来介绍:系统层面和程序层面;分析系统瓶颈系统响应变慢,首先得定位大致的问题出在哪里,是IO瓶颈、CPU瓶颈、内存瓶颈还是程序导致的系统问题;
进程调试gdb 程序交互调试GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。对于一名Linux下工作的c++程序员,gdb是必不可少的工具;GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。以下从一个完整的调试过程简单说明最基本的几个命令;
一般源代码提供的程序安装需要通过配置、编译、安装三个步骤;配置做的工作主要是检查当前环境是否满足要安装软件的依赖关系,以及设置程序安装所需要的初始化信息,比如安装路径,需要安装哪些组件;配置完成,会生成makefile文件供第二步make使用;编译是对源文件进行编译链接生成可执行程序;
系统管理查询系统版本查看Linux系统版本$uname -a$lsb_release -a查看Unix系统版本:操作系统版本$more /etc/release查询硬件信息查看CPU使用情况$sar -u 5 10查询CPU信息$cat /proc/cpuinfo查看CPU的核的个数$cat /proc/cpuinfo | grep processor | wc -l查看内存信息$cat /proc/meminfo显示内存page大小(以KByte为单位)$pagesize显示架构$arch设置系统…
用户添加用户$useradd -m username该命令为用户创建相应的帐号和用户目录/home/username;用户添加之后,设置密码:密码以交互方式创建$passwd username删除用户$userdel -r username不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项;
查询网络服务和端口netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
在使用操作系统的过程中,我们经常需要查看当前的性能如何,需要了解CPU、内存和硬盘的使用情况;本节介绍的这几个工具能满足日常工作要求;监控CPU查看CPU使用率$sar -ueg:$sar -u 1 2[/home/weber#]sar -u 1 2Linux 2.6.
这一节我们介绍进程管理工具;使用进程管理工具,我们可以查询程序当前的运行状态,或终止一个进程;任何进程都与文件关联;我们会用到lsof工具(list opened files),作用是列举系统中已经被打开的文件。在linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件。用好lsof命令,对日常的linux管理非常有帮助。
日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩;
本节将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是常用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find 文件查找查找txt和pdf文件find . \( -name "*.txt" -o -name "*.pdf" \) -print正则方式查找.
文件管理不外乎文件或目录的创建、删除、查询、移动,有mkdir/rm/mv文件查询是重点,用find来进行查询;find的参数丰富,也非常强大;查看文件内容是个大的话题,文本的处理有太多的工具供我们使用,在本章中只是点到即止,后面会有专门的一章来介绍文本的处理工具;有时候,需要给文件创建一个别名,我们需要用到ln,使用这个别名和使用原文件是相同的效果;
概述在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档;linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们;在只记得部分命令关键字的场合,我们可通过man -k来搜索;需要知道某个命令的简要说明,可以使用whatis;而更详细的介绍,则可用info命令;
Linux下有很多命令行工具供我们使用,每个工具总是提供了大量参数供我们选择; 实际工作中,我们用到的工具,最常用的总是那么几个参数组合; 为此,我写了这本书相对实用的书;这本书专注于Linux工具的最常用用法,以便读者能以最快时间掌握,并在工作中应用;说明全书分为三个部分:第一部分为基础篇,介绍我们工作中常用的工具的高频用法;
Part-II Regular Expression (正则表达式)接下来的Regular Expression(RE) 可是个大题目,要讲的很多。我这里当然不可能讲得很全。只希望能带给大家一个基本的入门概念,就很足够了...先来考一下英文好了:What is expression?简单来说,就是"表达",也就是人们在沟通的时候所要陈述的内容。
关注时代Java