分类 "Linux/Unix" 的存档.

Ubuntu php apache mysql 环境配置 apt-get

安装 Apache2:

sudo apt-get install apache2

安装PHP模块:

sudo apt-get install php5

编辑测试页:
sudo vim/var/www/index.php

如果提示还没有安装vim,可以用以下bash安装

sudo apt-get install vim

Read more…

我写的第一个shell脚本

#!/bin/bash
fdate=20111001
while [ $fdate != "20111021" ]
do
        #echo $fdate;
        perl -e "print $fdate;"#使用perl脚本处理文件
        fdate=$(($fdate+1));
done

这是我第一次写shell脚本,虽然很简单哈,,不过确实是我为了工作需求而写出来的一个脚本,可以顺序执行20条perl命令,去处理20天的数据,每天的数据处理都得可能要花上一个小时,所以如果人为的去一条一条处理的话,太浪费时间了,写个perl、php或者Python脚本倒是也很简单,不过最近正好在看bash的书,正好当作实践一下了。
Read more…

VIM速查卡

  • Green = Essential 入门级
  • Yellow = Basic 基本
  • Orange / Blue = Advanced 高级
  • Red = Expert 专家级
vim速查卡(点击查看大图)

vim速查卡(点击查看大图)

你还可以下载PDF版的和Excel版的,如果你是色盲的话,还有蓝色版PDF的。

Read more…

Vim的分屏功能

Vim的分屏功能

Vim的分屏功能

Read more…

linux中select()函数分析,同样适用于Python/Perl中的socket多线程select

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高)方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下!

Select的函数格式(我所说的是Unix系统下的伯克利socket编程,和windows下的有区别,一会儿说明):

int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);

先说明两个结构体:

第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄,这可以是我们所说的普通意义的文件,当然Unix下任何设备、管道、FIFO等都是文件形式,全部包括在内,所以毫无疑问一个socket就是一个文件,socket句柄就是一个文件描述符。fd_set集合可以通过一些宏由人为来操作,比如清空集合FD_ZERO(fd_set *),将一个给定的文件描述符加入集合之中FD_SET(int ,fd_set *),将一个给定的文件描述符从集合中删除FD_CLR(int ,fd_set*),检查集合中指定的文件描述符是否可以读写FD_ISSET(int ,fd_set* )。一会儿举例说明。

第二,struct timeval是一个大家常用的结构,用来代表时间值,有两个成员,一个是秒数,另一个是毫秒数。
Read more…

如何在Python中使用 Linux epoll 翻译自《How To Use Linux epoll with Python》

原文地址: http://scotdoyle.com/python-epoll-howto.html

文章里面的代码可以 点击这里下载.

介绍

从2.6版本开始, python 提供了使用linux epoll 的功能. 这篇文章通过3个例子来大致介绍如何使用它. 欢迎提问和反馈.

阻塞式socket通讯

第一个例子是一个简单的python3.0版本的服务器代码, 监听8080端口的http请求, 打印结果到命令行, 回应http response给客户端.

  • 行 9: 建立服务器的socket
  • 行 10: 允许11行的bind()操作, 即使其他程序也在监听同样的端口. 不然的话, 这个程序只能在其他程序停止使用这个端口之后的1到2分钟后才能执行.
  • 行 11: 绑定socket到这台机器上所有IPv4地址上的8080端口.
  • 行 12: 告诉服务器开始响应从客户端过来的连接请求.
  • 行 14: 程序会一直停在这里, 直到建立了一个连接. 这个时候, 服务器socket会建立一个新的socket, 用来和客户端通讯. 这个新的socket是accept()的返回值, address对象标示了客户端的IP地址和端口.
  • 行 15-17: 接收数据, 直到一个完整的http请求被接收完毕. 这是一个简单的http服务器实现.
  • 行 18: 为了方便验证, 打印客户端过来的请求到命令行.
  • 行 19: 发送回应.
  • 行 20-22: 关闭连接, 以及服务器的监听socket.

Read more…

grep匹配TAB的四种写法

1、grep -P ‘t’

2、grep [[:space:]] // 所有空白字符

3、直接grep tab字符 // 命令行下用”ESC TAB”输入

4、grep $’t’

Read more…

rsync 排除指定目录或文件进行同步

很常见的情况:我想同步/myweb下的 一些php文件 ,  但是不想复制/myweb/log/里边的一些日志文件,因为这些文件太大了,备份也是没有意义的。 现在如果想避开某个路径  直接添加—exclude 即可 比如—exclude “./log” –exclude ‘./log/file’

Note: the directory path is relative to the folder you are backing up.

rsync备份时排除指定目录或文件

要排除指定目录,可以在客户端命令行中使用–exclude-from命令

Read more…

Linux rsync用法 目录同步功能的实现

实现目标:
A 服务器上 /opt/web 目录,与B服务器上 /opt/web目录实现同步。即:B主动与A进行同步。
OS: Redhat AS4
A Server  192.168.1.2 /opt/web
B Server  192.168.1.3 /opt/web
一. A Server config
1.rsync 系统自带, 需要使用 –deamon 方式进行启动,服务端口是 TCP 873
2. vi /etc/xinetd.d/rsync  修改 disable =yes 为 disable =no ,修改后的文件如下
# default: off
# description: The rsync server is a good addition to an ftp server, as it
#       allows crc checksumming etc.
service rsync
{
disable = no
socket_type     = stream
wait            = no
user            = root
server          = /usr/bin/rsync
server_args     = –daemon
log_on_failure  += USERID
}

Linux核心开发团队网站遭黑客入侵埋木马

据国外媒体报道,Linux核心开发团队本在官方网站公布一则消息,表示该团队在8/28发现黑客入侵,该名黑客取得网站最高权限root,并埋入一个木马。

Linux核心开发团队怀疑黑客窃取认证进入系统,再使用rootkit工具取得root权限,但截至目前为止还不清楚其手法。黑客入侵后修改SSH连线后的相关设定,并埋入一个木马程序到系统开机启动程序中。

Read more…