2009年3月27日星期五

grep使用15招






grep使用15招

原文链接Get a Grip on the Grep! - 15 Practical Grep Command Examples
 


首先创建我们练习grep命令时需要用到的demo文件demo_file。


$ cat demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

1.从单个文件中搜索指定的字串

grep的基础用法是如下例的从指定的文件中搜索特定的字串。


语法:
grep "literal_string" filename

 


$ grep "this" demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

2. 在多个文件中检索指定的字串


语法:
grep "string" FILE_PATTERN

 
先拷贝demo_file为demo_file1。grep的结果在符合条件的行前将包括文件名。当文件名包含元字符时,linux shell会将匹配的所有文件作为输入到grep中去。



$ cp demo_file demo_file1

$ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.

3. 用 grep -i 进行大小写无关的搜索


语法:
grep -i "string" FILE

 
也是一个基本用法,对搜索的字串忽略大小写,因此下例中匹配“the”, “THE” and “The”。



$ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

4. 使用用正则表达式


语法:
grep "REGEX" filename

 
如果你能有效地利用正则表达式,这是个很有用的特点。在下面的例子中,搜索全部以“lines”开始以“empty”结束的字串,如搜索“lines[之间任意字]empty” ,并且忽略大小写。



$ grep -i "lines.*empty" demo_file
Two lines above this line is empty.


正则表达式遵循的几个重复的操作


  • ? 最多匹配一次
  • * 匹配零次或者任意多次
  • + 匹配一次以上
  • {n} 匹配n次
  • {n,} 最少匹配n次
  • {,m} 最多匹配m次
  • {n,m} 匹配n到m次

5. 用grep -w搜索整个词,而不是词中的部分字串


使用-w选项搜索一个单词,并且避免搜索到词中的部分字串。

 

下例搜索"is"。如果不加-w选项,将显示“is”, “his”, “this” 等所有包含“is”的行。


$ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.

 

下例使用了-w选项,请注意结果中不包含
“This Line Has All Its First Character Of The Word With Upper Case”, 虽然 “This”中包含“is”。


$ grep -iw "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

6. 使用grep -A, -B and -C显示之前、之后、前后的几行


当使用grep搜索大文件时,显示匹配行附近的多行数据是一个很有用的功能。


 

创建如下文件


$ cat demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

* e - go to the end of the current word.
* E - go to the end of the current WORD.
* b - go to the previous (before) word.
* B - go to the previous (before) WORD.
* w - go to the next word.
* W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.1 显示匹配行之后的N行


-A


语法:
grep -A "string" FILENAME

 

下例显示匹配行和之后的3行数据


$ grep -A 3 -i "example" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.2显示匹配行之前的N行


-B


语法:
grep -B "string" FILENAME

 

下例显示匹配行和之前的2行数据


$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

6.3显示匹配行前后的N行


-C 显示之前的n行,之后的n行数据.


$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

7.通过GREP_OPTIONS高亮显示搜索的字串


如果你希望搜索的字串高亮显示在结果中,可以试用以下的办法。
 

通过修改GREP_OPTIONS对搜索字串高亮显示。



$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

8. 用grep -r递归搜索全部的文件


如果想查找当前目前以及其子目录的全部文件时,可以使用 -r 选项。如下例


$ grep -r "ramesh" *

9. 使用grep -v进行不匹配



可以使用-v选项显示不匹配搜索字串的行。下例显示demo_text文件中不包含“go”的行


$ grep -v "go" demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

10. 显示不匹配全部模式的行


语法:
grep -v -e "pattern" -e "pattern"

 

创建如下例子文件


$ cat test-file.txt
a
b
c
d

$ grep -v -e "a" -e "b" -e "c" test-file.txt
d

11.用grep -c 统计匹配的行数



语法:
grep -c "pattern" filename

 


$ grep -c "go" demo_text
6

 

统计不匹配的行数


$ grep -v -c this demo_file
4

12. 用grep -l 只显示文件名



$ grep -l this demo_*
demo_file
demo_file1

13. 只显示匹配的字串


缺省显示匹配字串的所在行,可以使用-o选项只显示匹配的字串。这项功能当使用正则表达式时比较有用处。

 

$ grep -o "is.*line" demo_file
is line is the 1st lower case line
is line
is is the last line

14. 显示匹配的位置



语法:
grep -o -b "pattern" file

 


$ cat temp-file.txt
12345
12345

$ grep -o -b "3" temp-file.txt
0:3
6:3

 
注意: 以上输出显示的不是行内的位置,而是整个文件中的字节byte位置


15. 用 grep -n 在输出时显示行号


行号从1开始


$ grep -n "go" demo_text
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.
 

2009年3月25日星期三

有风险,会被雷






有风险,会被雷

某日,闲逛到一网页,发现一下载,点之,弹出“有风险,未安装迅雷”,当下被雷得外焦里嫩,以图为证。
看来迅雷开始学习N年前的“您的计算机可能被病毒入侵,请安装XXX”的恐吓手法,莫非是同一个人的杰作?
多少年了一点怎么进步都没有?


2009年3月23日星期一

ubuntu8.10下的java开发环境安装与配置






ubuntu8.10下的java开发环境安装与配置

1:jdk1.5的安装


到sun的网站上下载jdk-1_5_0_17-linux-i586.bin

$chmod u+x jdk-1_5_0_17-linux-i586.bin
$./jdk-1_5_0_17-linux-i586.bin
$sudo vi /etc/environment
--红色为新添加部分--------------
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/jdk1.5.0_17/bin:.:"
LANGUAGE="zh_CN:zh:en_US:en"
LANG="zh_CN.UTF-8"
JAVA_HOME="/usr/local/jdk1.5.0_17"
CLASSPATH="/usr/local/jdk1.5.0_17:."


$source /etc/environment
或者重新启动之后,查看java版本
$java -version
java version "1.5.0_17"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_17-b04)
Java HotSpot(TM) Client VM (build 1.5.0_17-b04, mixed mode, sharing)

jdk安装完成!!

2:tomcat5.5的安装

http://tomcat.apache.org/download-55.cgi
下载tomcat 5.5 tar.gz包

$ tar zxvf apache-tomcat-5.5.27.tar.gz
tar: 它似乎不像是一个 tar 归档文件
tar: 跳转到下一个头
tar: 由于前面延迟的错误而退出


改为其他方式
$gzip -d apache-tomcat-5.5.27.tar.gz
$tar xvf apache-tomcat-5.5.27.tar
$sudo mv apache-tomcat-5.5.27/ /usr/local/
进入tomcat/bin
$./startup.sh 启动tomcat
访问http://127.0.0.1:8080/

tomcat安装成功!!

3:eclipse3.4.1的安装

下载eclipse3.4.1

$tar zxvf eclipse-jee-ganymede-SR1-linux-gtk.tar.gz
$mv eclipse eclipse3.4.1
$sudo eclipse3.4.1/ /usr/local/

在桌面创建快捷方式

eclipse安装成功!

2009年3月20日星期五

监控统计网站服务器流量的小脚本
















监控统计网站服务器流量的小脚本

最近需要了解一下服务器的流量,看来还是通过apache的日志来操作最为方便和直接,于是有了下面的东东。

1:首先配置apache的日志支持输出io,假设我们把IO的数值放到第一第二列

httpd.conf
    ……
    <IfModule>
      LogFormat "%I %O %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" " combinedio
    </IfModule>
    CustomLog logs/access_log combinedio
    ……

2:编写统计流量的脚本
~ # cat io_log.sh
export LANG=C
DATE_YEAR=`date +%b\\\/%Y`
DATEYEAR=`date +%Y%b`
errDATEmon=`date +%b`
errDATEyear=`date +%Y\\\]`
DAY=`date +%d\/%b\/%Y`
echo -n $DAY, >> /jack/stat//io.csv
#将第一第二列的数据输出到tmp文件
cat /usr/local/apache2/logs/access_log |grep $DAY | awk '{print $1 ","$2}' > /tmp/tmp_io.txt
#用python计算总流量
python ioLog.py >>  /jack/stat//io.csv


~ # cat ioLog.py
if __name__ == '__main__':
    f=open('/tmp/tmp_io.txt')

    inBytes = 0
    outBytes = 0
    for line in f.readlines():
        inB = line[0:line.index(',')]
        outB = line[line.index(',') +1:]

        inBytes += int(inB)
        outBytes += int(outB)

    print '%s,%s,MB' % (inBytes/1024/1024, outBytes/1024/1024)

3:将脚本每天晚上执行,以得到每天的流量
~ # crontab -l
……
58 23 * * * /bin/sh /root/io_log.sh
……

PS:这些东西在awstats里全部都有,只不过如果没有使用的话,这也算是一个山寨统计办法 :-)

2009年3月19日星期四

php学习笔记(2)











php学习笔记(2)


函数
function foo($arg_1$arg_2, ..., $arg_n) {
    ……
}

缺省情况下,函数参数通过值传递。如果想要通过引用传递,可以在函数定义中该参数的前面先加符号 &

默认参数,默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等表达式。任何默认参数必须放在任何非默认参数的右侧。
function makecoffee($type "cappuccino") {
    ……
}

支持可变数量的参数列表

从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & :
<?php
function &returns_reference()
{
    return 
$someref;
}

$newref =& returns_reference();
?>

可变函数,如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
$func 'foo';
$func();        // This calls foo()


类(PHP4)
类是变量与作用于这些变量的函数的集合。变量通过var来定义,函数通过 function 来定义
定义类
class Cart {
    var 
$items;  // 购物车中的物品
    
function add_item($artnr$num) {
        
$this->items[$artnr] += $num;
    }
}
定义对象 new
$cart = new Cart;
$cart->add_item("10"1);

伪变量$this 可以理解为“我自己的”或者“当前对象”。

继承,基类使用parent
class Named_Cart extends Cart {
……
}
构造函数,与类同名,当使用 new 操作符创建一个类的实例时,构造函数将会自动调用。
class Auto_Cart extends Cart {
    function 
Auto_Cart() {
        
$this->add_item ("10"1);
    }
}

析构函数,PHP 中没有析构函数。可以用 register_shutdown_function()
来替代模拟大多数析构函数的效果。


范围解析操作符(::
class {
    function 
example() {
        echo 
"I am the original function A::example().<br />\n";
    }
}
// A 类没有对象,这将输出
//   I am the original function A::example().<br />
A::example();

类(PHP5)
自动加载对象,通过定义一个 __autoload 函数,它会在试图使用尚未被定义的类时自动调用。
<?php
function __autoload($class_name) {
    require_once 
$class_name '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>
 

构造函数,为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。
析构函数,会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
父类的构造函数、析构函数不会被引擎暗中调用。要执行父类的构造、析构函数,必须在子类的构造、析构函数体中显式调用parent::__construct()、 parent::__destruct()

访问控制,是通过在前面添加关键字 public、protected 或 private 。类成员都必须使用关键字public、protected 或 private 进行定义

范围解析操作符(::),可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。


static 不实例化类而直接访问。
类常量,值将始终保持不变。
抽象类和抽象方法
abstract class AbstractClass{……}
class ConcreteClass1 extends AbstractClass{……}

接口(interface),指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
interface iTemplate {……}
class Template implements iTemplate {……}

重载(overloading)是指动态地"创建"类属性和方法。是通过 魔术方法(magic methods)来实现的。
注意:与其它绝大多数面向对象语言不同

对象迭代 通过foreach
来遍历对象中的属性。默认情况下,在外部迭代只能得到外部可见的属性的值。
使用Iterator接口可以让对象自行决定如何迭代自已。
class MyIterator implements Iterator{...}
让类实现IteratorAggregate接口,这样你的类就不用强制性地实现 Iterator接口中的所有方法。
class MyCollection implements IteratorAggregate{...}

final 关键字。如果父类中的方法被声明为final,则子类无法覆盖该方法; 如果一个类被声明为final,则不能被继承。

php学习笔记(1)
















php学习笔记(1)

1:安装
http://www.php.net/downloads.php下载到php,到http://www.apache.org/ 下载到apache,我下载的都是安装包,先装apache,再装php。如果你不熟悉apache的配置,又急于上手,直接将你的php文件加入到默认的【apache安装】/htdocs安装目录下,就可以写你的hello world程序了。:)

2:IDE
有很多的IDE,我用的是zend studio 5.5。因为这个比较小下载起来比较快 :-)。

3:
PHP 开始和结束标记


1.  <?php echo 'if you want to serve XHTML or XML documents, do like this'?>
【推荐使用】

2.  <script language="php">
        
echo 'some editors (like FrontPage) don\'t
              like processing instructions'
;
    
</script>

3.  <? echo 'this is the simplest, an SGML processing instruction'; ?>
    <?= expression ?> This is a shortcut for "<? echo expression ?>"

4.  <% echo 'You may optionally use ASP-style tags'; %>
    <%= $variable; # This is a shortcut for "<% echo . . ." %>



上例中的 1 和 2 总是可用的,其中 1 是最常用,并建议使用的。


短标记(上例 3)仅在通过 php.ini 配置文件中的指令 short_open_tag 打开后才可用,或者在
PHP 编译时加入了 --enable-short-tags 选项。


ASP 风格标记(上例 4)仅在通过 php.ini 配置文件中的指令 asp_tags 打开后才可用


4:注释
单行注释    // , #(这个和python是一样滴)
多行注释    /* ...*/


5:数据类型
四种标量类型:
boolean (布尔型)
integer (整型)
float (符点型, 也称作 double)
string (字符串)
两种复合类型:
array (数组)
object (对象)
最后是两种特殊类型:
resource (资源)
NULL (NULL)

6:变量名
由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线,引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)。
global 申明了全局变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失
static $a 0;

可变变量    $$a 'world';

2009年3月18日星期三

vim中修改编码(乱码的解决办法)











vim中修改编码(乱码的解决办法)

用vim打开wordpress的配置文件wp-config-sample.php时发现出现乱码,如下图:根据多年的经验知道这一般就是编码的问题。
试一下:set encoding=utf-8 于是成功。

2009年3月16日星期一

vim中的有关全文复制,全文删除






vim中的全文复制,全文删除

全文复制     
:1,$y

全文复制到剪贴板(用于与其他windows程序交互)
ggVG"*y
全文删除
:1,$d



2009年3月13日星期五

vim如何与剪贴板交互(将vim的内容复制出来)

vim如何与剪贴板交互(将vim的内容复制出来)

习惯了在windows环境各个应用程序之间如UltraEdit,记事本,eclipse之间ctrl+c,ctrl+v进行复制粘贴的你,如何在vim与别的windows应用程序之间拷贝粘贴呢?
当然你可以在vim里选择用鼠标,选中一块文字然后右键复制,再到应用程序里ctrl+v粘贴,只不过这样效率就差多了。
更好的做法是,在vim中使用"*y使用进行复制,然后在应用程序中用ctrl+v粘贴。
从应用程序到vim则在应用程序中使用ctrl+c复制,在vim中使用shift+insert粘贴。

如:
"*yy复制一行
"*y2w复制二个词
……

实现的原理是:
"    表示使用寄存器
"*  表示使用当前选择区


我个人推荐使用ctrl+insert复制,shift+insert粘贴。






2009年3月12日星期四

放弃UltraEdit,全面使用vim











放弃UltraEdit,全面使用vim

我电脑上的Windows XP下的vim装好也有很长时间了,也就是刚安装好的时候狠劲地用过一段时间,后来还是因为习惯了UltraEdit的操作,慢慢又不怎么用了。

今天开始学习php,相关的配置文件用vim配了配感觉也很好,既然如此,又何必再用UltraEdit,还是全面滴vim。

我骄~嗷~~ :P

vim中的以前几个不大常用的命令备忘

vim中的以前几个不大常用的命令备忘


下图是关于vi的三种模式的说明

移动命令
(     到句首
)     到句尾
{     到段落头
}     到段落尾
G     到文件尾
%    到括弧的匹配处

进入插入模式
I      在行首插入
A     在行尾插入


ref:http://tuxradar.com/content/vim-master-basics

2009年3月10日星期二

linux下ps命令小技巧






linux下ps命令小技巧

ps【process status】显示进程的快照

显示系统运行的全部进程
ps aux

显示进程树,各进程的依赖关系
ps axuf
ps –ejH

例:
jboss    15022  0.0  0.0  4428 1040 ?        S    12:10   0:00 /bin/sh /usr/local/jboss/bin/run.sh
jboss    15046  1.1 10.2 1409376 420432 ?    Sl   12:10   3:37  \_ /usr/jdk1.5.0_09/bin/java -Dprogram.name=run.sh -server -Xms256m -Xmx512m -XX:PermSize=256m
root      1067  0.0  0.0  7436 3508 ?        Ss   Mar05   0:00 /usr/local/apache2/bin/httpd -k start
nobody   14854  0.0  0.0  7848 3596 ?        S    11:54   0:00  \_ /usr/local/apache2/bin/httpd -k start
nobody   14855  0.0  0.0  7724 3584 ?        S    11:54   0:00  \_ /usr/local/apache2/bin/httpd -k start
nobody   14856  0.0  0.0  7688 3452 ?        S    11:54   0:00  \_ /usr/local/apache2/bin/httpd -k start
nobody   14857  0.0  0.0  7688 3556 ?        S    11:54   0:00  \_ /usr/local/apache2/bin/httpd -k start

显示特定用户的进程
ps U user
例:
~ #  ps U oracle
  PID TTY      STAT   TIME COMMAND
 3322 ?        Ssl    0:31 /home/oracle/product/10.1.0/db_1/bin/tnslsnr LISTENER -inherit
 3328 ?        Ss     0:00 ora_pmon_oinstall
 3330 ?        Ss     0:00 ora_psp0_oinstall
 3332 ?        Ss     0:00 ora_mman_oinstall
 3334 ?        Ss     0:34 ora_dbw0_oinstall
 3336 ?        Ss     1:26 ora_lgwr_oinstall
 3338 ?        Ss     6:41 ora_ckpt_oinstall
 3340 ?        Ss     0:39 ora_smon_oinstall
 3342 ?        Ss     0:00 ora_reco_oinstall
 3344 ?        Ss     0:18 ora_cjq0_oinstall

显示当前用户的进程
ps U $USER

其实一切都在ps --help里
~ # ps --help
********* simple selection *********  ********* selection by list *********
-A all processes                      -C by command name
-N negate selection                   -G by real group ID (supports names)
-a all w/ tty except session leaders  -U by real user ID (supports names)
-d all except session leaders         -g by session OR by effective group name
-e all processes                      -p by process ID
T  all processes on this terminal     -s processes in the sessions given
a  all w/ tty, including other users  -t by tty
g  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)
r  only running processes             U  processes for specified users
x  processes w/o controlling ttys     t  by tty
*********** output format **********  *********** long options ***********
-o,o user-defined  -f full            --Group --User --pid --cols --ppid
-j,j job control   s  signal          --group --user --sid --rows --info
-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect
-l,l long          u  user-oriented   --sort --tty --forest --version
-F   extra full    X  registers       --heading --no-heading --context
                    ********* misc options *********
-V,V  show version      L  list format codes  f  ASCII art forest
-m,m,-L,-T,H  threads   S  children in sum    -y change -l format
-M,Z  security data     c  true command name  -c scheduling class
-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy


ref:
http://www.thegeekstuff.com/linux-101-hacks-free-ebook/

2009年3月9日星期一

NFS(网络文件系统)






NFS(网络文件系统)

服务器
当服务器让某个目录能为其他计算机所使用时,导出(export)了某个目录。在NFS服务器上,mountd,nfsd都应该在系统启动时启动。
/etc/exports是导出目录的说明清单,
格式:目录 客户机(选项) 客户机(选项) ……
默认的选项是sync,ro,root_squash,no_delay
常用的参数
            ro                      只读访问
            rw                      读写访问
            sync                    所有数据在请求时写入共享
            async                   NFS在写入数据前可以相应请求
            secure                  NFS通过1024以下的安全TCP/IP端口发送
            insecure                NFS通过1024以上的端口发送
            wdelay                  如果多个用户要写入NFS目录,则归组写入(默认)
            no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
            hide                    在NFS共享目录中不共享其子目录
            no_hide                 共享NFS目录的子目录
            subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
            no_subtree_check        和上面相对,不检查父目录权限
            all_squash              共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
            no_all_squash           保留共享文件的UID和GID(默认)
            root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)
            no_root_squas           root用户具有根目录的完全管理访问权限
            anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID
            anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID


修改完exports文件之后,必须用exportfs -a让改动起作用

通过由exportfs命令根据/etc/exports 生成的/var/lib/nfs/etab文件,查看资源共享情况。
# cat /var/lib/nfs/etab
/data/upload/apacheroot/wt   .168.3.205(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
/data/upload     192.168.3.201(ro,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
/data/upload     *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)
/data   *(rw,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,mapping=identity,anonuid=-2,anongid=-2)

用nfsstat查看状态
例:
[root@nfsserver ~]# cat /etc/exports
/data/upload     192.168.3.201(ro,sync,root_squash)
/data/upload     *(rw,sync,root_squash)
/data/upload/apacheroot/wt 192.168.3.205(rw,sync,root_squash)
/data   *(rw,sync,root_squash)

客户机
在安装NFS之前,用showmount核实服务器已经正确导出了文件系统
# showmount -e 192.168.3.99
Export list for 192.168.3.99:
/data                                 *
/data/upload                   (everyone)
/data/upload/apacheroot/wt 192.168.3.205

使用mount安装文件系统
mount 192.168.3.99:/data/upload /upload

如果要在系统启动时安装NFS,则编辑/etc/fstab即可
#cat /etc/fstab
192.168.3.99:/data/upload /usr/local/vnvlog_upload nfs defaults 1 2


2009年3月4日星期三

【转】政协委员建议月薪三千吸引大学生到农村任教











【转】政协委员建议月薪三千吸引大学生到农村任教

http://news.163.com/09/0305/05/53KC4H9H000136K8.html
2009-03-05 05:55:39 来源: 中国青年报(北京) 跟帖 326 条

核心提示:全国政协委员、贵州财经学院副院长毛有碧4日建议,国家应考虑以平均月收入为3000元人民币的待遇吸引大学生到农村地区当老师。毛有碧认为,该计划既可以缓解大学生就业的压力,也有助于提高农村地区的教育水平。





中国青年报3月5日报道
全国政协委员、贵州财经学院副院长毛有碧今天建议,国家应考虑以比较优厚的待遇吸引大学毕业生,到师资极其匮乏的农村地区当老师。如果按2至3年合同期,
平均月收入为3000元人民币计算,那么雇用100万大学毕业生参与该计划的花费在700亿至1100亿元人民币。该计划既可以缓解大学生就业的压力,也
有助于提高农村地区的教育水平。


毛有碧发言指出,尽管中央政府推出4万亿元人民币的投资方案刺激经济,但是这一方案过度关注对基础设施的投入,其中约3/4的资金被用于修建铁路、公路及其他高耗金项目。虽然加大基础设施建设可以帮助吸收重工业的过剩生产能力,但对就业的帮助是比较有限的。


毛有碧还建议,对失业的农民工,政府可考虑设立免费、分期的再教育计划。参加再教育计划的农
民工每月都可以享受一定数额的津贴作为鼓励。如果平均每人每月的津贴为600元人民币,招收500万农民工接受再教育每年的津贴花费为300亿至400亿
元人民币。其中教师和各种设施所需的费用可以由地方政府承担。


据介绍,2009年我国包括高校毕业生在内的城镇新增就业人数超过1300万人,2009年城镇需要就业的总人数达2400万人,供求矛盾比较突出,就业形势较为严峻。


毛有碧认为,进行人力资本投资,不仅可以提高人口素质、增加人力资本,而且还能在困难时期缓解就业压力,保持社会稳定。
(本文来源:中国青年报 作者:记者 刘声)
ybian


【转】政协委员指看病难看病贵不准确 称不难也不贵

【转】政协委员指看病难看病贵不准确 称不难也不贵


http://news.163.com/09/0302/23/53EH2MLM000136K8.html
2009-03-02 23:26:34 来源: 中国新闻网(北京) 跟帖 17 条


中新社北京三月二日电  对于“看病难看病贵”这个备受中国百姓关注的问题,数位赴京参加全国政协十一届二次会议的医药卫生界委员二日却发出了不同的声音:中国看病不算难,也不算贵,而是患者求医标准过高,导致医疗资源“拥挤”。他们认为,应该对“看病难看病贵”给出定义,确立标准。


备受关注的医疗体制改革问题已在委员驻地“预热”,数位医药卫生界的委员在餐桌上就“看病难看病贵”的话题开始了小范围讨论。


徐勇委员表示:“看病难的定义是什么?这个概念标准如何把握?如果不讲地区、条件,笼统地讲看病难,容易造成误解与混乱。”


这位天津医科大学第二医院的副院长介绍说,即便是在发达国家,长时间等待看病也是现实问题,非急症病人几个月看不上病的情况也大量存在。与国外相比,中国患者如果在当地就医并不算难。


徐勇委员准备了一个“明确看病难的定义与标准”的提案。他解释说,“各省市根据自身条件制定
‘看病难’的标准,根据病情需要,在不同层级的医院看病,医院要多长时间治疗、治疗到什么程度,都有相应规定。如果超过这个规定,视为‘看病难’。如果病
人从新疆跑到北京看病,那就是难。但这种难,超出了基本医疗的范畴,不能在抱怨的范围内。”


淮安市第一人民医院副院长李玉峰委员也认为,“看病难看病贵”有多方面原因,高标准的需求是
其因素之一。他说,医疗与其它商业服务不一样,买电器可以量入为出,但最穷困的病人也希望寻求最好医生的最佳治疗效果。这种心理预期的结果就是倾其所有看
病,这对多数人来说,导致的就是费用难以承担。


李玉峰委员指出:“什么叫基本医疗?什么是大病什么是小病,概念都要分清楚。现在概念模糊,不分条件地提‘看病难看病贵’是一种误导。”


天津金耀生物科技有限公司总经理刘登岗委员认为,“看病难”事实上是“看名院名医难”。中国有很多中小医院看病并不难,甚至医生在等待病人上门。



(本文来源:中国新闻网 作者:甄雪原)
文武贝贝







【转】浙江省委书记:杨湘洪执意不归必有重大问题

浙江省委书记:杨湘洪执意不归必有重大问题

网易网友的评论就是没有评论,见http://comment.news.163.com/news_buwei_bbs/53KJL9F8000136K8.html。也是,“重大问题”这不是秃子头上的虱子--明摆的吗,我也无语鸟。


浙江省委书记:杨湘洪执意不归必有重大问题

http://news.163.com/09/0305/08/53KJL9F8000136K8.html



2009-03-05 08:07:07 来源: 中新网(北京) 跟帖 82 条

核心提示:全国人大浙江代表团团长、浙江省委书记赵洪祝日前接受媒体采访时表示,杨湘洪执意不归,从常理分析他应该是有错误的,如果是没有一些重大问题,他不至于这么下决心的不归,背叛了祖国背叛了国家。








全国人大浙江代表团团长、浙江省委书记赵洪祝





原温州市鹿城区委书记杨湘洪 资料图


中新网3月5日电 全国人大浙江代表团团长、浙江省委书记、浙江省人大常委会主任赵洪祝日前就干部管理、舆论监督、杨湘洪不归事件、杭州地铁事故等问题接受了凤凰卫视采访。


谈及原温州市鹿城区委书记杨湘洪出国考察不归的问题,赵洪祝表示,根据杨湘洪能够这样执意不归,从我们一般的常理上来分析判断他应该是有错误的,如果是没有一些重大的问题,他不至于这么下决心的不归,背叛了祖国背叛了国家。


以下为相应节目内容:


解说:2008年10月,一起发生在浙江温州的官员出国考察未归事件在社会各界引起了强烈关
注。去年九月底,温州市市委常委鹿城区委书记杨湘洪曾在赴法国考察时,以探望在法国居住的女儿为由,独自离队。然而,等考察团准备回国时,杨湘洪又推说自
己腰椎盘突出复发,已经在法国住院治疗,拒绝回国,并托人带来了医疗诊断证明与辞职信。随后,有关他涉嫌违纪的各种传言也逐渐在互联网上流传开来。


吴小莉:我们大家在外面有很多很多的传说,也有一些传说是他在被省纪委问话了三天之后就刚好出国了,出国以后就滞留在外国不归,我们也很想知道确实是不是有这样的一个情况,他这个不归之后我们又采取了哪些措施?


赵洪祝:杨湘洪这个人呢,在他成长的过程中为党为国家这个事业还是做了很多事情的,正因为这
样,他才比较早的走上了领导岗位,并且进入到了咱们温州市的市委的领导班子这个层面了,但是一个干部他是不断变化着的,另外一个干部,存在着什么样的问
题,有时候他的隐蔽性都是很强的了,那么对于杨湘洪这个人,只有他出了国以后滞留不归才发现他存在着的一些问题,但是作为组织上来说,对杨湘洪一直盼望他
能早一点回来,因为呢有了错误也不怕,有了错误回来向组织上交代清楚,组织上会根据你的错误该给纪律处分给纪律处分,该能够谅解的去谅解,该怎么处理去怎
么处理,你滞留不归了,在国外不回,那性质上就会发生很大的变化,所以组织上一直在做工作,偶尔有时候能和他通上话,有的时候是通过一些人在查找他,那么
尽管这样做工作,但是最后,杨湘洪这个人还是执迷不归了,那么处在这种情况下,那么组织上只有采取措施给他双开除了,开除了以后社会上的一些舆论反响也就
小了。


吴小莉:但是我们也想知道双开之后,他的所曾经有的这个错误,或者是认识自己的错误的部分,到底会不会继续进行处理?他究竟有哪一些错误?


赵洪祝:现在因为组织上还要根据一些线索再做些了解,现在他究竟还存在一些什么错误,现在还
没有完全调查清楚的,但是根据他能够这样执意不归,一定不回来了,就从我们一般的常理上来分析判断他应该是有错误的,如果是没有一些重大的问题,他不至于
这么下决心的不归,背叛了祖国背叛了国家。


一个干部被查的同时感到自己一起被查


吴小莉:我们也知道媒体的报道说,这个杨湘洪他的夫人其实还在国内的,我们是不是有透过他的夫人跟他进行一些沟通,也有媒体报道说其实他的女儿已经是到国外去了。


赵洪祝:他女儿肯定在国外,留学学习的时候就留在外边做事情了,他的夫人还在咱们省内还在做着工作。


吴小莉:我们有没有请夫人跟他做一些工作劝说他回来。


赵洪祝:那肯定是做过的,做过了以后没有生效。


解说:2008年12月26日,中国监察部副部长姚增科表示:针对近来发生的中国官员出国不归事件,有关部门将加强公职人员出国护照的审批管理以及对领导干部出国的审查。


吴小莉:其实在这个事情发生之后,我们也发出了一个通告,要求全省各地各部门要加强因公出境或出国的管理工作,未来我们会在哪方面再进行进一步的监管,要防止类似事情可能的再发生。


赵洪祝:比如首先一个还是对干部进行教育,另外一个,如果一旦发现有些干部,确实是在出国前,就有着问题的,并且有着重大的问题,那可以限制出国,就不要再出去了,把事情处理完了,你可以出国的时候再出,免得再发生这样的问题,因为这样的问题发生在国际上影响是不好的。


吴小莉:其实您自己就像您说的,您长期以前在跟干部打交道,您对干部是既有感情,又了解干部的缺点跟优点,和他们的强项跟弱点,发生这样的事情您是不是也特别地伤心。


赵洪祝:伤心和痛心都存在着的,一些干部,确实违了纪组织上找谈话的时候,那种可怜劲,有的
甚至一些老同志,到了一定年龄,已经接近要离开工作岗位的这种情况下,发生了重大问题,你想一生都这么走过来了,有的家庭就因为这一个干部,发生了问题以
后,家庭里边就破败了,四分五裂了,不成其家庭了,你想这个日子怎么过,这都是很痛苦的事情,实际上我从事了八年纪检工作,我可以这样说,一个干部被查的
同时,自己就感到一起被查那种感觉,就觉得他这问题交代清楚了,组织说清楚了,赶紧处理了,才如释重负了。就是有这么种双重的心理感觉,就是不处理不足以
平民愤,再一个不处理不查处呢,又有负于组织的重托。



(本文来源:中新网 )
江小a







linux的计划任务cron进程与crontab文件

无法查看这则摘要。请 点击此处查看博文。

ubuntu8.10的临时文件,及清除











ubuntu8.10的临时文件,及清除

ubuntu8.10的临时文件在/tmp/下

清除临时文件:
rm -fr /tmp/* /tmp/.??*
设置关机时清除临时文件

$vi /etc/init.d/sysklogd

stop)
log_begin_msg "Stopping system log daemon..."
start-stop-daemon --stop --quiet --oknodo --exec $binpath --pidfile $pidfile
log_end_msg $?
rm -fr /tmp/* /tmp/.??*
..........


ref:
http://wiki.ubuntu.org.cn/%E5%85%B3%E6%9C%BA%E6%B8%85%E9%99%A4%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6

2009年3月3日星期二

linux下安装硬盘






linux下安装硬盘

1:将硬盘连接到计算机上
MAKEDEV mknod
2:如有必要格式化硬盘
3:为硬盘添加卷标及分区
fdisk
4:建立逻辑卷
5:在硬盘分区中创建文件系统
mk2fs 创建ext2fs文件系统
mk2fs -j 创建ext3fs文件系统
fsck 检查文件系统
6:设置自动安装
mkdir
mount
7:在交换分区上设置交换机制
mkswap

swapon

修改/etc/fstab

linux下使用usb设备实战(ubuntu8.10下使用移动硬盘u盘等设备)






linux下使用usb设备实战(ubuntu8.10下使用移动硬盘u盘等设备)

1:将u盘插入usb口
2:查看系统列出的usb设备
zmq@ubuntu:~$ sudo lsusb
Bus 005 Device 002: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

3:查看内核中用来表示u盘的设备文件,下例中粗体显示系统使用sdb1来表示u盘
zmq@ubuntu:~$ sudo tail -n 20 /var/log/messages | grep kernel
Feb 27 14:33:20 ubuntu kernel: [  115.611458] type=1503 audit(1235716400.368:13): operation="socket_create" family="ash" sock_type="dgram" protocol=0 pid=5314 profile="/usr/sbin/cupsd"
Feb 27 14:33:20 ubuntu kernel: [  115.611474] type=1503 audit(1235716400.368:14): operation="socket_create" family="x25" sock_type="seqpacket" protocol=0 pid=5314 profile="/usr/sbin/cupsd"
Feb 27 15:35:12 ubuntu kernel: [ 3827.688031] usb 5-6: new high speed USB device using ehci_hcd and address 2
Feb 27 15:35:12 ubuntu kernel: [ 3827.907173] usb 5-6: configuration #1 chosen from 1 choice
Feb 27 15:35:12 ubuntu kernel: [ 3828.101957] usbcore: registered new interface driver libusual
Feb 27 15:35:12 ubuntu kernel: [ 3828.129761] Initializing USB Mass Storage driver...
Feb 27 15:35:12 ubuntu kernel: [ 3828.131070] scsi4 : SCSI emulation for USB Mass Storage devices
Feb 27 15:35:12 ubuntu kernel: [ 3828.131532] usbcore: registered new interface driver usb-storage
Feb 27 15:35:12 ubuntu kernel: [ 3828.131546] USB Mass Storage support registered.
Feb 27 15:35:17 ubuntu kernel: [ 3833.134861] scsi 4:0:0:0: Direct-Access     Generic  Flash Disk       8.01 PQ: 0 ANSI: 2
Feb 27 15:35:17 ubuntu kernel: [ 3833.137468] sd 4:0:0:0: [sdb] 991232 512-byte hardware sectors (508 MB)
Feb 27 15:35:17 ubuntu kernel: [ 3833.138031] sd 4:0:0:0: [sdb] Write Protect is off
Feb 27 15:35:17 ubuntu kernel: [ 3833.140969] sd 4:0:0:0: [sdb] 991232 512-byte hardware sectors (508 MB)
Feb 27 15:35:17 ubuntu kernel: [ 3833.141963] sd 4:0:0:0: [sdb] Write Protect is off
Feb 27 15:35:17 ubuntu kernel: [ 3833.142747]  sdb: sdb1
Feb 27 15:35:17 ubuntu kernel: [ 3833.144953] sd 4:0:0:0: [sdb] Attached SCSI removable disk
Feb 27 15:35:17 ubuntu kernel: [ 3833.146099] sd 4:0:0:0: Attached scsi generic sg1 type 0

4:创建挂载点
zmq@ubuntu:~$ sudo mkdir /mnt/usb


5:安装u盘
zmq@ubuntu:~$ sudo mount /dev/sdb1 /mnt/usb

6:确认安装成功
zmq@ubuntu:~$ ls /mnt/usb
Autorun.inf  Recycled

zmq@ubuntu:~$ df
文件系统           1K-块        已用     可用 已用% 挂载点
/host/ubuntu/disks/root.disk
                       2883636   2612064    125088  96% /
tmpfs                   512528         0    512528   0% /lib/init/rw
varrun                  512528       208    512320   1% /var/run
varlock                 512528         0    512528   0% /var/lock
udev                    512528      2792    509736   1% /dev
tmpfs                   512528       104    512424   1% /dev/shm
/dev/sda6             39068512  32394336   6674176  83% /host
lrm                     512528      2000    510528   1% /lib/modules/2.6.27-7-generic/volatile
/dev/loop1             3844864   2372048   1277504  65% /usr
/dev/sdb1               494616       180    494436   1% /media/disk
/dev/sdb1               494616       180    494436   1% /mnt/usb


7:卸载u盘
zmq@ubuntu:~$ sudo umount /mnt/usb/

成功:)