Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89760
  • 博文数量: 28
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-14 21:55
文章分类

全部博文(28)

文章存档

2011年(1)

2010年(13)

2009年(14)

我的朋友

分类: LINUX

2010-03-17 22:26:26

        linux基本知识

1. BASH/SHELL
1).    变量用法
    变量与变量内容以等号『=』来连结;
    等号两边不能直接接空格符;
    变量名称只能是英文字母与数字(包括_),但是数字不能是开头字符;
    若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;
    必要时需要以跳脱字符『 \ 』来将特殊符号(如Enter, $, \, 空格符, '等)变成一般符号;
    在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 ` command` 』,其优先执行;
    若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加内容;
    若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;
    通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断;
    取消变量的方法为:『unset 变量名称』;
    ()/[]可以将一个式子转换成判断式和算数    $(1+4) == 5
    数组:    a=(* * * ...)
        a[索引]=内容
        echo ${a[索引]}
        $*, $@, $#, $$, $?, $!, $-
        ${a[*]}, ${a[@]}, ${#a[@]}
2). BASH SHELL ARCHIVES
    system: /etc/profile /etc/bash.bashrc /etc/manpath.config
    person: ~/.bash_profile ~/.bashrc ~/.bash_logout ~/.bash_history
3). redirect
    > >> 1> 1>> 2> 2>> <(用于patch)
    标准输出和错误写入同个文件,必须写成 1> 2>&1
    /dev/null
4). 控制结构
    条件式判断:
    if...then...fi <--   [1. 在 [ ] 当中,只能有一个判别式;2. 在 [ ] 与 [ ] 当中,可以使用 && 或 || 来组织判别式;3. 每一个独立的组件之间『都需要有空格键来隔开』]    <与C一样>
    case.....esac  <--   [1. 直接下达式;2. 交互式]
    循环:
    for....do....done <-- [1. for (( *;*;* )); 2. for i in $*/$@/$variable, 以空格作为划分符]
    while...do...done
    until...do...done
    [code]
    #! /bin/bash
    #Content: test
    #Version: 1.0
    #Authors: ***
    #Date    : 2010-02-22

    name="Hello! How are you?"
    echo $name
    unset name
    exit 0
5). regular expression [GE]
    RE 字符    意义与范例
    ^word    待搜寻的字符串(word)在行首!
    范例:grep -n '^#' regular_express.txt    <搜寻行首为 # 开始的那一行!>
    word$    待搜寻的字符串(word)在行尾!
    范例:grep -n '!$' regular_express.txt    <将行尾为 ! 的那一行打印出来!>
    ^$    表示空行
    .    代表『任意一个』字符,一定是一个任意字符!
    范例:grep -n 'e.e' regular_express.txt    <搜寻的字符串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e 与 e 中间『一定』仅有一个字符,而空格符也是字符!>
    \    跳脱字符,将特殊符号的特殊意义去除!
    范例:grep -n \' regular_express.txt    <搜寻含有单引号 ' 的那一行!>
    *    重复零个或多个的前一个 RE 字符
    范例:grep -n 'ess*' regular_express.txt (= egrep -n 'es+' regular_express.txt)    <找出含有 (es) (ess) (esss) 等等的字符串,注意,因为 * 可以是 0 个,所以 es 也是符合带搜寻字符串。另外,因为 * 为重复『前一个 RE 字符』的符号, 因此,在 * 之前必须要紧接着一个 RE 字符喔!例如任意字符则为 『.*』 !>
    \{n,m\}    连续 n 到 m 个的『前一个 RE 字符』, 若为 \{n\} 则是连续 n 个的前一个 RE 字符,若是 \{n,\} 则是连续 n 个以上的前一个 RE 字符!
    范例:grep -n 'go\{2,3\}g' regular_express.txt    <在 g 与 g 之间有 2 个到 3 个的 o 存在的字符串,亦即 (goog)(gooog)>
    []    字符集合的 RE 特殊字符的符号    <字符>
    范例:grep -n 'g[ld]' regular_express.txt    <搜寻含有 (gl) 或 (gd) 的那一行~>
    [ch1-ch2]
    范例:grep -n '[0-9]' regular_express.txt
    搜寻含有任意数字的那一行!需特别留意,在字符集合 [] 中的减号 - 是有特殊意义的,他代表两个字符之间的所有连续字符!但这个连续与否与 ASCII 编码有关, 因此,您的编码需要设定正确(在 bash 当中,需要确定 LANG 与 LANGUAGE 的变量是否正确!) 例如所有大写字符则为 [A-Z]
    [^]
    范例:grep -n 'oo[^t]' regular_express.txt
    搜寻的字符串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [] 内时, 代表的意义是『反向选择』的意思~例如,我不要大写字符,则为 [^A-Z] ~ 但是,需要特别注意的是,如果以 grep -n [^A-Z] regular_express.txt 来搜寻, 却发现该档案内的所有行都被列出,为什么?因为这个 [^A-Z] 是『非大写字符』的意思, 因为每一行均有非大写字符,例如第一行的 "Open Source" 就有 p,e,n,o.... 等等的小写字符, 以及双引号 (") 等字符,所以当然符合 [^A-Z] 的搜寻!

    +    重复『一个或一个以上』的前一个 RE 字符 [== RE RE*]
    范例:egrep -n 'go+d' regular_express.txt
    搜寻 (god) (good) (goood)... 等等的字符串。 那个 o+ 代表『一个以上的 o 』所以,上面的执行成果会将第 1, 9, 13 行列出来。
    ?    『零个或一个』的前一个 RE 字符
    范例:egrep -n 'go?d' regular_express.txt
    搜寻 (gd) (god) 这两个字符串。 那个 o? 代表『空的或 1 个 o 』所以,上面的执行成果会将第 13, 14 行列出来。
    有没有发现到,这两个案例( 'go+d' 与 'go?d' )的结果集合与 'go*d' 相同? 想想看,这是为什么喔! ^_^
    |    用或( or )的方式找出数个字符串
    范例:egrep -n 'gd|good' regular_express.txt
    搜寻 gd 或 good 这两个字符串,注意,是『或』! 所以,第 1,9,14 这三行都可以被打印出来喔!那如果还想要找出 dog 呢?就这样啊:
    egrep -n 'gd|good|dog' regular_express.txt
    ( )    找出『群组』字符串
    范例:egrep -n 'g(la|oo)d' regular_express.txt
    搜寻 (glad) 或 (good) 这两个字符串,因为 g 与 d 是重复的,所以, 我就可以将 la 与 oo 列于 ( ) 当中,并以 | 来分隔开来,就可以啦!
    此外,这个功能还可以用来作为『多个重复群组』的判别喔!举例来说:
    echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'
    上面的例子当中,意思是说,我要找开头是 A 结尾是 C ,中间有一个以上的 "xyz" 字符串的意思~
6).
不同的shell在一些地方不同    -->bash, sh, ksh, csh, dash

2.    makefile
1).    make变量语法:
    变量与变量内容以『=』隔开,同时两边可以具有空格;
    变量左边不可以有
    变量与变量内容在『=』两边不能具有『:』;
    在习惯上,变量最好是以『大写字母』为主;
    运用变量时,以 ${变量} 或 $(变量) 使用;
    在该 shell 的环境变量是可以被套用的,例如提到的 CFLAGS 这个变数!
    在指令列模式也可以给予变量。
2).    /usr/include /lib /lib/modules /usr/lib    [dynamic libirary]
    ldconfig [-f conf] [-C cache] [-p]    -->/etc/ld.so.conf    <添加新的库之后,须使用ldconfig更新>
    ldd [-vdr] [filename]

3. linux 开机流程
1).基本的流程为:
    加载 BIOS 的硬件信息;
    读取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)开机信息;
    加载 Kernel 的操作系统核心信息;(内核升级-->增删.<同个版本多次编译时,需将/lib/modules/`uname -r`删除>)
    Kernel 执行 init 程序并取得 run-level 信息;    [ubuntu启动init,运行/etc/event.d/rc.default,确定运行级别;运行/etc/event.d/rcX;运行/etc/init.d/rc X; 运行/etc/rcX.d/里的脚本]
    init 执行 /etc/rc.d/rc.sysinit 档案;    [设置系统参数]
    启动核心的外挂式模块 (/etc/modules.conf);    -->/lib/modules/`uname -r`
    init 执行 run-level 的各个批次档( Scripts );    [chkconfig, update-rc.d, sysv-rc-conf, ntsysv]
    init 执行 /etc/rc.d/rc.local 档案;    [个人设定]
    执行 /bin/login 程序;
    登入之后开始以 Shell 控管主机。
2). grub.conf设定方式
    title ***
    root   [硬盘代号 / 盘区]
    kernel [vmlinuz开机档案的所在地完整档名] [root=/dev/盘区]

    title ***
    chainloader  [硬盘代号, 盘区] +1

    范例:
    root   (hd0,0)
    kernel /boot/vmlinuz-2.4.19-16mdk root=/dev/hda1

    chainloader (hd1,0) +1

4.    账户管理
1)./etc/passwd
    user:pwd:UID:GID:info:home:shell    [/bin/false, /bin/true, /bin/nologin无法登陆]
2)./etc/shadow    <常用加密算法有MD5,SHA-256,SHA-512,密文分别为22,43,86长度,可通过crypt工具推算>
    账号名称:密码:上次修改密码日期:密码不可更改天数:密码需要更改的天数:更改前的警告期限:账号失效期限:账号取消期限:保留
3)./etc/group    -->/etc/gshadow
    群组名称:密码:GID:支持的账号名称
4). groupadd [-g gid] groupname
    groupdel groupname
    useradd [-u UID] [-g GID] [-G GID] [-d HOME] [-mM] [-s shell] username     -->涉及到3个设定文件/etc/skel, /etc/default/useradd, /etc/login.defs
    userdel [-r] username
    chsh [-s shellname]
    chfn
    finger [-s] [username]    //当前该账号的登录情况
    passwd
    su [-] [username]
    sudo [-u username] ***    -->/etc/sudoers
    id [username]
    groups
5).手动添加账号
    先建立所需要的群组/etc/group
    建立账号的各个属性/etc/passwd
    将 passwd 与 shadow 同步化pwconv
    建立该账号的密码passwd acount
    建立使用者家目录cp -r /etc/skel /home/account
    更改家目录属性chown -R account.group /home/account


5.    常用指令
1). alias lm='**' /unalias/export
2). echo [-n] [${*}|''|""] | $RANDOM
3). set/unset/env
4). cut -d "分隔字符" [-cf] fields<字符/字段>
5). read -p "****" variable
6). eval \$${***}
7). clear
8). source (.)    /exec
9). declare [-afirx]    <只有声明为数据,才能直接进行算术运算>
10).sh [-nvx] /bash
11).grep [-acinvr] '搜寻字符串' filename    [v反向,i忽视大小写, c计算找到的行数]
12).printf '打印格式' 实际内容 --> [\a | \b | \f | \n | \r | \t | \v | \xNN | %ns | %ni | %N.nf]
13).print
14).sed [-nefri] [[n1[,n2]acdips]    -->处理行
15).awk '条件类型1{动作1} 条件类型2{动作2} ...' filename    -->处理列, NR, NF, FS,BEGIN, END, 逻辑运算符,{}可包括多个指令,由;/ENTER间隔;变量不用加$
16).diff [-ibB] from-file to-file    -->diff -Naur old/ new/ > diff.patch        /-c
17).patch -pN < *.patch
18).cmp [-s] file1 file2
19).pr
20).which
    whereis [-bmsu] [filename]
    locate
    updatedb    
21).dmesg    [/var/log/dmesg]
22).chkconfig [--levle levels] [--list|add|del] [service name]    /update-rc.d **** defaults/remove
23).man 2系统调用/5设定文档/8    [info]
24).&(running), ^Z(stopping), bg, fg, jobs, kill
25).ps aux | ps -eF    | ps -xj
26).top    [free]
27).uname [-anrp]
28).nice renice
29).uptime
30).who & w    [列出当前用户]    finger
31).last -number
32).date [-sR] [+%format]
33).hostname
34).ntpdate time.stdtime.gov.tw
35).gcc [-Onumber] [-Wall] [-Wformat] [-Ipath] [-Lpath] [-o execname] [-c cname] [-libname] [-fPIC] [-shared]
    cpp as [-S]
36).md5sum [-bct] filename
37).depmod [-aens] 查询模块相关性
    lsmod
    modinfo [-adnp] module_name
    modprobe
    insmod [-fkps]
    rmmod modlue_name
38).chattr [+-=][ASacdijsu] [pathname]
    lsattr [pathname]
39).logger [-isd] [-p pri] [-f file]
40).trap -lp [argument] signal        <1.执行程序;2.默认操作;3.忽视>
    stty -a [列出中断信号与键盘的对应]
41).file
    size
    objdump
    od [dx] ***    <以*进制来查看数据>
42).sort -t "分隔字符" -k "开始区域" -nru    -->,默认是按字符排序,n表示按算术排序
43).cal
44).bc        
45).sync
46).fsck [-Aar] 装置名称        <检查之前需将装置umuont, 慎用!!>
47).chgrp
    chmod [uga]
    chown [-R user:group]
48).ls [-ailS] --color=auto/never/always
49).cp [-drsu]
    mv [-u]
    mkdir [-mp]
50).basename
    dirname
51).cat [-nAE]
    tac
    head/tail -n number ***
    nl
52).wc [-wml]
53).df [-ikm]
54).du [-abkmcs]
55).fdisk [-l] 装置名称     <硬盘分割>
56).mkfs.ext3/2 [-bicLj] 分区
57).badblocks [-swv]
58).mkboot [-d device] [kernel]
59).mount [-al] [-t type] [-o option]
    umount
60).ln [-s] src dst    <使用s表示软链接,不使用表示硬链接.硬链接不能跨filesystem(同一个parition),不能链接目录>
61).umask ***    [默认档案是666,目录是777]
62).gethost [-dxnf] [hostname/ip]
63).uniq
64).tee
65).tr [-ds] SET1  #[dos文件换行是以"od0a"结尾, unix文件换行是以"oa"结尾, ^M即是对应着dos的0d]<字符处理>,支持GE
66).split [-bl] 输入档案 输出档案前导字符
67).shift N     -->移位
68).getopt [options] [--] optstring parameters    [OPTIND, OPTARG]
69).shell执行:()fork, exec, source(.)
70).find [path] [args]
    1.time [+ 之上, -之下]
    -atime +-n    /amin
    -ctime +-n
    -mtime +-n
    -newer file
    2.使用名称
    -gid n
    -group name
    -uid n
    -user name
    -name file
    -type type[f, b, c, d, p, l, s]

6.TarBall Kit
1).linux 可执行文件-->二进制档案
2).dpkg rpm 安装模式规定了软件符合的系统版本<依赖性>
3).rpm    [rp-pppoe-3.1-5.i386.rpm]
rpm [-i/U/Fvh] [-qalifcdR][p] [-e] [--rebuilddb] [-Vapf]
安装完后的路径:/etc, /usr/bin, /usr/share/doc, /usr/sahre/man, /var/lib/rpm
<如果以源码形式安装,最好将安装到/usr/local或/usr/local/pakcname/>
    src.rpm
rpmbuild [--rebuild] [--recompile] [-bb] [-ba]
安装完后的路径:/usr/src/redhat/SPEC(SOURCE)(BUILD)(RPMS)
4).
bype<->bit
压缩: bzip2, gzip [-dt]
打包: tar
tar -[zjxcvtpPf] [-N '/2010/03/06'] [--exclude FILE] [--exclude FILE]

7.
系统活动记录,依赖于syslogd/logrotate服务    [/var/log/]
1).syslogd
    记录:<日期与时间><主机名称><服务名称><显示讯息>
    参数文档:/etc/syslog.conf
    格式: 服务名称.讯息等级    [服务名称.讯息等级] 存放或显示地点(>=grade)    / 服务名称.=讯息等级 [服务名称.=讯息等级]    存放或显示地点
    服务名称:
    讯息等级:none,debug,info,notice,warning/warn,err/error,crit,alert,emerg
    存放/显示地点:档案的绝对路径,打印机等设备,使用都名称,远程主机
2).logrotate
    参数文档:/etc/logrotate.conf /etc/logrotate.d/
    格式:
    log file[ log file] {
        daily/weekly/monthly
        rotate number
        prerotate
        postrotate
        size=***(k/M)
        nocompress
    }

8.
x-windows:x-server, x-client, WM(KDE, GNOME)
linux learn <--- linux basic, network/crack
9.
hard device: mainboard, cpu, VGA, PCI, RAM, DISK, cdrom, floppy, keyboard/mouse, usb
1).mainboard: cpu, vgp, pci, disk, ps2, com, LPT, audio, usb [slot]
2).cpu:    frequency = basic * external [frequency]
basic frequency
external frequency -->跟PCI/AGP接口的速度相关
3)./dev/hd*, /dev/sd*, /dev/fd*, /dev/lp*, /dev/cdrom, /dev/mouse
4).serves:
    NAT: two network card
    SAMBA: network card, DISK
    MAIL: network card, DISK
    WEB: RAM
    DHCP:
    PROXY:CPU, RAM, DISK, network card
    FTP: DISK, network card
5).linux分区:/usr/local可作为一个单独分区,但不要给/usr单独分区(像passwd存于/usr/bin/passwd,以读写模式挂载根目录,就不能使用passwd指令).
10.
spfdisk
primary    extended(n+logical)
11.
1).硬盘<--多个硬盘盘
磁头(半径间隔事先规定)--> 磁道(磁柱)--> 扇区
MBR-->第0磁道,最多只能保存4个parition记忆
sector->block(档案存储的最小单位,划分时应注意)
2).inode[档案属性]    block[档案数据]
一个inode大小是128bytes,1G的硬盘所分配的inode是16M,inode数量不能比block多

* 该档案的拥有者与群组(owner/group);
* 该档案的存取模式;
* 该档案的类型;
* 该档案的建立日期(ctime)、最近一次的读取时间(atime)、最近修改的时间 (mtime);
* 该档案的容量;
* 定义档案特性的旗标(flag),如 SetUID...;
* 该档案真正内容的指向 (pointer);
3).
I/O race: CPU <-- RAM(dirty) <-- DIS
4).
档案<---->权限
12.
1).设定开机挂载:    
             

13. denation
符号 内容
* 万用字符,代表一个或多个字符(或数字)    find $path -name ***(一般规则)
? 万用字符,代表一个字母
# 批注,这个最常被使用在 script 当中,视为说明!
\ 跳脱符号,将『特殊字符或万用字符』还原成一般字符
| 分隔两个管线命令的界定;
; 连续性命令的界定(注意!与管线命令并不相同)
~ 使用者的家目录
$ 亦即是变量之前需要加的变量取代值
& 将指令变成背景下工作!!!!(与^Z不同)
! 逻辑运算意义上的『非』 not 的意思!(需要用空格分开)
/ 路径分隔的符号
>, >> 输出导向,分别是『取代』与『累加』
' 单引号,不具有变量置换的功能
" 具有变量置换的功能!
`` 两个『 ` 』中间为可以先执行的指令!
() 在中间为子 shell 的起始与结束(子进程,不影响到父进程,父进程本等待子进程运行结束)
[] 在中间为字符的组合
{} 在中间为命令区块的组合!
组合按键 执行结果    
Ctrl + C 终止目前的命令
Ctrl + D 输入结束(EOF),例如邮件结束的时候;
Ctrl + M 就是 Enter 啦!
Ctrl + S 暂停屏幕的输出
Ctrl + Q 恢复屏幕的输出
Ctrl + U 在提示字符下,将整列命令删除
Ctrl + Z 『暂停』目前的命令

14. logic judgment statement
逻辑卷标    表示意思
1).     关于档案与目录的侦测逻辑卷标!
-f        常用!侦测『档案』是否存在
-d        常用!侦测『目录』是否存在
-b        侦测是否为一个『 block 档案』
-c        侦测是否为一个『 character 档案』
-S        侦测是否为一个『 socket 标签档案』
-L        侦测是否为一个『 symbolic link 的档案』
-e        侦测『某个东西』是否存在!
2).     关于程序的逻辑卷标!
-G        侦测是否由 GID 所执行的程序所拥有
-O        侦测是否由 UID 所执行的程序所拥有
-p        侦测是否为程序间传送信息的 name pipe 或是 FIFO    
3).      关于档案的属性侦测!
-r        侦测是否为可读的属性
-w        侦测是否为可以写入的属性
-x        侦测是否为可执行的属性
-s        侦测是否为『非空白档案』
-u        侦测是否具有『 SUID 』的属性
-g        侦测是否具有『 SGID 』的属性
-k        侦测是否具有『 sticky bit 』的属性
4).     两个档案之间的判断与比较 ;例如『 test file1 -nt file2 』
-nt        第一个档案比第二个档案新
-ot        第一个档案比第二个档案旧
-ef        第一个档案与第二个档案为同一个档案( link 之类的档案)
5).     逻辑的『和(and)』『或(or)』
&&        逻辑的 AND 的意思
||        逻辑的 OR 的意思

15. operation statement
=        等于
!=        不等于(!=, =可用于数字/字符比较,其它比较符只能用于数字比较)
<        小于
>        大于
-eq        等于
-ne        不等于
-lt        小于
-gt        大于
-le        小于或等于
-ge        大于或等于
-a        双方都成立(and)
-o        单方成立(or)-->左右操作数合起来才是一个判断式
-z        空字符串
-n        非空字符串

16. Linux信号简介  
1) SIGHUP 本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联.   
2) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出   
3) SIGQUIT 和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号.   
4) SIGILL 执行了非法指令. 通常是因为可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出时也有可能产生这个信号.   
5) SIGTRAP 由断点指令或其它trap指令产生. 由debugger使用.   
6) SIGABRT 程序自己发现错误并调用abort时产生.   
7) SIGIOT 在PDP-11上由iot指令产生, 在其它机器上和SIGABRT一样.   
8) SIGBUS 非法地址, 包括内存地址对齐(alignment)出错. eg: 访问一个四个字长的整数, 但其地址不是4的倍数.
9) SIGFPE 在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误.   
10) SIGKILL 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略.   
11) SIGUSR1 留给用户使用   
12) SIGSEGV 试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.   
13) SIGUSR2 留给用户使用   
14) SIGPIPE Broken pipe  [网络通信, SIG_IGN]
15) SIGALRM 时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号.   
16) SIGTERM 程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理. 通常用来要求程序自己正常退出. shell命令kill缺省产生这个信号.   
17) SIGCHLD 子进程结束时, 父进程会收到这个信号.   
18) SIGCONT 让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作. 例如, 重新显示提示符   
19) SIGSTOP 停止(stopped)进程的执行. 注意它和terminate以及interrupt的区别: 该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略.   
20) SIGTSTP 停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号   
21) SIGTTIN 当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.   
22) SIGTTOU 类似于SIGTTIN, 但在写终端(或修改终端模式)时收到.   
23) SIGURG 有紧急数据或out-of-band数据到达socket时产生.   
24) SIGXCPU 超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变
25) SIGXFSZ 超过文件大小资源限制.
26) SIGVTALRM 虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间.    
27) SIGPROF 类似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间.
28) SIGWINCH 窗口大小改变时发出.   
29) SIGIO 文件描述符准备就绪, 可以开始进行输入/输出操作.    <异步I/O>
30) SIGPWR Power failure

17.
1).
coreutils
boost
libxml,    mxml
2).
程序设计时,功能不同的模块应动态库模式链接
3).
strace
pstree
4).
vi
:e!    还原
5).
模块所处目录:/lib/moduels/`uname -r`/kernel
inodes 与block关系    --link????
setuid, setgid, setsid

shell多进程
http://hi.baidu.com/lestatmq/blog/item/558966fcac36d94fd6887dec.html

阅读(2594) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~