Archive for 2006年1月21日


上班族黑话、密语全接触

  如果你在一家大公司工作,那么你很可能会定期接受人事部门的考评,得到一两句简短的评语,但你了解它们的意思吗?

  普通员工(不是太聪明);格外出色(目前还没犯错误);善于社交(能喝);

  观察能力强(经常打小报告);工作态度热忱(固执己见);思维敏捷(能迅速找到借口)

  进取向上(常请大家吃饭);复杂工作上逻辑清晰(能把工作推给别人);判断能力强(手气不错)

  事业心强(暗地里害人);为人随和(随时可以解雇);模范员工(上班准时)

  善于释放压力(上班打瞌睡);工作第一位(丑得没有人约);独立工作能力强(谁也不知他在干嘛)

  眼光长远(总是一再拖延工作);具有极佳的口才(能瞎扯);沟通能力强(常打电话聊天)

  踏实忠诚(在别的地方很难找到工作);富于幽默感(能讲许多荤笑话)

  上班的意义是昧着良心说些口是心非的话, 这里提供一些较为适当的办公室谈吐的解读方式,建议您不妨参考参考,以免听不懂对方在说什么!

  原文:也许我可以加班把事情做完。(注释:你要我干到几点?还让不让活了?)

  原文:我不确定这样是不是能够实行。(注释:这根本狗屁不通。)

  原文:真的吗?(注释:胡说八道!)

  原文:或许你可以去询问一下别人的看法。(注释:你等着看谁会理你!)

  原文:我当然也很关心。(注释:谁有空儿管这事啊!)

  原文:不好意思,我并没有参与这项计划。(注释:别烦我,这件事跟我有什么关系?)

  原文:嗯,这很有意思。(注释:这是什么东西!)

  原文:我会试着把这件事情插进工作进度中。(注释:你小子怎么不早一点儿交代?)

  原文:他可能不太熟悉这件事情。(注释:他脑袋里面装的是糨糊!)

  原文:所以你不太满意这件作品?(注释:该死的,你又想挑剔什么?)

  原文:我手边的工作量可能有一点过重了。(注释:我就领这一点儿薪水,你想累死我啊?)

  原文:我喜欢接受挑战。(注释:这是什么烂工作!)

  原文:你可能还不太了解。(注释:你脑子里是不是进水了?)

  原文:我了解,我了解。(注释:这家伙究竟说什么呢?)

  原文:是,我们是应该讨论一下。(注释:唉!又要开什么白痴会议!)

  有人说,总是研究别人说什么会活的很累,也有道理,对他人的多疑多虑会给本身就忙碌的工作增添一份惆怅,但是,明白工作中的一些话外之意还是有必要的,糊糊涂涂的做事总不是办法,是褒是贬,还是自己来明晰吧。

Q:怎么给内核打补丁?
A:# cd /usr/src/linux
# bzip2 -dc patch-xxx.bz2 | patch

Q:如何编译网卡驱动程序
A:gcc -D__KERNEL__ -Wall -DMODULE -Wstrict-prototypes -Wwrite-strings -Wredun
dant-decls -O2 -m486 -c dev_src.c

Q:把目录下所有的.C文件 改名为.c文件? 怎么操作?谢谢 (包括子目录)
A:for i in /root/mud/*.C; do mv $i ${i%.C}.c;

Q:把所有文件名都改成小写(包括子目录自身及其下属文件也要改)
A:#!/bin/bash
cd $i
for i in *; do
    destName=$( echo $i | tr ‘[A-Z]’ ‘[a-z]’ )
    if ! [ $destName = $i ]; then
        mv -f $i $destName
    fi

Q:linux下成批改名指令
A:find /root/mud/ -name *.C |while read file;do rename .C .c "$file";

Q:如何在linux下绑定IP和MAC地址
A:在网关上执行(root):arp -s XXX.XXX.XXX.XXX XX:XX:XX:XX:XX:XX
或编辑/etc/ethers文件,
如 10.1.1.2        your ip address
   10.1.1.3        xxx
然后arp -f

Q:iptables.forward
A:/usr/local/bin/iptables -P FORWARD DROP
/usr/local/bin/iptables -F FORWARD

Q:硬盘mount20次就要fsck,怎么把这个次数改大一点?
A:man tune2fs

Q:如何只改变一个目录下所有子目录的权限,而不改变该目录以及所有子目录下文件的权限?
A:find /your/parent-path -type d -exec chmod MODE {} ;

Q:向远程机备份怎么做?
A:tar czf 11.22.33.44:/home/fred /etc
说明:1. 此命令将本地机器的etc目录下的全部文件备份到远程机11.22.33.44的fred   用户的根目录下.
2. 前提条件:把本地机器的ip地址写在远程机fred用户的根目录下的.rhosts文件中.

Q:时间同步的问题
A:把服务器inetd.conf的time服务打开;客户端用rdate 来同步

Q:怎么看startx时的输出信息
A:startx 2>file

Q:想知道哪个程序在LISTEN 某个特定的端口
A:# /usr/sbin/lsof -i tcp:110
或者# /sbin/fuser -n tcp 110

Q:将大写文件名转为小写的shell,带递归
A:#!/bin/ksh

[ "$1" = "" ] && {
        echo Usage: tolower file_or_dir_list
        exit 1
}
find $* -depth -name "*[A-Z]*" -print | while read src ; do
        prefix=${src%/*}/
        base=${src##*/}
        [ "$src" = "$base" ] && prefix=
        dst="$prefix"`echo "$base" | tr "A-Z" "a-z"`
        [ "$src" = "$dst" ] && {
                echo $file already is a lower case file name
                continue
        }
        [ -e "$dst" ] && {
                echo $file already exist, $src not changed
                continue
        }
        echo Processing $src
        mv "$src" "$dst"
或者#!/bin/sh
# lowerit
# convert all file names in the current directoryto lower case
# only operates on plain files–does  not  changethe name of directories
# will ask for verification before overwriting anexisting file
  for x in `ls`
    do
    if [ ! -f $x ]; then
      continue
    fi
    lc=`echo $x  | tr ‘[A-Z]’ ‘[a-z]’`
    if [ $lc != $x ]; then
    mv -i $x $lc
    fi

一、远程启动原理

  客户端在启动前,既无操作系统,又无启动的软盘或者硬盘,它只有计算机的基本部件: CPU, 内存,主板等。但最重要的必须有网卡和启动的BootRom。客户机只能通过网络获得操作系统。Linux的无盘远程启动与Novell、WinNT下的无盘启动技术不一样,不是采用RPL( Remote Initial Program Loader),而是基于标准的BootP/DHCP和TFTP协议,并通过NFS文件系统建立文件系统。相对前两种,更具有其通用性和适应性。可以基于Linux系统远程启动Dos,Win95,WinNT 和Linux客户。下面简单介绍Linux启动原理:

  1.客户端个人电脑开机后, 在 TCP/IP Bootrom 获得控制权之前先做自我测试.

  2.Bootprom 送出 BOOTP/DHCP 要求而取得 IP.

  3.如果服务器收到个人电脑所送出的要求, 就会送回 BOOTP/DHCP 回应,内容包括客户端的 IP 地址, 预设网关, 及开机影像文件。否则, 服务器会忽略这个要求。

  4.Bootprom 由 TFTP 通讯协议从服务器下载开机影像文件。

  5.个人电脑通过这个开机影像文件开机, 这个开机文件可以只是单纯的开机程式也可以是操作系统。

  6.开机影像文件将包含 kernel loader 及压缩过的 kernel, 此 kernel 将支持NFS root系统。

  7.远程客户端根据下载的文件启动机器。

  一切OK!!! 简单吧!好用吧!下面具体介绍如何建立Linux远程启动。

二、远程启动实例

  作为例子定义下:
    Linux 服务器: server01
  第一个客户机:pc01
  所有远程启动客户目录:/machines
  第一个远程启动客户机目录:/machines/pc01

  首先重新编译Linux内核。

    make menuconfig

    注意网络的支持,NFS-Root支持,BootP(DHCP)的支持必须包括在内。

    make clean

    make dep

    make bpImage

    make modules

    make modules_install

  以上命令之后,你会发现客户端启动的影像文件在/usr/src/linux/i386/boot目录中。

  然后执行以下命令:

    mknod /dev/nfsroot b 0 255

  修改启动设备,让其指向NFSRoot.并将boot image拷贝到Linux服务器的/tftpboot目录下。

    rdev <boot image> /dev/nfsroot

  下面为远程客户机修改服务器,用于建立远程客户机的文件系统。
  在服务器/etc/exports 中加入:

    /machines/pc01 pc01(rw,no_root_squash)

    /usr (ro,no_root_squash)

    /sbin (ro,no_root_squash)

    /bin (ro,no_root_squash)

    /lib (ro,no_root_squash)

    /home (rw,no_root_squash)

  使用DHCP,在/etc/dhcpd.conf 加入对远程客户的支持。参阅:DHCP-Howto建立远程客户机目录:(在服务器上)

    /machines

    /machines/pc01

    /machines/pc01/bin

    /machines/pc01/dev

    /machines/pc01/etc

    /machines/pc01/home

    /machines/pc01/lib

    /machines/pc01/mnt

    /machines/pc01/proc

    /machines/pc01/root

    /machines/pc01/sbin

    /machines/pc01/server

    /machines/pc01/tmp

    /machines/pc01/usr

    /machines/pc01/var

建立bin目录
    拷贝sh, umount, ls, rm, cp, domainname,dnsdomainname, nisdomainname, hostname, cat, mount,umount 到/machines/pc01/bin 中。

建立dev目录
    cp -a /dev /machines/pc01

建立etc目录
    cp -a /etc /machines/etc

    注意必须修改/machines/pc01/etc/rc.d 启动文件:改 mount -avt nonfs 为 mount -av.允许使用NFS Root文件系统。

  以如下格式修改/machines/pc01/etc/fstab文件:

    server01:/machines/pc01 / nfs

    server01:/bin /bin nfs

    server01:/usr /usr nfs

    server01:/sbin /sbin nfs

    server01:/home /home nfs

    server01:/lib /lib nfs

    none /proc proc

建立lib目录

    拷贝/lib/l* 到/machines/pc01/lib.

建立sbin目录
    拷贝init, mount, umount, update, rdev,swapdev, swapon, swapoff, mount,
umount 到 /machines/pc01/sbin.

建立var目录
    cp -a /var /machines/pc01/

  接下来必须建立一个链,将远程客户机的IP地址链接到/machines/pc01目录。
  最后请确认服务器上的nfsd,tftpd and bootpd daemons是否启动。
  一切完事!远程启动很快十秒钟左右就可享用Linux.