标签为 "Linux" 的存档

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…

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

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

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

Read more…

Linux/Unix下 查看/监测网卡流量的命令

Linux/Unix下 查看/监测网卡流量的命令:

第一种:

$ watch more /proc/net/dev
Linux 查看网卡流量

Linux 查看网卡流量

Read more…

Linux – cp: omitting directory 复制文件失败

Linux – cp: omitting directory 复制文件失败:
注意,如果执行时出现”cp: omitting directory”的提示信息,但使用mv则可以成功剪切粘贴,是由于该目录下含有子目录,这个时候需要使用 cp -r 参数来递归拷贝这些及其子文件夹下的文件。
Read more…

查看Linux上运行的服务

若一台机器运行有很多不需要的服务,那么被攻击者入侵的可能性就会大大加大,因此作为管理员就应该经常查看系统运行有哪些服务。

1. 首先查看系统运行的进程

若需要查看系统当前运行的所有进程,就需要用如下命令:

# ps auxw

其中参数a表示显示系统中所有用户的的进程;u表示输出进程用户所属信息; x表示也

显示没有控制台的进程;若显示行太长而被截断则可以使用f参数;

Read more…

Linux Jobs等前后台运行命令详解,停止后台程序

Linux Jobs等前后台运行命令详解,停止后台程序:
Shell支持作用控制,有以下命令:
1. command& 让进程在后台运行 / nohup command &
2. jobs 查看后台运行的进程
3. fg %n 让后台运行的进程n到前台来,再Ctrl+c即可终止该程序.
4. bg %n 让进程n到后台去;
PS:”n”为jobs -l查看到的进程编号.
Read more…

Linux中如何让进程(或正在运行的程序)到后台运行?

在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:

$ ./test.sh &
[1] 17208

$ jobs -l
[1]+ 17208 Running                 ./test.sh &

对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:

$ ./test.sh
[1]+  Stopped                 ./test.sh

$ bg %1
[1]+ ./test.sh &

$ jobs -l
[1]+ 22794 Running                 ./test.sh &

Read more…