Linux Learning
WA说
喜欢折腾,对微服务实践有自己深入的了解。
涉猎语言Java,Python
涉猎框架Spring Cloud/Dubbo/Spring Framework
展开
-
ELF文件格式详解
ARM的可执行文件的格式是ELF格式文件,下文对ELF格式做个详细的介绍。序言1. OBJECT文件 导言 ELF头(ELF Header) Sections String表(String Table) Symbol表(Symbol Table) 重定位(Relocation)2. 程序装载与动态连接 导言 Program转载 2013-07-22 20:36:34 · 1952 阅读 · 0 评论 -
使用互斥锁解决生产者与消费者问题
互斥锁:上锁与解锁互斥锁指代相互排斥,是最基本的同步形式,它可用于保护临界取,以保证任何时刻只有一个线程在执行其中的代码。它实际上保护的是临界区中被操纵的数据,也就是保护由多个线程或多个进程分享的共享数据使用方法lock_the_mutex(...)临界区unlock_the_mutex(,,,)在Posix中,互斥锁声明为具有pthread_mutex_t数据类型原创 2013-08-23 09:44:53 · 2087 阅读 · 0 评论 -
linux进程间通信--信号量
概述 信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。下图表示的是由两个进程使用的一个二值信号量一个进程可以在信号量执行三种操作: 1. 创建(create)一个信号量,这要求调用者指定初始值,对于二值信号量来说,它通常是1, 2. 等待(wait)一个信号量,该操作会测试这个信号量的值,如果其值小于或等于0,那就等待or阻塞,一旦其值变为大于1原创 2013-08-23 18:06:53 · 1247 阅读 · 0 评论 -
linux命令--netstat
netstat命令 netstat,用来打印网络上的连接,路由表,接口信息,伪连接和多播成员信息用法摘要netstat -t | -u | -w | -l | -a | -n | -o | -p | - N | -h 等 详解 netstat打印出linux'下网络子系统的信息。信息类型由给定的第一个参数控制 1. (none) 在无参数的情况下,ne原创 2013-08-20 01:28:35 · 1000 阅读 · 0 评论 -
linux命令--tcpdump
tcpdump命令英文原意是dump traffic on a network ,即截获网络上的数据报,可以根据指定的网络接口来截获不同的数据报。它会输出在某个网络接口上符合匹配表达式的报内容的描述。当tcpdump完成抓包后,会打印出类似下面的内容: 9 packets captured56 packets received by filter17 packets dropped翻译 2013-08-17 20:25:26 · 1609 阅读 · 0 评论 -
linux命令--ipcs, ipcrm
ipcs命令是linux/uinx上提供关于一些进程间通信方式的信息,包括共享内存,消息队列,信号ipcs用法ipcs -a 是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息ipcs -m 打印出使用共享内存进行进程间通信的信息ipcs -q 打印出使用消息队列进行进程间通信的信息ipcs 0s 打印出使用信号进行进程间通信的信息输出格式的原创 2013-08-16 00:08:22 · 6418 阅读 · 0 评论 -
linux命令--sysctl
sysctl sysctl被用来在执行时配置内核参数。这些参数都存储在/proc/sys/(以键-值对形式存储)中。你可以用sysctl来读和写数据命令参数 variable 要读的键值的名字 eg:sysctl net -> 打印出有关网络的配置参数其 -n variable 只打印值,不打印键的名字 -e variable 打印时忽略错误的键-N var原创 2013-08-25 22:16:07 · 2586 阅读 · 0 评论 -
UNIX网络编程--套接字可读或可写的条件
socket可读的条件 1. socket的接收缓冲区中的数据字节大于等于该socket的接收缓冲区低水位标记的当前大小。对这样的socket的读操作将不阻塞并返回一个大于0的值(也就是返回准备好读入的数据)。我们可以用SO_RCVLOWATsocket选项来设置该socket的低水位标记。对于TCP和UDPsocket而言,其缺省值为1 2. 该连接的读这一半关闭(也就是接收了FIN的T原创 2013-08-27 20:43:12 · 2112 阅读 · 0 评论 -
守护进程的详解与创建
守护进程守护进程是一种后台运行并且独立于所有终端控制之外的进程。为什么需要有独立于终端之外的进程呢?首先,处于安全性的考虑我们不希望这些进程在执行中的信息在任何一个终端上显示。其次,我们也不希望这些进程被终端所产生的中断信号所打断。最后,虽然我们可以通过&将程序转为后台执行,我们有时也会需要程序能够自动将其转入后台执行。因此,我们需要守护进程。守护进程的启动要启动一个守护进程,原创 2013-08-18 00:20:53 · 1393 阅读 · 0 评论 -
Linux2.6内核中epoll用法详解
epoll是linux2.6内核中才有的机制,其他版本内核中是没有的,是Linux2.6内核引入的多路复用IO的一种方式,用于提高网络IO性能的方法。在linux网络编程中,很长一段时间都是采用select来实现多事件触发处理的。Select存在如下几个方面的问题:一是每次调用时要重复地从用户态读入参数,二是每次调用时要重复地扫描文件描述符,三是每次在调用开始时,要把当前进程放入各个文件描述符的等转载 2013-09-10 22:11:06 · 1594 阅读 · 0 评论 -
linux常用命令
1、 chown chgrp chmod2、 --time=atime(访问时间) ctime(权限或属性修改时间) mtime(内容被修改时间) --full-time3、新建文件默认权限为666,目录为777 umask 为需要减去的权限4、文件隐藏属性 lsattr chattr +-i a a为只能增加数据 i为不可更改,删除,改名5、文件特转载 2013-09-13 00:07:42 · 1092 阅读 · 0 评论 -
TCPDUMP详解(续)
TCPdump抓包命令 tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执原创 2013-09-20 10:27:05 · 2127 阅读 · 0 评论 -
解决Access denied for user 'walter'@'localhost' (using password: YES)
ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO)此问题网上大部分都是围绕下面的第二步(修改密码)展开的,很是坑爹的是我怎么都登陆不进去(各种模式登陆均失败),何谈修改密码呢?本人分心mysql日志文件总结此问题的整体步骤如下:第一步:修改pid路径查看日志文转载 2014-03-11 23:55:21 · 1365 阅读 · 0 评论 -
vi 批量注释
多行注释:1. 进入命令行模式,按ctrl + v进入 visual block模式(可视快模式),然后按j, 或者k选中多行,把需要注释的行标记起来2. 按大写字母i,再插入注释符,例如//3. 按esc键就会全部注释了(我的是按两下)取消多行注释:1. 进入命令行模式,按ctrl + v进入 visual bl转载 2014-03-17 12:03:29 · 1176 阅读 · 0 评论 -
Ubuntu下星际译王/字典的安装实例解
Ubuntu下安装星际译王/字典abc@abc:~$ sudo apt-get install stardict正在读取软件包列表... 完成正在分析软件包的依赖关系树 读取状态信息... 完成 正在初始化软件包状态... 完成创建标签数据库... 完成 下列新软件包将被自动安装:stardict-common 下列“新”软件包将被安装。stardict s转载 2013-08-23 08:27:22 · 941 阅读 · 0 评论 -
编译linux内核
内核编译实验环境:Ubuntu 10.04 内核版本 2.6.32-36-generic过程概述:下载源码:下载链接:http://www.kernel.org/pub/linux/kernel/v2.6/配置内核:make menuconfig编译内核:make bzImage编译内核模块:make modules安装内核模转载 2013-08-22 23:01:28 · 941 阅读 · 0 评论 -
系统调用与标准库调用的区别
1、系统调用和库函数的关系 系统调用通过软中断int 0x80从用户态进入内核态。 函数库中的某些函数调用了系统调用。 函数库中的函数可以没有调用系统调用,也可以调用多个系统调用。 编程人员可以通过函数库调用系统调用。 高级编程也可以直接采用int 0x80进入系统调用,而不必通过函数库作为中介。 如果是在核心编程,也可以通过int 0x80进入系统调用,此时不能使用函数库。因为函数库原创 2013-08-09 21:50:54 · 1174 阅读 · 0 评论 -
进程管理详解
以下内容为>读书笔记进程与程序1. 进程是程序执行的基本单位,程序是有若干函数组成的可执行文件,而进程指的是特定程序的一个实例2. 程序包括:文本段,数据段,栈,堆,文本段存放CPU所致型的指令;数据段存放进程操作的所有数据变量;栈存放自动变量和函数数据;堆存放动态内存分配的数据;当进程创建时,子进程收到父进程的数据副本,包括数据空间,堆,栈和进程描述符。以下为创建进程的实例:原创 2013-07-28 21:15:06 · 1509 阅读 · 0 评论 -
ELF二进制目标文件详解
以下内容为>笔记链接程序找出所有引用的外部模块并链接起来,这些外部模块或函数库一般来自于开发者,操作系统和C运行库。链接程序取出这些函数库,修订指针位置(重定位),并交叉引用模块中的符号解析,最终产生一个可执行模块。符号可以是全局的也可以是局部的。全局符号可以在模块内部定义,或由另一模块外部引用。静态库是在链接时被找到并复制的,而动态库和共享库是在运行时才装载的,并让所有的进程共享原创 2013-07-28 22:20:10 · 3011 阅读 · 0 评论 -
UNIX基础知识--<<UNIX 环境编程>>读书笔记
1 shell程序就是位于应用软件与系统调用之间的程序 每个用户登录系统,系统就会为用户分配shell (用户的登录的口令文件 在 /etc/passwd2 ls filename 运行原理 敲入命令传入main函数参数 根据argv[1]创建一个指向DIR的目录文件指针,并根据argv[1]创建目录 在从该目录文件读取文件,返回一个指向struct_dirent原创 2013-07-29 22:10:36 · 941 阅读 · 0 评论 -
内存管理详解
页内存管理是运行在计算机上的应用程序通过软硬件协作来访问内存的一种方法。内存管理子系统的职责为:进程请求内存时分配可用内存,进程释放内存后回收内存,以及跟踪系统中内存的使用状况。操作系统的生命周期分为两个阶段:正常执行阶段和自举阶段;自举阶段使用临时内存,而正常运行阶段使用的内存有两种情况:一种是有一部分固定的内存分配给内核代码和数据,另一种是动态内存请求分配内存。虚拟内存依靠透明原创 2013-08-07 00:04:13 · 1497 阅读 · 0 评论 -
linux内存管理机制
物理内存和虚拟内存 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,原创 2013-08-19 17:05:27 · 899 阅读 · 0 评论 -
linux虚存管理机制
Linux的内存管理采用页式管理,使用多级页表,动态地址转换机构与主存、辅存共同实现虚拟内存:每个用户进程拥有4GB的虚拟地址空间,进程在运行过程中可以动态浮动和扩展,为用户提供了透明的、灵活有效的内存使用方式,下面简述Linux虚存管理以基本特点和主要实现技术:一、 Linux虚存管理的基本特点 1. 更大的地址空间。 虚拟内存可以是系统实际拥有的物理内存的若干倍。因而它使得操作原创 2013-08-19 21:10:00 · 2742 阅读 · 0 评论 -
每个开发人员必须知道8个linux命令
我们以一些文本举例。假设我们有2个文件,里面有订单关于第三方的放置地点和发送回应。cat order.out.log8:22:19 111, 1, Patterns of Enterprise Architecture, Kindle edition, 39.998:23:45 112, 1, Joy of Clojure, Hardcover, 29.998:24:19 11转载 2013-08-20 14:58:05 · 704 阅读 · 0 评论 -
vim的一些命令
1. i --insert模式,按ESC回到Normal模式2. x 删处当前光标所在的一个字符3. :wq 存盘+退出 4. dd 删除当前行,并把删除的行存到剪贴板里5. p 粘帖剪贴板6. !q 不存盘直接退出7. hjkl 相当与←↓↑→键8. :help 显示相关命令的帮助9. a 在光标后插入10. o 在当前行后插入一个新行11. c原创 2013-08-13 23:54:35 · 1292 阅读 · 0 评论 -
linux中close与shutdown的区别
1. close 把描述符的引用计数减一,仅在该计数变为0时才关闭套接字。而shutdown可以并以不管引用计数就激发TCP的正常连接终止序列2. close终止读和写两个方向的数据传送,而shutdown可以指定哪个方向被关闭,读端还是写端还是两个都关闭int shutdown(int sockfd, int howto);howto参数的值SHUT_RD 只关闭读这一半原创 2013-08-21 22:52:12 · 1243 阅读 · 0 评论 -
netstat命令详解
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行netstat后,其输出结果为Active Internet connections (w/o servers)Proto Rec转载 2013-08-08 22:25:23 · 777 阅读 · 0 评论 -
linux下调试core的命令,察看堆栈状态命令
linux下调试core在linux下编写程序时,有时会出现Segment fault的错误,此时内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb可以查看core文件,可以指示出导致程序出错的代码所在文件和行数。以下为一个简单的程序//////////////// test_core.c/////////////#include原创 2013-08-08 21:17:14 · 1691 阅读 · 0 评论 -
Linux环境安装ACE 6.1.0
下载下载地址:http://download.dre.vanderbilt.edu/下载ACE-6.1.0.tar.bz2,这个软件包只包含ACE,不包含TAO等附加的东西,另外bz2压缩格式的源码包比较小,只有7.55M。解压mkdir ace-installtar jxf ACE-6.1.0.tar.bz2 -C ace-install配置转载 2013-08-21 23:35:14 · 997 阅读 · 0 评论 -
select.poll,epoll的区别与应用
先讲讲同步I/O的五大模型阻塞式I/O, 非阻塞式I/O, I/O复用,信号驱动I/O(SIGIO),异步I/O模型而select/poll/epoll属于I/O复用模型 select函数 该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才能唤醒它#include #include int select(int原创 2013-08-22 11:46:43 · 1183 阅读 · 0 评论 -
epoll使用详解
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且转载 2013-08-22 22:20:29 · 1124 阅读 · 1 评论 -
these critical programs are missing or too old
these critical programs are missing or too old正则表达式ubuntu工具These critical programs are missing or too old 这个问题是我在使用UBUNTU 9.10 时遇到的问题。 在使用crosstool0.43生成工具链的时候,系统提示,太旧,,实质上是没有满足,转载 2014-08-11 18:55:22 · 4848 阅读 · 0 评论