僵尸进程就是父进程fork之后并没有wait子进程。在子进程退出的时候,内核释放该进程所有的资源,比如文件描述符,内存,等等,但是依然为该进程保留一定的信息,只有该进程的父进程wait之后才会释放掉这些保留的信息。如果父进程没有wait,那么子进程就变成了僵尸进程。在高并发的服务器中,僵尸进程会有很大的危害。如果僵尸进程过多,那么就会有大量的进程号被僵尸进程占用,但是系统所能使用的进程是有限的。如果僵尸进程多到连新进程的进程号都没法提供,那么服务器就会一直处于拒绝状态了。
但是高并发服务器的父进程肯定会fork许多子进程,而且有可能父进程不需要知道任何子进程的结束信息,如果还wait每个子进程的话,肯定会造成资源的大量良妃。针对这种情况,有一个非常简单却非常有效的办法。当子进程exit()的时候,内核会向父进程发送一个SIGCHLD信号。将这个信号的处理方式设置为SIG_IGN,那么就可以让父进程忽略子进程发送的SIGCHLD信号了。
本文链接
相信熟悉Linux系统的友友们都知道Linux下的查找命令—find,其实Linux下还有其它一些查找命令,只是不那么经常被人们使用到罢了,下面就来介绍下包括find命令的Linux下的几个查找命令及其区别。
1. find
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。
find的使用格式如下:
$ find <指定目录> <指定条件> <指定动作>
- <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
- <指定条件>: 所要搜索的文件的特征。
- <指定动作>: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find的使用实例:
$ find . -name ‘my*’
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
$ find . -name ‘my*’ -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
$ find . -type f -mmin -10
搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
2. locate
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
locate命令的使用实例:
$ locate /etc/sh
搜索etc目录下所有以sh开头的文件。
$ locate ~/m
搜索用户主目录下,所有以m开头的文件。
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
3. whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
whereis命令的使用实例:
$ whereis grep
4. which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which命令的使用实例:
$ which grep
5. type
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
type命令的使用实例:
$ type cd
系统会提示,cd是shell的自带命令(build-in)。
$ type grep
系统会提示,grep是一个外部命令,并显示该命令的路径。
$ type -p grep
加上-p参数后,就相当于which命令。
本文链接
1.简介
2. Unix文档资料
3.模式、命令
3.1输入模式和命令模式
3.2.vi和ex命令
4.启动vi-vim
5.系统意外时数据的恢复
6.搜索模式
7.移动、跳转
7.1缓冲区移动
7.2光标移动
7.3行号跳转
7.4.跳转到前一位置
8.插入文本
9.写入与退出文件
9.1.写入文件
9.2退出文件、停止vi
10.修改替换文本
11.删除
12.撤销或重复改变
13.恢复删除
14.复制上一次删除
15.复制
15.1接出(复制单词、句子、段落)
15.2复制与移动行
vi术语
资料
在UNIX系统中,创建和修改配置文件、shell脚本、初始化文件、编写程序都离不开VI。
学习vi,学会使用联机手册或帮助命令是非常重要的。Unix有两个最重要的文档资料系统:Unix手册和Info(GNU项目的官方文档资料系统)。
常用命令:
对于较长的说明页,可使用分页程序分页显示。常用的分页程序有:less、more、pg。例如:man cp | less
查找说明书页的其它方法(基于web):
- “man vi ”
- “man pages” vi
2.另外一种基于web的说明书页的方法是xman,xman是一个基于GUI的程序,它充当说明书页浏览器。在命令行启动xman:xman&。
命令模式#(command mode):所键入的键都被解释成命令。
输入模式(input mode):键入的任何内容都直接插入到编辑缓冲区中。
当离开输入模式时,使用Esc键切换到命令模式。
vi和ex是同一个程序的两种不同的表现形式。也就是说可以同时使用vi和ex命令。
vi:
①大多数vi命令都是单字母或双字母的表现形式。
②vi键入时命令不回显。
ex:
①ex命令比vi命令长。
②所有的ex命令都以一个:(冒号)开头。键入:后,vi就将光标移动到命令行上(屏幕最底部)。
③ex命令的每个字符都将回显。
④ex命令结束,必须按下<Return>键盘。
语法:vi 【-rR】 【file……】
常用命令:
在编辑文件的过程中,如果遭遇系统意外,vi通常可以将数据恢复出来。
命令:vi -r file(-r 即recover,恢复)
如:vi -r test.txt
向前搜索:/
向后搜索:?
常用命令:
操作键
说明
^F
向下移动一屏^B
向上移动一屏n^F