Linux
文章平均质量分 70
和大黄
这个作者很懒,什么都没留下…
展开
-
Linux daemontools的使用
1、安装mac:curl -o daemontools-0.76.tar.gz http://cr.yp.to/daemontools/daemontools-0.76.tar.gzcentos:wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gztar xvzf daemontools-0.76.tar.gz转载 2018-01-12 12:53:40 · 4131 阅读 · 0 评论 -
/dev/shm
一、/dev/shm理论默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录。可以通过df 命令查看结果./dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。默认系统就会加载/dev/shm ,它就是所谓的转载 2011-12-07 20:57:36 · 24120 阅读 · 1 评论 -
TCP状态转换
TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。建立一个 TCP 连接 TCP使用三次握手 ( three-way handshake ) 协议来建立连接,图 3-10 描述了三次握手的报文序列。这三次握手为:请求端(通常称为客户)发送一个 SYN 报文段( SYN 为转载 2011-10-22 19:52:54 · 1659 阅读 · 0 评论 -
Linux信号机制分析
信号机制是unix采用的一种很古老的进程通信方式(linux搬过来用),用来向一个进程通知另一个进程(也可以是自己)发生了什么事,要怎样处理。1.信号: 信号就是在signal.h中定义的一系列以SIG开头的宏,实质是整数。信号可以通过进程(调用kill,raise原创 2010-09-17 21:12:00 · 1719 阅读 · 0 评论 -
linux互斥锁和条件变量
一、互斥锁1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init原创 2011-07-19 14:20:30 · 4720 阅读 · 0 评论 -
Linux Epoll
1. EpollEpoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。其实在 Linux 下设计并发网络程序,向来不缺少转载 2011-07-15 13:30:30 · 1835 阅读 · 0 评论 -
socket 的通信过程
下图是基于TCP协议的客户端/服务器程序的一般流程:服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答转载 2011-07-06 15:54:40 · 40334 阅读 · 1 评论 -
read/write
http://learn.akae.cn/media/ch28s04.html4. read/write read函数从打开的设备或文件中读取数据。#include ssize_t read(int fd, vo转载 2011-08-30 16:44:37 · 1147 阅读 · 0 评论 -
阻塞IO与非阻塞IO
1 基本概念:阻塞IO:socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。非阻塞IO:非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。IO模式设置:一般对于一个socket 是阻塞模式还是非阻塞模式有转载 2011-08-30 16:23:26 · 1612 阅读 · 0 评论 -
readn和writen函数, socket编程常用函数
写函数write #include ssize_t write(int fildes,const void *buf,size_t nbyte) write函数将buf中的nbyte字节内容写入文件描述符fd引用的打开文件中,成功时返回写的字节数,失败时返回-1。转载 2011-08-29 21:31:35 · 7829 阅读 · 0 评论 -
eval用法
eval命令可以对命令行求值,然后做shell替换,再执行替换后的命令行。几个例子:1、eval会把赋值语句中双引号之间的内容直接赋给‘=’前的变量,而不是当作字符串赋给变量例如:version="(2 4)" 是将字符串赋值给 version;转载 2011-08-02 17:30:59 · 9576 阅读 · 0 评论 -
使用expect自动登录
一 什么是expect?我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。 Expect是一个免费的编程工具语转载 2011-07-25 15:02:33 · 3552 阅读 · 0 评论 -
非阻塞模式SOCKE的错误码
在Linux中使用非阻塞的socket的情形下。在UNIX/LINUX下,非阻塞模式SOCKET可以采用recv+MSG_PEEK的方式进行判断,其中MSG_PEEK保证了仅仅进行状态判断,而不影响数据接收。对于主动关闭的SOCKET, recv返回-1,而且errno被置为9(转载 2011-07-22 16:46:33 · 2615 阅读 · 0 评论 -
ubuntu9.04下使用xinetd安装VNC
inetd (Internet 超级服务器 ) inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它可以为多种服务管理连接,当 inetd 接到连接时,它能够确定连接所需的程序,启动相应的进程,并把 socket 交给它 (服务 socket 会作为程序的标准输入、 输出和错误输出描述符)。 使用 inetd 来运行那些负载不重的服务有助于降低系统负载原创 2010-05-19 10:28:00 · 2447 阅读 · 0 评论 -
使用mmap实现文件映射
1 文件映射传统文件访问方式是, 首先用open系统调用打开文件, 然后使用read, write以及lseek等调用进行顺序或者随即的I/O. 这种方式是非常低效的, 每一次I/O操作都需要一次系统调用. 另外, 如果若干个进程访问同一个文件, 每个进程都要在自己的地址空间维护一个副本, 浪费了内存空间. 系统调用mmap()可以将某文件映射至内存(进程空间),如此可以把对文件的操作转为对内转载 2011-12-09 15:00:24 · 3727 阅读 · 0 评论 -
git 多帐号配置
背景: 学习git的时候, 大家刚开始使用之前都配置了一个全局的用户名和邮箱。git config --global user.name "test"git config --global user.email "test@xx.com"这个配置,git保存在~/.gitconfig中。 有时候我们需要在一个机器上使用多个git帐号,比如在工作中,都会有一个工作的Git帐号,另外有一个自己使用原创 2018-01-02 13:32:35 · 1169 阅读 · 0 评论 -
item2使用Solarized主题
Solarized 是目前最完整的 Terminal/Editor/IDE 配色项目,几乎覆盖所有主流操作系统(Mac OS X, Linux, Windows)、编辑器和 IDE(Vim, Emacs, Xcode, TextMate, NetBeans, Visual Studio 等),终端(iTerm2, Terminal.app, Putty 等)。类似的项目还有 Tomorrow Th原创 2017-07-07 23:45:55 · 4076 阅读 · 0 评论 -
CLOSE_WAIT问题
1、原理Tcp连接的关闭是连接的两端分别都需要进行关闭(调用close(socket),该函数执行发送FIN,等待ACK等操作)。实际上没有客户端和服务端的区别,只有主动关闭和被动关闭的区别。主动关闭的一方发出 FIN 包,被动关闭的一方响应 ACK 包,此时,被动关闭的一方就进入了CLOSE_WAIT状态。如果一切正常,稍后被动关闭的一方也会发出FIN包,然后迁移到LAST_ACK状态。所以转载 2016-04-29 17:43:46 · 2636 阅读 · 0 评论 -
ssh公钥登录
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。 1、原理所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求输入密码,这和之前的ssh账号密码也原创 2015-12-08 19:51:27 · 2528 阅读 · 0 评论 -
linux环境变量(转)
Linux 的变量可分为两类:环境变量和本地变量环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。Linux 中环转载 2013-07-23 13:25:37 · 1350 阅读 · 0 评论 -
Linux文本处理常用命令
1.正则表达式 (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/、*、?等)组成。 (2)基本元字符集及其含义 ^ :只匹配行首。 如^a 匹配以a开头的行abc,a2e,a12,aaa,...... $ :只匹配行尾。 如^a 匹配以a结尾的行bca,12a,aaa,.......原创 2011-12-14 16:00:30 · 1769 阅读 · 0 评论 -
Linux AIO
Linux aio是Linux下的异步读写模型。Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性。对于文件的读写,即使以O_NONBLOCK方式来打开一个文件,也会处于"阻塞"状态。因为文件时时刻刻处于可读状态。而从磁盘到内存所等待的时间是惊人的。为了充份发挥把数据从磁盘复制到内存的时间,引入了aio模型。AIO 背后的基本思想是允许进程转载 2011-12-12 22:52:55 · 18956 阅读 · 0 评论 -
Linux 的 sendfile
作者:Dragan Stancevic,2003-01-01原文地址:http://www.linuxjournal.com/article/6345译者:Love. Katherine,2007-03-25译文地址:http://blog.csdn.net/lovekatherine/archive/2007/03/25/1540291.aspx如今几乎每个人都听说过Li转载 2011-12-12 21:32:13 · 1991 阅读 · 0 评论 -
linux异步IO浅析
http://hi.baidu.com/_kouu/blog/item/e225f67b337841f42f73b341.html知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上。预先知道这些数据的位置,所以预先发起异步IO读请求。等到真正需要用到这些数据的时候,再等待异步IO完成转载 2011-12-12 22:53:47 · 2543 阅读 · 0 评论 -
数据库如何抵抗随机IO的问题、方法与现实
1996年,P O'Neil等提出的 LSM-Tree 是一个重大 突 破。LSM-Tree主要有两种变形,最简单的LSM-Tree,是一个内存中的小索引加上外存中的大索引,更新先缓存在小索引中,再批量更新到大索引, 这样就有望合并对属性同一页面的多次更新的IO。复杂的LSM-Tree,是划分为多个level的很多的小索引,每个level的大小,近似的是前一个 level大小的r倍,如果一个lev转载 2011-12-18 19:57:51 · 1657 阅读 · 0 评论 -
Epoll 的LT和ET模式
man epoll The epoll event distribution interface is able to behave both as Edge Triggered ( ET ) and Level Triggered ( LT ). The转载 2011-07-22 16:02:30 · 1924 阅读 · 0 评论 -
ubuntu 下安装配置 transmission 支持 ipv6
建议从源码安装. 安装前首先卸载之前安装的 transmission :sudo apt-get remove transmission我无法登录官网, 所以从源上下载 transmission 代码sudo apt-get source transmission我下到的版本是 1.51. 解压后修改 libtransmission/web.c 文件,将文件中curl_easy_setopt( easy, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4原创 2011-06-02 16:51:00 · 8485 阅读 · 0 评论 -
ubuntu 开机启动命令行模式
<br /> <br /><br />对于大部分linux系统,初始化使用init进程, /etc/inittab 为其配置文件。例如<br /># The default runlevel<br />id:2:initdefault<br /># Boot-time system configuration/initialization script<br />si::sysinit:/etc/init.d/rcS<br /># Runlevels<br />l0:0:wait:/etc/init.d/r原创 2011-03-24 13:23:00 · 5200 阅读 · 0 评论 -
linux下查看用户组的信息
groups 查看当前登录用户的组内成员groups gliethttp 查看gliethttp用户所在的组,以及组内成员whoami 查看当前登录用户名/etc/group文件包含所有组/etc/shadow和/etc/passwd系统存在的所有用户名添加用户abc到root群组:gpasswd -a abc root转载 2010-05-04 17:21:00 · 4976 阅读 · 0 评论 -
ubuntu9.10下安装Tomcat6
一、安装之前1、下载tomcat最新的tomcat是apache-tomcat-6.0.26.tar.gz,下载地址是:http://tomcat.apache.org/安装之前要先安张jdk二、安装中1、解压apache-tomcat-6.0.26.tar.gz到安装目录下。我把tomcat安装在/opt目录下。一般不用使用超级用户。shell> tar zx原创 2010-05-04 17:08:00 · 1498 阅读 · 0 评论 -
chmod的使用
<br />格式如下 : [ugoa...][[+-=][rwxX]...][,...],<br /> <br />其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。<br /> <br /> <br /> + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 <br /> r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。<br /> -s :在文件执原创 2010-06-25 10:35:00 · 1101 阅读 · 0 评论 -
Code::Blocks配置
一、提前的话要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。我们想要一个快速,灵活而不失强大的C开发环境。 Code::Blocks是一款跨平台的C/C++的IDE。支持Windows,Linux,Mac操作系统,支持多种编译器,像Mi转载 2010-04-26 22:04:00 · 6484 阅读 · 3 评论 -
ubuntu9.10 下安装ibus-sunpinyin
sunpinyin是一个可以连打的输入法,而且有基于ibus的版本ibus-sunpinyin,特别是有人评价和搜狗拼音有的一拼。下载源代码。http://code.google.com/p/sunpinyin/downloads/list?can=1&q=ibus-sunpinyin我选的是第一个ibus-sunpinyin-2.0.1.tar.gz 。在安装之前应该先安装ibus。原创 2010-04-26 16:07:00 · 1926 阅读 · 0 评论 -
硬连接与软连接的区别
<!-- @page { margin: 2cm } TD P { margin-bottom: 0cm } P { margin-bottom: 0.21cm }--> 知道了硬盘的大体结构之后,再来谈谈怎么进行硬盘分区。进行硬盘分割的最小单位是磁柱,分割完之后自然就是格式化(format)。在Linux中进行格式化必须考虑转载 2010-04-07 14:37:00 · 1279 阅读 · 0 评论 -
Ubuntu 下挂载Windows分区
1. 手工挂载1)首先你得知道Linux下对硬盘分区的称呼。sudo fdisk -lDisk /dev/sda: 160.0 GB, 160041885696 bytes255 heads, 63 sectors/track, 19457 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDi原创 2010-04-03 11:33:00 · 14058 阅读 · 0 评论 -
update-alternatives学习笔记
Linux 发展到今天,可用的软件已经非常多了。这样自然会有一些软件的功能大致上相同。例如,同样是编辑器,就有 nvi、vim、emacs、nano,而且我说的这些还只是一部分。大多数情况下,这样的功能相似的软件都是同时安装在系统里的,可以用它们的名称来执行。例如,要执行 vim,只要在终端下输入 vim 并按回车就可以了。不过,有些情况下我们需要用一个相对固定的命令调用这些程序中的一个。例如,当转载 2010-04-01 14:38:00 · 27810 阅读 · 6 评论 -
ubuntu 9.10 下安装 jdk1.6u20
首先,从http://java.sun.com中下载jdk,我的版本是 jdk1.6.0_20,我下载的是.bin文件,我将下载的jdk-6u20-ea-bin-b01-linux-i586-10_mar_2010.bin文件置于/home/heyutao/tools然后,在shell中执行:代码:sudo chmod u+x/home/heyutao/tools/jdk-6u原创 2010-04-01 14:25:00 · 1900 阅读 · 0 评论 -
集群cpu使用率监控系统的简单实现(一)被监控端的实现
<br /> <br />被监控端上的cpu.sh脚本负责搜集本机cpu使用率,并向监控端recvInfo servlet发送http请求,提交数据。<br /> <br />内容:<br />#!/bin/sh<br />#死循环。注意while后的空格<br />while :<br />do<br />#间隔一秒<br />sleep 1<br />cpu=$(sar -u 1 1| awk 'NR==4 {print $8}')<br />#使用curl传送到指定的servlet<br />curl原创 2010-06-25 11:11:00 · 1967 阅读 · 0 评论 -
用脚本实时显示Linux网络流量
<br />http://linux.chinaitlab.com/SHELL/791329.html<br /> <br />在GUI下面,有一大把的工具可以显示网络流量,那么,命令行下面怎么办?<br /><br />显然办法是有的,比如,ifconfig,会有这样的输出:<br /> RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)<br /><br />过一会再看,数值有所变化,两者的差值就是过去一段时间的流量。转载 2010-06-25 11:27:00 · 1383 阅读 · 0 评论 -
Ext3和Ext4文件系统磁盘布局
<br /> <br />磁盘布局<br />为了更好的理解在线调整大小工作机制,我们首先需要理解 ext3 和 ext4 文件系统的磁盘布局,对于该功能的实现来说,这两个文件系统在磁盘上的结构是一致的,同时为了简化和突出重点,对于与在线调整大小功能不相关的内容我们将 不会介绍。<br />Ext3 文件系统将其所管理的磁盘或者分区(引导块除外)中的块划分到不同的块组中。每个块组大小相同,当然最后一个块组所管理的块可能会少一些,其大小在文件系 统创建时决定,主要取决于文件系统的块大小,对于大小为4k的文件系转载 2011-01-10 22:11:00 · 5335 阅读 · 0 评论