Showing posts with label notes. Show all posts
Showing posts with label notes. Show all posts

Shell

查找:

  1. find:
    1. 实时查找,精确,速度慢,支持正则
    2. find 查找路径 查找标准 查到后处理动作
    3. 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕
    4. 匹配标准:
      1. -name 'filename' :精确匹配:通配:* ? []
      2. -iname 不区分大小写
      3. -regex pattern :使用正则表达式
      4. -user username:根据用户名查找
      5. -group
      6. -uid
      7. -gid
      8. -nouser
      9. -nogroup
      10. -type:
        1. f普通文件 : -type f
        2. d目录文件
        3. l链接文件
        4. c字符设备
        5. b块
        6. p管道
        7. s套接字
      11. -size:默认字节
        1. 【+|-】 # 【K|M|G】 
          • +10k 大于10k
          • -10k小于10k
          • 10k代表9k-10k之间的都显示
      12. 查看某段时间内改动创建的文件[+|-]# :+#至少#天;-#:#天内 ;#:#天
        1. -mtime内容改变
        2. -ctime权限属性改变
        3. -atime最后一次访问时间
        • find ./ -mtime -5 -name 'c'
      13. 权限匹配:
        1. find ./ -perm mode精确: find ./ -perm 664 
        2. find ./ -perm -mode只要有一项匹配即可
        3. find ./ -perm /mode mode以上才能匹配:755可以匹配644,750不可.

正则表达式:
  1. . 表示任意单个字符
  2. * 表示匹配前行字符任意次。
  3. \? 表示匹配前行字符0/1次:注意\ 是转义符。这个时候要和双引号一起使用。
  4. 位置锚定
    1. ^锚定行首: '^abc'
    2. $锚定行尾: 'abc$'
    3. ^$ 空白行
    4. \< 锚定单词的词头, 等价于\b: grep \<root\>
    5. \> 锚定单词的词尾,等价于\b
  5. 分组:为了实现后向引用。
    1. cat a|grep "\(l..e\b\).*\1r":把文件a里面的内容中love lover/like liker之类的行挑选出来。
  6. [] 匹配指定范围任意单个字符
    1. [^]取反
    2. [a-zA-Z0-9]
    3. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
  7. 扩展正则表达式中增加的功能:
    1. 次数:+:前行单字符出现至少一次。{m,n}前行单字符出现m到n次,含m,n。
    2. |:选择 grep -E "(C|c)at" :选出大小写的猫。
  8. grep的几个参数:
    1. -i 忽略大小写
    2. --color 加颜色
    3. -v 反向查找
    4. -o 只显示字符串
如何生成列表:
  1. {1..100}:自动展开成列表
  2. seq 5 10 序列:seq [起步 [步长]] [结束数]
  3. `ls /etc`

字符编辑:
  1. |:管道,前一个命令的输出作为后一个命令的输入
  2. 输入输出:
    • 0  标准输入
    • 1  标准输出
    • 2  错误输出
    • >  >>  覆盖输出和追加输出
    • <  <<  覆盖输入和追加输入
    • set -C 如果某个文件存在禁用>
    • >| 强制覆盖(当set -C时是不允许覆盖的)
    • set +C取消禁用
    • &> => + 2> 常用&>/dev/null
    • cmd [] []<< EOF    脚本中使用,用来解决脚本中运行交互式程序的问题。
    • EOF
  3. cat
    • -n显示行号, -E显示行结束符$
    • tac将cat的内容反写
  4. Less:翻页设置见Man。弱化的功能为more
  5. tail/head -n20 文件名
  6. cut -d: -f1 /etc/pasword 默认是空格
  7. tr 'ab' 'AB' < 文件名:针对单个字符操作。
    • tr -d 'ab' 碰到a和b就删除。
    • 'a-z' 'A-Z'转换大小写,'ab' 'cd' a换c,b换d
  8. sort 默认按ASCII码升序
    • sort -t: -k3 -n -r /etc/passwd|cut -d: -f3 
    • -f 忽略大小写
    • -u 相同的只显示一行
  9. Uniq:行必须相邻
    • -d 只会显示重复的行一次 /其它行不会显示
    • -D 重复的行全部显示/其它不重复行不显示
    • -c 在行首显示重复的次数/不可以和D共用
  10. wc :结果返回:行 字母数 字节数
    • -l行数 -w单词数 -c字节数 -m字符数 -L最长行的字符数
通用命令行命令:
  1. $# 传给脚本的参数数量
    $0 脚本本身的名字
    $1 传递给该shell脚本的第1个参数
    $2 传递给该shell脚本的第2个参数
    $@ 传给脚本的所有参数的列表
    $* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 脚本运行的当前进程ID号
    $? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功:exit n.
  2. 查看cmd本身信息:命令 cmd
    1. whatis:显示命令在Man的哪一个章节
    2. type:是否shell内置命令,如果不是,会显示cmd is 目录
    3. which:获取命令的目录。
  3. 系统环境设置:
    1. date; date +%s;
    2. clock
    3. hwclock -s; hwclock -w
    4. ls -i 文件 显示inode号
    5. ctl z送入后台并停止作业
    6. cmd [option] arg1 arg2 ...&:命令后台运行。
    7. bg:让后台停止的作业继续运行。
    8. jobs:查看后台所有的作业
    9. fg jobid:调回前台
  4. 命令和字符的转换
    1. ~: cd ~oracle
    2. -: cd -
    3. {}: touch {a, b, c, d}{m,n}会创建8个文件。
    4. ··:反引号,可以展开命令结果。
    5. ${}:括号内的命令执行结构也会被展开。也可以放入变量。不发生歧义情况下,可以省略{}.
    6. “”:双引号,在双引号中变量会展开为变量值
    7. ‘’:单引号,变量不会展开,只能作为字符。
    8. \:转义,会使特殊字符变成普通字符。
  5. 命令行编辑
    1. ctl a/e:光标快速到行首或行尾。
    2. ctl k/u:从光标处删除到行首/尾。
    3. ctl -> <-:跳跃单词
    4. ctl L:清屏
    5. !执行历史命令,!n执行第n行,!!执行上一条,!字符,给定字符最近一次。
    6. 命令别名:alias cmd='cmd [option1] [option2]'
  6. 文件名通配:
    1. *:任意长度任意字符
    2. ?:任意单字符
    3. []:制定范围内的任意单字符
    4. [a-zA-Z0-9]
    5. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
    6. 特殊字符集合中的任意一个需要加双中括号:[[:alnum:]]
  7. 超级常用命令:
    1. cp 源1 源2... 目的:不管源多少目的只有一个。
      • -p:保留属性(o和g不变,正常拷贝,og会变成使用拷贝的用户的)
      • -P:保持连接。拷贝链接本身,不过引用的路径只能是相对路径,如果链接自身位置变化,则链接会失效。
      • -R/r递归复制。
      • -f强制覆盖
      • -L对软链接拷贝时,拷贝的实际上是背后的文件。
      • -f强制覆盖
    2. mv 源1 源2 ...目的
      • mv -t target scorce
    3. install source ... target
      • install -d /dir :创建目录
      • install -t target source...
      • install 的文件自动有执行权限
Man 
  1. 8个章节
    1. 所有用户使用的命令
    2. 表示系统调用
    3. 库调用
    4. 特殊文件
    5. 文件格式
    6. 游戏
    7. 杂项
    8. 管理命令
  2. 格式说明
    1. []可省略
    2. |多选一
    3. <>必须给出
    4. ...可以多次出现
    5. Name:命令名称及功能的简要说明
    6. Synopsis:用法说明,包括可用选项
    7. Desc:详细说明
    8. Options:每个选项的意义
    9. Files:相关配置文件
    10. Bugs:
    11. Examples:使用示例
  3. Man的页面操作:
    1. 翻页:space下一页,b上一页
    2. 翻行:回车下一行,k上一行
    3. 查找:/keyword 前--->后
      • ?keyword 向前找
      • n向后找下一个
      • N向前找下一个
    4. 退出:Q/q

条件判断

  1. 整数测试:
    1. [ $A -eq $B ] :$A $B 的前后都有空格。等值为真
    2. [ $A -ne $B ] :$A $B 的前后都有空格。不等值为真
    3. [ $A -gt $B ] : >
    4. [ $A -lt $B ] : <
    5. [ $A -ge $B ] : >=
    6. [ $A -le $B ] : <=
  2. 文件测试:
    1. [ -e file ]:测试文件是否存在
    2. [ -f file ]:是否普通文件
    3. [ -d file ]:是否设备文件
    4. [ -r file ]:是否对当前用户可读
    5. [ -w file ]:可写
    6. [ -x file ]:可执行
  3. 字符串测试:
    1. [ $A == $B ]:
    2. [ $A != $B ]:
  4. 命令间的逻辑关系:有命令A 与B ,当命令顺利执行;返回值为真,否则反之.
    1. 当 A 为真时 &&  执行B
      • 当A为假,命令终止。
    2. 当 A 为假时 ||  执行B
      • 当A为真是,命令终止。
    3. A && B || C : 如果A顺利执行,那么接下来执行B,否则执行C。
      • 如果A顺利执行,那么执行B,如果B顺利执行则命令终止。
      • 如果A顺利执行,那么执行B,如果B执行报错则执行C。
      • 如果A执行报错,跳过B,执行C。
  5. Shell中进行算术运算:注意$a+$b=a+b 是字符。
    1. let c=$a +$b
    2. c=$[$a+$b]
    3. c=$(($a+$b))
    4. c=`expr $a + $b`
  6. 选择结构
    1. 条件选择结构
      • case SWITCH in
      • value 1)
        • statement...
        • ;;
      • value 2)
        • statement...
        • ;;
      • *)
        • statement ...
        • ;;
      • esac
      • 例子:
      • case $1 in
      • [0-9])
        • echo "A digit";;
      • [a-z])
        • echo "lower";;
      • [A-Z])
        • echo "upper";;
      • *)
        • echo "special";;
      • esac
    2. 条件判断控制结构
      • if condition1; then
        • statement ...
      • elseif conditon2; then
        • statement ...
      • elseif ...
      • else
        • statement ...
      • fi
      • 例:特点:可以跟多参数,无文件创建文件,有则统计程序运行该文件次数。
      • #! /bin/bash
        #
        declare -i line=0
        while [ "$1" != "" ]; do
        if [ -e $1 ]; then
        echo "I m $1,and I am alive"
        line=`wc -l $1| cut -d" " -f1`
        let line=$[ $line + 1 ]
        echo "$line"&gt;&gt;$1
        echo "I am $1,and I am visited $line times"
        else
        touch $1
        echo "fiel $1 created"
        fi
        shift
        done
        exit 0
        #! /bin/bash
        #
        declare -i line=0
        while [ "$1" != "" ]; do
        if [ -e $1 ]; then
        echo "I m $1,and I am alive"
        line=`wc -l $1| cut -d" " -f1`
        let line=$[ $line + 1 ]
        echo "$line">>$1
        echo "I am $1,and I am visited $line times"
        else
        touch $1
        echo "fiel $1 created"
        fi
        shift
        done
        exit 0

  7. 循环:

    1. for 循环

      • for 变量 in 循环;do
      • 循环体
      • done

    2. while循环

      • while 条件;do
      • 循环体
      • done

文字处理sed

Sed:流编辑器,只在内存空间编辑行,完成后显示内存空间的内容。 AWK:报告生成器

  1. 格式:sed [option] {sed  脚本} input file...
  2. sed 'AddressCommand' file......
  3. Address: 
    1. start line,end line:1,100
    2. 使用模式 /pattern2正则表达式/,/pattern2/  匹配两个模式的所有的行。
    3. # 指定行
    4. #,+N 开始行,和向后N行。
  4. cmd:
    1. d: 删除符合条件的行
    2. p/P:效果一样,显示符合条件的行
    3. a \string在指定行后追加新行。
    4. i \string 在指定行前加新行
    5. r file:将指定的文件的内容加到某行之后。
    6. -n:静默效果,就是不显示内存空间的内容。
    7. sed '1,2r fileb' filea 把fileb的内容放入filea的特定行
    8. sed -n '/^\//,/^tmpfs/p' /etc/fstab只显示符合条件的某段。
    9. sed '1,$s/id/ID/g' ./a: 注意%在这里不可以代替1,$
  5. 选项:
    1. -i : 直接修改源文件
    2. -n: 静默
    3. -e: script 可以同时执行多脚本
    4. -f file: sed -f /path/to/file  file
    5. -r:使用扩展的正则表达式。

VIM

vi有三种模式:编辑模式-输入模式(退出ESC)/编辑模式-末行模式(退出ESC)

  1. 编辑模式
    1. 进入输入:
      1. a/i:在字符后/前转输入模式
      2. o:在广标下方重新开启一行
      3. I:行首插入 A:行尾插入
      4. O:在光标上方重开一行
    2. 移动光标:
      1. 单词
        1. e下一个单词词尾
        2. b上一个单词词尾 支持次数
        1. O行首
        2. ^非空白行首
        3. $绝对行尾
        4. 50G,跳到50行
        5. :50直接在末行模式给出行号回车。
    3. 翻屏
      1. ctrl F向下翻页
      2. ctrl B向上翻页
      3. ctrl D下半页
      4. ctrl U 上半页
    4. 删除单个字符
      1. #x删除光标所在的字符,#代表重复次数
      2. dw
      3. de
      4. db
      5. dd
    5. 粘帖:
      1. p:如删除的是整行,则贴在光标下方,否则贴在字符前面
      2. P:如删除的是整行,则贴在光标上方,否则贴在字符后面
    6. 复制命令y:用法如同d
    7. 先删除再转换为输入模式:
      1. c:同d命令, = d + 输入模式
    8. 替换:
      1. r 要替换的字符
      2. R进入替换模式
    9. 撤销编辑操作
      1. u 撤销最近一次操作
      2. 撤销撤销:ctrl r
    10. 重复此前操作
      1. .
    11. 可视化模式
      1. v:按字符选取
      2. V:按矩形块选取
      3. ctrl v:视觉块操作
    12. 查找:
      1. /模式 :往下查找
      2. ?模式:往上查找

  2. 末行模式
    1. 末行变量
      1. . 表示当前行
      2. $ 表示最后一行
      3. +#表示向下#行
    2. 存盘
      1. :wq保存退出
      2. :w!强制保存
      3. :w存盘
      4. :q退出系统
      5. :q!不保存退出
      6. :x保存退出
    3. 删除:
      1. :1,8d删除1-8行
      2. :50跳转到50行
    4. 查找替换:
      1. :#,#s@pattern@string/g
      2. :%s@pattern@string/g
      3. #代表行; @是分割符号; %=^,$;g是指替换行内所有匹配点。
    5. vi编辑多文件:
      1. vi file1 file2
      2. 切换:next,prev,first,last
    6. 分屏幕显示文件
      1. ctrl +w,s:上下分
      2. ctrl +w,v:左右
      3. ctrl +w,c:合并窗口
      4. ctrl +w,箭头:窗口切换
    7. 将文件的一部分存为另一个文件:
      1. :1,100 w /path/to/file
    8. 将另一个文件内容填充到当前文件:
      1. :r /path/to/file
    9. 到shell中执行命令
      1. :!cmd
    10. 环境设置:
      1. :set number= set nu : set nonu
      2. set ic; set noic忽略大小写与否
      3. set autoindent= set ai; set noai
      4. syntax on syntax off
    11. 配置文件:
      1. 全局 : /etc/vimrc
      2. 用户:.vimrc
  3. 输入模式:

Shell basic2

条件判断
  1. 整数测试:
    1. [ $A -eq $B ] :$A $B 的前后都有空格。等值为真
    2. [ $A -ne $B ] :$A $B 的前后都有空格。不等值为真
    3. [ $A -gt $B ] : >
    4. [ $A -lt $B ] : <
    5. [ $A -ge $B ] : >=
    6. [ $A -le $B ] : <=
  2. 文件测试:
    1. [ -e file ]:测试文件是否存在
    2. [ -f file ]:是否普通文件
    3. [ -d file ]:是否设备文件
    4. [ -r file ]:是否对当前用户可读
    5. [ -w file ]:可写
    6. [ -x file ]:可执行
  3. 字符串测试:
    1. [ $A == $B ]:
    2. [ $A != $B ]:
  4. 命令间的逻辑关系:有命令A 与B ,当命令顺利执行;返回值为真,否则反之.
    1. 当 A 为真时 &&  执行B
      • 当A为假,命令终止。
    2. 当 A 为假时 ||  执行B
      • 当A为真是,命令终止。
    3. A && B || C : 如果A顺利执行,那么接下来执行B,否则执行C。
      • 如果A顺利执行,那么执行B,如果B顺利执行则命令终止。
      • 如果A顺利执行,那么执行B,如果B执行报错则执行C。
      • 如果A执行报错,跳过B,执行C。
  5. Shell中进行算术运算:注意$a+$b=a+b 是字符。
    1. let c=$a +$b
    2. c=$[$a+$b]
    3. c=$(($a+$b))
    4. c=`expr $a + $b`
  6. 选择结构
    1. 条件选择结构
      • case SWITCH in
      • value 1)
        • statement...
        • ;;
      • value 2)
        • statement...
        • ;;
      • *)
        • statement ...
        • ;;
      • esac
      • 例子:
      • case $1 in
      • [0-9])
        • echo "A digit";;
      • [a-z])
        • echo "lower";;
      • [A-Z])
        • echo "upper";;
      • *)
        • echo "special";;
      • esac
    2. 条件判断控制结构
      • if condition1; then
        • statement ...
      • elseif conditon2; then
        • statement ...
      • elseif ...
      • else
        • statement ...
      • fi
      • 例:特点:可以跟多参数,无文件创建文件,有则统计程序运行该文件次数。
          •   1 #! /bin/bash
          •   2 #
          •   3 declare -i line=0
          •   4 while [ "$1" != "" ]; do
          •   5 if [ -e $1 ]; then
          •   6         echo "I m $1,and I am alive"
          •   7         line=`wc -l $1| cut -d" " -f1`
          •   8         let line=$[ $line + 1 ]
          •   9         echo "$line">>$1
          •  10         echo "I am $1,and I am visited $line times"
          •  11     else
          •  12         touch $1
          •  13         echo "fiel $1 created"
          •  14 fi
          •  15 shift
          •  16 done
          •  17 exit 0
  7. 循环:
    1. for 循环
      • for 变量 in 循环;do
      • 循环体
      • done
    2. while循环
      • while 条件;do
      • 循环体
      • done

Shell basic1

查找:

  1. find:
    1. 实时查找,精确,速度慢,支持正则
    2. find 查找路径 查找标准 查到后处理动作
    3. 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕
    4. 匹配标准:
      1. -name 'filename' :精确匹配:通配:* ? []
      2. -iname 不区分大小写
      3. -regex pattern :使用正则表达式
      4. -user username:根据用户名查找
      5. -group
      6. -uid
      7. -gid
      8. -nouser
      9. -nogroup
      10. -type:
        1. f普通文件 : -type f
        2. d目录文件
        3. l链接文件
        4. c字符设备
        5. b块
        6. p管道
        7. s套接字
      11. -size:默认字节
        1. 【+|-】 # 【K|M|G】 
          • +10k 大于10k
          • -10k小于10k
          • 10k代表9k-10k之间的都显示
      12. 查看某段时间内改动创建的文件[+|-]# :+#至少#天;-#:#天内 ;#:#天
        1. -mtime内容改变
        2. -ctime权限属性改变
        3. -atime最后一次访问时间
        • find ./ -mtime -5 -name 'c'
      13. 权限匹配:
        1. find ./ -perm mode精确: find ./ -perm 664 
        2. find ./ -perm -mode只要有一项匹配即可
        3. find ./ -perm /mode mode以上才能匹配:755可以匹配644,750不可.

正则表达式:
  1. . 表示任意单个字符
  2. * 表示匹配前行字符任意次。
  3. \? 表示匹配前行字符0/1次:注意\ 是转义符。这个时候要和双引号一起使用。
  4. 位置锚定
    1. ^锚定行首: '^abc'
    2. $锚定行尾: 'abc$'
    3. ^$ 空白行
    4. \< 锚定单词的词头, 等价于\b: grep \<root\>
    5. \> 锚定单词的词尾,等价于\b
  5. 分组:为了实现后向引用。
    1. cat a|grep "\(l..e\b\).*\1r":把文件a里面的内容中love lover/like liker之类的行挑选出来。
  6. [] 匹配指定范围任意单个字符
    1. [^]取反
    2. [a-zA-Z0-9]
    3. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
  7. 扩展正则表达式中增加的功能:
    1. 次数:+:前行单字符出现至少一次。{m,n}前行单字符出现m到n次,含m,n。
    2. |:选择 grep -E "(C|c)at" :选出大小写的猫。
  8. grep的几个参数:
    1. -i 忽略大小写
    2. --color 加颜色
    3. -v 反向查找
    4. -o 只显示字符串
如何生成列表:

  1. {1..100}:自动展开成列表
  2. seq 5 10 序列:seq [起步 [步长]] [结束数]
  3. `ls /etc`

字符编辑:
  1. |:管道,前一个命令的输出作为后一个命令的输入
  2. 输入输出:
    • 0  标准输入
    • 1  标准输出
    • 2  错误输出
    • >  >>  覆盖输出和追加输出
    • <  <<  覆盖输入和追加输入
    • set -C 如果某个文件存在禁用>
    • >| 强制覆盖(当set -C时是不允许覆盖的)
    • set +C取消禁用
    • &> => + 2> 常用&>/dev/null
    • cmd [] []<< EOF    脚本中使用,用来解决脚本中运行交互式程序的问题。
    • EOF
  3. cat
    • -n显示行号, -E显示行结束符$
    • tac将cat的内容反写
  4. Less:翻页设置见Man。弱化的功能为more
  5. tail/head -n20 文件名
  6. cut -d: -f1 /etc/pasword 默认是空格
  7. tr 'ab' 'AB' < 文件名:针对单个字符操作。
    • tr -d 'ab' 碰到a和b就删除。
    • 'a-z' 'A-Z'转换大小写,'ab' 'cd' a换c,b换d
  8. sort 默认按ASCII码升序
    • sort -t: -k3 -n -r /etc/passwd|cut -d: -f3 
    • -f 忽略大小写
    • -u 相同的只显示一行
  9. Uniq:行必须相邻
    • -d 只会显示重复的行一次 /其它行不会显示
    • -D 重复的行全部显示/其它不重复行不显示
    • -c 在行首显示重复的次数/不可以和D共用
  10. wc :结果返回:行 字母数 字节数
    • -l行数 -w单词数 -c字节数 -m字符数 -L最长行的字符数
通用命令行命令:
  1. $# 传给脚本的参数数量
    $0 脚本本身的名字
    $1 传递给该shell脚本的第1个参数
    $2 传递给该shell脚本的第2个参数
    $@ 传给脚本的所有参数的列表
    $* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 脚本运行的当前进程ID号
    $? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功:exit n.
  2. 查看cmd本身信息:命令 cmd
    1. whatis:显示命令在Man的哪一个章节
    2. type:是否shell内置命令,如果不是,会显示cmd is 目录
    3. which:获取命令的目录。
  3. 系统环境设置:
    1. date; date +%s;
    2. clock
    3. hwclock -s; hwclock -w
    4. ls -i 文件 显示inode号
    5. ctl z送入后台并停止作业
    6. cmd [option] arg1 arg2 ...&:命令后台运行。
    7. bg:让后台停止的作业继续运行。
    8. jobs:查看后台所有的作业
    9. fg jobid:调回前台
  4. 命令和字符的转换
    1. ~: cd ~oracle
    2. -: cd -
    3. {}: touch {a, b, c, d}{m,n}会创建8个文件。
    4. ··:反引号,可以展开命令结果。
    5. ${}:括号内的命令执行结构也会被展开。也可以放入变量。不发生歧义情况下,可以省略{}.
    6. “”:双引号,在双引号中变量会展开为变量值
    7. ‘’:单引号,变量不会展开,只能作为字符。
    8. \:转义,会使特殊字符变成普通字符。
  5. 命令行编辑
    1. ctl a/e:光标快速到行首或行尾。
    2. ctl k/u:从光标处删除到行首/尾。
    3. ctl -> <-:跳跃单词
    4. ctl L:清屏
    5. !执行历史命令,!n执行第n行,!!执行上一条,!字符,给定字符最近一次。
    6. 命令别名:alias cmd='cmd [option1] [option2]'
  6. 文件名通配:
    1. *:任意长度任意字符
    2. ?:任意单字符
    3. []:制定范围内的任意单字符
    4. [a-zA-Z0-9]
    5. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
    6. 特殊字符集合中的任意一个需要加双中括号:[[:alnum:]]
  7. 超级常用命令:
    1. cp 源1 源2... 目的:不管源多少目的只有一个。
      • -p:保留属性(o和g不变,正常拷贝,og会变成使用拷贝的用户的)
      • -P:保持连接。拷贝链接本身,不过引用的路径只能是相对路径,如果链接自身位置变化,则链接会失效。
      • -R/r递归复制。
      • -f强制覆盖
      • -L对软链接拷贝时,拷贝的实际上是背后的文件。
      • -f强制覆盖
    2. mv 源1 源2 ...目的
      • mv -t target scorce
    3. install source ... target
      • install -d /dir :创建目录
      • install -t target source...
      • install 的文件自动有执行权限
Man 
  1. 8个章节
    1. 所有用户使用的命令
    2. 表示系统调用
    3. 库调用
    4. 特殊文件
    5. 文件格式
    6. 游戏
    7. 杂项
    8. 管理命令
  2. 格式说明
    1. []可省略
    2. |多选一
    3. <>必须给出
    4. ...可以多次出现
    5. Name:命令名称及功能的简要说明
    6. Synopsis:用法说明,包括可用选项
    7. Desc:详细说明
    8. Options:每个选项的意义
    9. Files:相关配置文件
    10. Bugs:
    11. Examples:使用示例
  3. Man的页面操作:
    1. 翻页:space下一页,b上一页
    2. 翻行:回车下一行,k上一行
    3. 查找:/keyword 前--->后
      • ?keyword 向前找
      • n向后找下一个
      • N向前找下一个
    4. 退出:Q/q

basic02

基本概念
  1. 变量:命名的内存空间。
    • Bash变量的类型
      1. 环境变量
      2. 本地(局部)变量
      3. 位置变量
      4. 特殊变量,内置也叫系统变量
  2. 内存:编址的存储单元
  3. 逻辑运算有4种:与,或,非,异或(其实就是+)
  4. 字符类型的隐式转换和显式转换。
  5. 终端类型:
    1. Console-直接连到服务器主机
    2. pty:物理终端(还没有用户时)很多时候等同于使用VGA
    3. tty:虚拟控制台,通常附着在物理终端上。通过软件模拟出来。
    4. ttys:串行终端,非常古老的终端,无需VGA。
    5. pts/#:伪终端,计算机模拟的终端。
  6. 随机数的生成方法:熵池,计算机任务人敲入键盘的间隔是随机的。所以熵池中的随机数是由键盘和其它的随机事件生成。生成随机数的软件从熵池中取随机数,如果随机数不够,计算机会让你继续敲击键盘以产生随机数。这个是由/dev/random产生,更安全。urandom则由软件模拟,更好用。
  7. 静态语言:编译型-使用编译器-强类型语言
    1. C
    2. C++
    3. Java
    4. C#
  8. 动态语言:解释型-使用解释器-弱类型语言
    1. ASP
    2. ASP.NET
    3. PHP
    4. SHELL
    5. PYTHON
    6. PERL
进程管理:
  1. 进程和内存的关系:线性内存--物理内存(内存映射表task struct)
    1. 内存分两段,用户空间和内核空间,用户只能访问自己的空间,内核可以访问全部内存。
    2. 进程如果直接访问内存会造成:内存的泄漏,内存溢出,内存碎片。
    3. 通过内核,将物理内存映射为虚拟内存(把内存封装)。每个进程只知道它自己和内核。
    4. MMU:内存管理单元是CPU中子芯片专门负责物理内存框和虚拟内存页的转换。
    5. 保存现场:有内核负责记录每个进程的退出状态以便下次加载。
    6. 环境切换:context switch
    7. 工作:由多个进程组成
    8. 进程:可以由多个线程组成
    9. 线程:同进程的线程之间可以共享内存和文件。
    10. 原语:在内核空间执行的特殊程序段
      1. 创建
      2. 撤销
      3. 阻塞
      4. 唤醒
    11. 进程创建:父进程创建子进程的系统调用:fork()
    12. 进程撤销:祖先进程撤销子进程的系统调用:exit()
    13. 僵尸进程:结束后不释放内存的进程。内存泄漏。
    14. 不可中断:在等待特定任务,如磁盘读写等待
    15. 可中断:事情完成的空闲状态,随时可以被唤醒
    16. 进程优先级:高0-139低,0-99内核,100-139用户控制.
    17. NIce值:-20~19值越小,优先越高。默认是0.
    18. 进程控制块:
      1. 进程名:
      2. 用户名和组名:控制对资源的访问。
      3. 家族关系:进程可以创建子进程,需要记录进程的家族位置。
      4. 进程当前状态
      5. 进程优先级
      6. 执行程序开始地址
      7. 各种计时信息:进程占用系统资源的情况
      8. 通信信息:进程间交换信息
      9. 占用内存大小及管理用数据结构指针
      10. 共享程序段大小及起始地址
      11. 输入输出设备号。
      12. 指向文件系统的指针和有关标志。
      13. 进程上下文:是进程的静态描述
        1. 上文:已执行过的进程指令和数据在相关寄存器和stack中的内容
        2. 正文:正在执行的指令和数据
        3. 下文:带执行指令和数据
      14. 进程状态:执行,就绪,等待
软件包管理:应用程序和底层的cpu架构有非常大的关系
  1. C语言--源代码--编译成--二进制文件
  2. 脚本:解释器转换为二进制文件
  3. 源代码-编译-链接(静态库和动态库)-运行
  4. 程序包的命名:名称-版本-发行号-架构-rpm
    1. 主版本号:重大改进
    2. 次版本号:子功能改进
    3. 发现号:修正bug
    4. 架构:x86_64   i686  no.arch(平台无关)
  5. 静态库:被编译进程序本身
  6. 动态库:只有一个指针,需要时被调用出来编译执行,使用动态库的软件移植性差。
  7. 程序的组成部分:
    1. 二进制程序
    2. 库(如glibc核心库)
    3. 配置文件
    4. 帮助文件
  8. 程序包之间的依赖关系:x--> y-->z-->x
  9. Linux 安装软件包的工具:
    1. yum install自动分析依赖关系,下载并安装程序,使用repo文件定义安装源。
    2. rpm 可以查询安装卸载升级。
    3. Make安装3步骤:
      1. 运行软件包的配置文件。/configure
      2. make
      3. make install
程序结构控制:

  1. 循环结构1:repeat 动作until条件
  2. 循环结构2:for x在y内的值,循环动作
  3. 循环结构3:while 条件do
  4. 选择结构:if 条件 then 动作 elseif 条件 then 动作 else 动作 fi
  5. 流程:命令堆积。

Bash的特点
  1. 用户登录后启动bash,图形界面其实调用的也是bash。
  2. 每个进程只能看到内核和自己。
  3. 允许用户多次登录,迭代登录。
  4. 支持命令历史,管道,别名,命令行编辑,命令行展开,文件名通配,使用变量。
  5. 区分大小写,命令多为小写字母。
  6. 文件名长度不得超过255,不可以以/为文件名。

basic01

CPU:

  • CPU的功能:
    1. 存取数据 (通过enable/set线)
    2. 加法
    3. 比较(通过4根flag信号线将信号存入寄存器)
    4. 跳转(跳转直接跳到内存中的某个地址读入下一条指令)
    5. 数据输入输出磁盘/网络/显示屏等设备(IN / OUT)
  • 对于外部程序CPU等待机制:
    1. Poll巡检,每隔一段时间CPU过了看一下。
    2. Interrupt,程序有输入直接告诉CPU现在有事情做,CPU再给予反应。
  • CPU的Ring:
    1. 一般内核运行在ring 0,也称为内核模式和内核空间。
    2. 用户程序运行在ring 3,也称用户模式和用户空间。
    3. CPU不直接访问硬盘,数据先到内存。内存空间以page分割,每个page通常4k。
磁盘以及之上的文件系统:可以永久保存数据
  • 磁盘的构成
    1. 扇区sector,一个扇区一般是512字节,是机器能操作的最小单位所以操作系统的最小块一定是扇区的倍数。
    2. 磁道:硬盘由多个盘片组成,每个盘片有双盘面,每个盘面上有数万磁道。
    3. 寻道速度:磁臂转到特点磁道时间(17微秒横扫盘面)+等待盘面自传时间(10微秒左右,1微秒=千分之一秒)。磁臂加速需要1微秒,扫过一个磁道大概0.02微秒。
  • 磁盘的开头部分
    1. 每个硬盘的0磁道0扇区有512字节直接划分给MBR
    2. 前面446个字节放boot loader引导程序
    3. 中间64字节表示一个分区,总共只能表示4个分区,所以,只能有4个主分区。第4个分区可以放入一个指向扩展分区的指针。这样可以实现大于4个的分区规划,具体为3+n模式,n为扩展分区的个数。
    4. 最后两位放的是magic number,标记MBR是否有效。
  • 磁盘上面的文件系统:是一个软件,本身不在分区上。
    1. 文件系统不在分区上,它把分区分为元数据区和数据存储区。
    2. 存储区以存储块为逻辑基本单位。
    3. 元数据区的BITMAP显示块文件是否被占用。
    4. 元数据区本身的数据也需要编目,数据随着文件系统变化而变化,需要快速定位,所以元数据区还有一张位图用于标记自身的块文件的使用情况。
    5. 元数据区的管理:超级块 ---块组---位图,inodes。
    6. 文件系统示例:FACT36,NTFS,ISO9660,CIFS,EXT2,EXT3,EXT4,XFS,REISERFS,JFS,JFS2,NFS,OCFS,OCFS2,GFS2,SWAP
    7. LINUX文件系统的重要思想:目录和目录下的内容是互相独立的。访问任何一个分区必须从根开始。
    8. 超级块包括文件系统的总体信息,比如大小(其准确信息依赖文件系统)。超级块在不同分区上可以有多个备份,不过不一定是每个分区有一个,有可能是每1,3,5存一个。超级块的内容包括:有多少块组blockgroup,每个bg多少块,块大小(全局),空闲块和已用块,空闲和已用inode。
  • INODE:包括除了名字外的一个文件的所有信息
    1. INODE的内容:inode 号码,属主和属组,权限,时间戳,大小,硬盘号。(注意没有文件名)
    2. 每个inode有多级目录用于指向磁盘块,层级有限,所以文件的最大大小有限。对于FAT32的文件系统,最大文件大小为4G。如果需要更多,会动态分配指向数据块的指针空间,这些动态分配的块是间接块
    3. inode+磁盘块=文件


  • 根目录和目录
    1. 目录在linux中也是文件。具体的说它是一张表,表上列有inode号和对应的子目录或目录中文件。inode1  --  文件1, inode2 --  文件2...
    2. 根目录是自引用
    3. 如何找文件:
      1. 从根开始,找到根目录表,通过表上的文件名找到对应的inode再到文件名所在的硬盘。
      2. 如果文件名是目录,重复1的后半步过程,如果是文件则读取文件。
      3. 读取过的文件的路径会被系统缓存,形成一个hashkey,下次敲入路径可以直接得到对应的地址。
    4. 在目录下建新文件:
      1. 扫描inode bitmap找到空闲的inode,并且占用:在目录上添加inode--文件名
      2. 扫描块位图,分配8个磁盘块的空间,存数据,再把磁盘块还给空间。
    5. 删除文件:
      1. 将目录文件映射表上的条目删除。
      2. 将inode号在inode位图中标为空。
      3. 将块位图标为空。
    6. 复制和剪切:
      1. 本分区剪切时,数据块不变,只变化目录文件的条目位置。
    7. 链接文件
      1. 硬链接:两个目录同时指向一个inode。硬链接次数:目录为2普通文件为1。
        1. 只能对文件创建,不能对目录。
        2. 不能跨文件系统。
        3. 创建硬链接会增加文件被链接次数。
      2. 软链接:又叫符号链接,找到这个软链接的inode时,inode里面并非存储块地址,而是真实的路径。所以软链接的大小就是路径的字节大小。
        1. 可以用在目录上,因为软链接本质上就是一个目录。
        2. 可以跨文件系统。
        3. 不会增加文件被链接次数。
        4. 大小为真实路径的字符个数。
  • 设备文件
    1. b:以块为单位,随机访问:硬盘,内存等
    2. c:以字符为单位,线性访问:键盘鼠标显示器等。
    3. 主设备号:标记设备类型
    4. 次设备号:同设备类型的不同设备
    5. 创建方式:mknod [option][ name][type][major minor]; -m 制定权限 
      • mknod -m 640 /dev/mydev c 66 1
    6. 查看当前终端设备输入: tty
  • 格式化
    1. 低格-创建磁道
    2. 高格-创建文件系统
  • 磁盘阵列:
    1. 几种基本磁盘:
      1. IDE:并行,133Mbps
      2. SATA:串行,300-600Mbps,6Gbps
      3. USB3:串行,480Mbps
      4. SCSI:并行,内部有小cpu,另外转速快(10000,15000)320Mbps
    2. Raid构成:主板-RAID控制器-分口设备-硬盘s
      1. Raid 0:条带
      2. Raid 1:镜像
      3. Raid 5:校验码模式
      4. Raid 6:海明码校验并自动纠错模式。
      5. Raid 0+1:先条带,再把条带磁盘组镜像。
      6. Raid 1+0:先镜像,后把镜像磁盘组条带化。
      7. scsi硬盘的分口设备:窄口:8口,7个target。宽口:16口,15个target。除了target的剩余口叫做initiator。可以针对每一个口加以扩展。
网络配置:以太网是1970年代由施乐公司发明,并且免费供全世界使用。信号是电磁信号。
  • CSMA/CD:载波侦听多路访问冲突检测协议,这个是以太网使用的协议。
    1. Carrier Sense:当一个设备连到以太网时,首先检查载体是否存在。早期使用同轴电缆(copper cable)速度大概是10mbps,相当于10/8=1.25m/s
    2. Multiple Access:以太网的各个设备都可以使用以太网,只要没有其它设备在用。
    3. Collision Detection:确认设备使用同一条同轴电缆而避免冲突或冲突之后如何重新开始的机制。
  • IBM的带token的机制,图中蓝色小点为token,因为专利保护,使用的人很少。
    1. 首先1捕获token,然后将信号连token放出网络,依次路过各台主机。
    2. 各主机确认是否发给自己的,不是就又放回网络走下一台。
    3. 如此反复到目的主机,目的主机(变紫色)收到信息,并写好确认frame送回网络
    4. 主机1收到确认,结束通信释放token。
  • 使用HUB:现在不常用了,不过明白hub的原理利于解释hub和switch的不同。
    1. 利用hub来集中管理冲突
    2. 当一个节点坏掉,整个网络还在。
  • Switch:也就是网桥/交换机。解决信道争用。
    1. 用双绞线,全双工,8根线只有两根是有效的,其它用于抗干扰。
    2. 通信机制:
      1. 要发信息的主机首先广播,全网主机收到信号。
      2. 目标机器收到广播信号后回复
      3. 两台机器建立通信
      4. 广播不会跨越交换机到另外一个网络。
      5. 网络内部信息的交互是通过MAC地址(media access Control)实现。
  • Router:路由器:如果网桥的机器太多,则广播的信号就太多。用路由器可以隔离广播。
    1. 网关:跨路由的不是MAC地址而是IP地址,路由上设置网关,为该段第一个IP。
    2. 广播:该网段的最后一个IP(全1位)为广播地址。
    3. 子网掩码:网段全为1,主机全为0。IP地址和子网掩码相与得网域。
  • 信息传递过程:主机A(IPA: 1.2)要发到主机B(IPB: 2.5)
    1. 首先广播,发现主机B不在同一网络,取得路由AMAC地址信息:MRA
    2. 将数据打包为:|数据|IPA: 1.2| IPB: 2.5 |MA|MRA| 发给路由A。路由A收到后将MRA拆掉。
    3. 路由A根据IP得到下一站的MAC地址将数据打包为:|数据|IPA: 1.2| IPB: 2.5 |MRA|MRB|
    4. 路由B收到数据包将MRA拆掉,换成主机B的地址:|IPA: 1.2| IPB: 2.5 |MRB|MB|
    5. 主机B收到以后即将数据包拆封先拆MAC后拆IP,读入数据。
  • 网络路由系统:
    1. 路由表格式:网络1 -- R1
    2. 在Switch上可以填MAC地址
    3. 路由可以通过协议学习,每个路由向外广播自己,路由之间相互广播自己可以达到的IP段,互相加入自己的表。
    4. IP--主机 to 主机
    5. MAC:本网设备通信
    6. 端口:区分同一主机的不同进程(0-65535)
    7. 数据构成格式:|数据|端口|IP|MAC|从后往前拆解。
    8. 套接字:IP和端口的绑定组合叫套接字。
  • IP系统:n:表示网络,h表示主机,x表示未指定。

        • Class A
        •     0.    0.    0.    0 = 00000000.00000000.00000000.00000000
        • 127.255.255.255 = 01111111.11111111.11111111.11111111
        •                                0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh
        • Class B
        • 128.    0.    0.    0 = 10000000.00000000.00000000.00000000
        • 191.255.255.255 = 10111111.11111111.11111111.11111111
        •                                10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh
        • Class C
        • 192.    0.    0.    0 = 11000000.00000000.00000000.00000000
        • 223.255.255.255 = 11011111.11111111.11111111.11111111
        •                                110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh

        • Class D
        • 224.   0.     0.    0 = 11100000.00000000.00000000.00000000
        • 239.255.255.255 = 11101111.11111111.11111111.11111111
        •                                1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

        • Class E
        • 240.    0.    0.    0 = 11110000.00000000.00000000.00000000
        • 255.255.255.255 = 11111111.11111111.11111111.11111111
        •                                1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
    • TCP  UDP IP
      1. TCP:3次握手:通知对方要发送,发送,确认。
      2. UDP:发出去以后不确认,如电话。
      3. TCP 头部示意图
      1. IPv4头部示意图
    • 网络和系统结构图:
      • 资源子网:HTTP | DNS | FTP | ......|IMAP|
      • 通信子网:TCP / UDP 协议
          • IP
          • 以太网 | PPP | ATM
      • xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      • 用户空间:命令---------------------------------> 内存
      •                       |                                      |
      • 内核空间:网络|文件系统|TCPIP----> 配置文件

                                                  cpu map

                                                  1.CPU的整体架构:
                                                   2.从CPU向内存
                                                   3.CPU和内存的关系图
                                                   4.CPU指令集
                                                   5.A+B
                                                   6.结果输入寄存器
                                                   7.寄存器中的临时存储,用来暂存B
                                                   8.将B传入寄存器
                                                   9.A会一直在CPU bus里面直到命令结束。
                                                   10.Flag有4根线,1,A比B大,2相等,如果1/2无信号则代表小于
                                                   11.相等是结合指令jump if就会出现jump,jump就把新的指令从内存导入cpu。
                                                   12.整个CPU的构架,左边链接I/O,上面连接地址线,下边连着内存空间。中右是控制线。

                                                  OGG err

                                                  1.ERROR OGG-00423 Could not find definition 

                                                  In the Replicat param Please try ASSUMETARGETDEFS , if source and target have same table structure.. 
                                                  if both the structures are different , generate the source definition and use SOURCEDEFS in Replicate Param.

                                                  OGG Sybase reset script

                                                  开关vim的行号:set {nonu | nu}
                                                  1.Sybase作为源端的重置脚本
                                                  #!/bin/sh
                                                  # Use to reset source OGG setting

                                                  export OGG_HOME=/home/sybase/ggs
                                                  cd $OGG_HOME
                                                  ./ggsci <<EOF
                                                  Start Manager
                                                  dblogin sourcedb pubs2@ASE1 userid ogguser password ogguser
                                                  delete extract emaster
                                                  delete extract pmaster
                                                  stop ER *
                                                  delete ER * !
                                                  stop Manager !
                                                  Exit
                                                  EOF
                                                  sleep 2
                                                  rm ./dirdat/*
                                                  rm ./dirrpt/*
                                                  rm ./dirsql/*
                                                  rm ./dirout/*
                                                  sleep 5

                                                  2. Oracle作为目标端的重置脚本


                                                  sybase建库

                                                  sybase创建用户数据库的脚本。
                                                  $ isql -Usa -P111111 -SASE1
                                                  1> use master
                                                  2> go
                                                  创建数据设备
                                                  1> disk init
                                                  2> name='dbname_data1',
                                                  3> physname= '/opt/sybase/data/dbname_data1.dat’,
                                                  4> size=’300M’,
                                                  5> dsync=true
                                                  6> go
                                                  创建日志设备
                                                  1> disk init
                                                  2> name=’dbname_log’,
                                                  3> physname=’/opt/sybase/data/dbname_log.dat’,
                                                  4> size=’300M’,
                                                  5> dsync=true
                                                  6> go
                                                  创建数据库
                                                  1> create database dbname on dbname_data1=’300M’ log on dbname_log=’300M’
                                                  2> go
                                                  新增用户
                                                  1> sp_addlogin ’shen’,’shen’,'dbname’
                                                  2> go
                                                  将用户添加到新建数据库
                                                  1> use dbname
                                                  2> go
                                                  1> sp_adduser ’shenbao’
                                                  2> go
                                                  1> grant create table, create view, create procedure to shenbao
                                                  2> go
                                                  增加临时数据库空间
                                                  1> use master
                                                  2> go
                                                  1> disk init
                                                  2> name=’tempdb1′,
                                                  3> physname=’/opt/sybase/data/tempdb1.dat’,
                                                  4> size=’300M’,
                                                  5> dsync=true
                                                  6> go
                                                  1> alter database tempdb on tempdb1=’300M’
                                                  2> go
                                                  设置数据库选项
                                                  1> use master
                                                  2> go
                                                  1> sp_dboption dbname, ‘ddl in tran’,true
                                                  2> go
                                                  1> use dbname
                                                  2> go
                                                  1> checkpoint
                                                  2> go

                                                  Sybase 命令集合

                                                  二、启动和关闭数据库,查看表结构
                                                  1.看所有的库
                                                  sp_helpdb
                                                  go

                                                  2.使用一个库

                                                  use 库名(注意大小写)
                                                  go
                                                  select name from sysobjects where type = 'U'
                                                  go

                                                  3.查看用户下所有表名

                                                  select name from sysobjects where type='U'

                                                  sp_tables
                                                  go

                                                  4.查看表结构

                                                  sp_help 表名(注意大小写)
                                                  go

                                                  5.显示结果只显示一行

                                                  set rowcount 1
                                                  go
                                                  输入你想查询的sql语句,记得最后要
                                                  set rowcount 0
                                                  go

                                                  6.启动数据库

                                                  $ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1
                                                  $ startserver -f $SYBASE/$SYBASE_ASE/install/RUN_ASE1_BS

                                                  7.关闭数据库

                                                  先要看启动了什么服务
                                                  1> select srvname from sysservers
                                                  2> go
                                                   srvname                        
                                                   ------------------------------ 
                                                   SYB_BACKUP                     
                                                   loopback                       
                                                   rosanljw_BS                    
                                                   rosantech                      

                                                  (4 rows affected)


                                                  关闭备份服务

                                                  1> shutdown SYB_BACKUP
                                                  2> go

                                                  关闭

                                                  1> shutdown 
                                                  2> go

                                                  如果关不上

                                                  1> sp_lock
                                                  2> go
                                                  The class column will display the cursor name for locks associated with a cursor
                                                  for the current user and the cursor id for other users.
                                                   fid    spid   loid        locktype                     table_id    page       
                                                           row    dbname          class                         
                                                           context                      
                                                   ------ ------ ----------- ---------------------------- ----------- -----------
                                                           ------ --------------- ------------------------------
                                                           ---------------------------- 
                                                        0     57         114 Sh_intent                       32000114           0
                                                                0 master          Non Cursor Lock               
                                                  (1 row affected)
                                                  (return status = 0)
                                                  1> kill 57(spid只可以杀除自己会话以外的会话) 杀掉再shutdown就好了 

                                                  !!!如果关不动,可以用以下命令,慎用

                                                  shutdown with nowait

                                                  三、dml和ddl
                                                  1.建表
                                                  use test
                                                  go

                                                  create table table1

                                                  (test varchar(10))
                                                  go

                                                  --仿照table1建立table2

                                                  select * from table1 into table2
                                                  go
                                                  --------------------------------------------------------------------------------------

                                                  --如果不能仿照需要修改一些参数

                                                  sp_helpdb db_name    --查看SELECT into选项是否开启,没开需要手动开启
                                                  go

                                                  use master
                                                  go

                                                  sp_dboption test,'select into',true        --(test为db_name)

                                                  go

                                                  checkpoint

                                                  go

                                                  use test

                                                  go

                                                  select * from table1 into table2

                                                  go

                                                  四、用户管理

                                                  1.创建登陆用户(login)
                                                  1> sp_addlogin loginname,password,defualt_database
                                                  2> go
                                                  Password correctly set.
                                                  Account unlocked.
                                                  New login created.
                                                  (return status = 0)

                                                  2.删除登陆用户(login)

                                                  1> sp_droplogin loginname
                                                  2> go

                                                  3.创建数据库用户(user)

                                                  1> sp_adduser username
                                                  2> go
                                                  New user added.
                                                  (return status = 0)

                                                  4.删除数据库用户(user)

                                                  1> sp_dropuser username
                                                  2> go
                                                  sybase数据库的用户,包含两个层面:一个是登陆号,另一个是具体DB的用户,我们登陆时,使用的是登录号,但是这个登录号可以操作哪些DB及操作权限则取决于数据库用户。一般情况下,我们可以采取相同的名字来表示登录号和数据库用户。
                                                  首先创建一个登陆号:
                                                  sp_addlogin loginame, passwd 
                                                  loginame 登录名
                                                  passwd 密码
                                                  全部语法(一般不用到)为:
                                                  sp_addlogin loginame, passwd [, defdb][, deflanguage ] [, fullname ] [, passwdexp ][, minpwdlen ] [, maxfailedlogins ]
                                                  然后创建用户:
                                                  sp_adduser loginame
                                                  这样创建当前数据库的用户,且用户名和登陆名是一样的。
                                                  全部语法为:
                                                  [dbname..]sp_adduser loginame [, username[, grpname]]
                                                  最后分配权限:
                                                  grant all | select,insert,delete,update on table_name | view_name | stored_procedure_name to username

                                                  grant all | create database,create default,create procedure,create rule,create table,create view,set proxy,set session authorizationto username
                                                  例,假如当前DB为:DB001:
                                                  sp_addlogin 'test001','password001'
                                                  go
                                                  sp_adduser 'test001', 'user001'
                                                  go
                                                  grant create table to user001
                                                  go
                                                  创建了一个test001的登录名,之后为之创建一个当前数据库的用户,使这个登录名可以操作当前数据库。之后分配了创建表的权限给user001。
                                                  这个时候你就可以使用用户名'test001'和密码'password001'登陆了,并且可以在DB001中创建表了。同时由于sp_adduser 的时候没有指定grpname参数,那么默认是public用户组,这个组里的用户默认即开通了select/delete/update/insert的权限。
                                                  如果你希望去掉一些权限,请使用revoke命令,其语法了grant完全相同,你只需要将grant换成revoke即可,例:
                                                  revoke select on address to user001
                                                  禁止user001查看address表。
                                                  五、sybase ASE参数配置
                                                  (1)服务器级配置
                                                  使用存储过程sp_configure配置ASE (和oracle的show parameter很像)
                                                  1. 语法
                                                  sp_configure [configname[, configvalue] | group_name | non_unique_parameter_fragment]
                                                  2. 作用
                                                  查询服务器运行的当前值
                                                  设置服务器运行参数

                                                  用 "sp_configure mem" 可以查看带有mem关键字的参数的具体配置,然后用 "sp_configure 参数, 值" 来配置新


                                                  例1. 配置内存
                                                  1)数据库使用内存
                                                  指定ASE拥有的总的共享内存大小
                                                  sp_configure“max memory”,nnn(单位为2K)( HP平台推荐物理内存的75%,其他平台80%)
                                                  sp_configure‘allocate max shared mem’,1(数据库服务启动时就分配内存)(推荐为1)
                                                  2)配置缺省数据缓存的大小和分区
                                                  sp_cacheconfig‘default data cache’,’xxxM’
                                                  sp_cacheconfig‘default data cache’,’cache_partition=n’
                                                  (根据CPU个数以及内存大小确定,需为2的N次方)
                                                  3)配置存储过程的缓存大小
                                                  sp_configure“procedure cache size”,nnn(单位为2K)

                                                  例2. 配置CPU

                                                  sp_configure‘max online engines’,n(cpu个数> 2时推荐CPU数目减1)
                                                  sp_configure‘number of engines at startup’,n
                                                  3. 其他
                                                  1). number of devices (用户自己确定)
                                                  指定ASE的可创建和打开的数据库设备的最大号数
                                                  2). number of locks (用户自己确定)
                                                  指定ASE可同时打开的锁的最大数目
                                                  3). number of open objects (推荐8000-20000)
                                                  ASE的对象描述的缓存数
                                                  4)number of open indexes (推荐2000-5000)
                                                  ASE的索引描述的缓存数
                                                  5) stack size (如果有超长SQL和多层嵌套,推荐*2)
                                                  数据库堆栈的大小
                                                  6). default character set id(推荐使用cp936 –id 171)
                                                  数据库服务器使用的字符集
                                                  7). allow updates to system tables
                                                  指定系统管理员是否可以更改系统表中的数据
                                                  8)row lock promotion HWM,row lock promotion LWM
                                                  行锁升级为表锁的阀值
                                                  9)page lock promotion HWM,page lock promotion LWM
                                                  页锁升级为表锁的阀值
                                                  10) lock scheme
                                                  缺省的对表加的锁类型(缺省为页锁)

                                                  (2)数据库级配置

                                                  使用存储过程sp_dboption更改数据库的数据库选项
                                                  1. 语法sp_dboption[dbname, optname, {true | false}]
                                                  2. 作用
                                                  罗列出所有的数据库选项
                                                  更改某个数据库的数据库选项
                                                  3. 常见的数据库选项
                                                  trunclog on chkpt自动清日志(不能再做增量备份)
                                                  select into/bulkcopy允许快速BCP,selectinto
                                                  ddlin tran允许事务中创建对象

                                                  修改完成以后可以通过sp_helpdb查看到


                                                  例子:

                                                  1> use master
                                                  2> go

                                                  1> sp_dboptionuserdb, "trunclog on chkpt", true

                                                  2> go
                                                  数据库‘userdb'的数据库选项'trunclog on chkpt'被打开。
                                                  在被改变数据库中运行CHECKPOINT命令。
                                                  (return status = 0)

                                                  1> use userdb

                                                  2> go
                                                  1> checkpoint
                                                  2> go

                                                  六、修改字符集为中文
                                                  1.先进入到中文字符集的目录,把中文加载一下
                                                  [sybase@rosan128main cp936]$ pwd
                                                  /opt/sybase/charsets/cp936

                                                  [sybase@rosan128main cp936]$ charset -Usa binary.srt cp936

                                                  Please enter sa's Password: 
                                                  Loading file 'binary.srt'.

                                                  Found a [sortorder] section.


                                                  This is Class-1 sort order.


                                                  Finished loading the Character Set Definition.


                                                  Finished loading file 'binary.srt'.


                                                  1 sort order loaded successfully


                                                  2. 修改默认字符集为中文

                                                  首先查一下默认的中文字符集的id
                                                  1> select name ,id from syscharsets where name='cp936'
                                                  2> go
                                                   name                           id
                                                   ------------------------------ ---
                                                   cp936                          171

                                                  查出id为171,最后修改字符集

                                                  1> sp_configure "default character set id",171
                                                  2> go
                                                  In changing the default sort order, you have also reconfigured SQL Server's
                                                  default character set.
                                                   Parameter Name                 Default     Memory Used Config Value
                                                           Run Value   Unit                 Type
                                                   ------------------------------ ----------- ----------- ------------
                                                           ----------- -------------------- ----------
                                                   default character set id                 1           0         171
                                                                     1 id                   static

                                                  (1 row affected)

                                                  Configuration option changed. Since the option is static, Adaptive Server must
                                                  be rebooted in order for the change to take effect.
                                                  Changing the value of 'default character set id' to '171' increases the amount
                                                  of memory ASE uses by 4 K.
                                                  (return status = 0)

                                                  最后重启数据库使参数生效


                                                  七、查看数据库信息

                                                  sp_helpdb        --(查看所有数据库信息)
                                                  go
                                                  use test
                                                  go
                                                  sp_helpdbtest         --(查看test数据库详细信息)
                                                  go

                                                  八、查看ASE的远程服务器

                                                  sp_helpserver
                                                  go

                                                  九、查看数据库对象的信息

                                                  sp_help            --数据库对象名字
                                                  sp_helpdevice        --设备名字
                                                  sp_helpdb
                                                  sp_helptext        --存储过程名字
                                                  sp_spaceused         --查看一个当前库(需要use 数据库)或表占所占用的空间
                                                  sp_recompile (+usertable)    --重新编译存储过程和触发器。与该表相关联的存储过程和触发器在第一次运行时,自动重新编译


                                                  十、常用dbcc命令

                                                  dbcctraceon(3604)                     --(随后的dbcc命令结果输出到屏幕)
                                                  dbcctraceon(3605)                     --(随后的dbcc命令结果输出到错误日志文件)
                                                  dbcccheckalloc[ (database_name[, fix | nofix] ) ]     --(检查分配页)
                                                  dbcccheckcatalog[ (database_name) ]             --(检查系统表)
                                                  dbcccheckdb[ (database_name[, skip_ncindex] ) ]     --(检查数据库)
                                                  dbccchecktable( { table_name| table_id}         --(检查表)
                                                  [, skip_ncindex] )
                                                  dbcctablealloc( { table_name| table_id}         --(检查表分配页)
                                                  [, { full | optimized | fast | null }
                                                  [, fix | nofix] ] ) |


                                                  十一、常用系统表

                                                  sysdatabases        --记录所有数据库基本信息
                                                  sysusages        --数据库空间分配情况
                                                  sysdevices        --数据库设备信息
                                                  syslogins        --数据库服务器登录信息
                                                  sysusers        --数据库用户信息
                                                  sysobjects        --数据库对象表(U 用户表,P 存储过程)
                                                  sysprocesses        --进程表


                                                  十二、日常常规维护(性能优化)

                                                  1.更新统计信息
                                                  update statistics (+usertable)    --不会对表上锁,不影响业务,但比较耗资源 (optdiag)

                                                  2.整理数据库垃圾空间

                                                  重建表的聚簇索引
                                                  对行锁表执行reorg
                                                  如何加快上述操作 (配置I/O,并行)
                                                  注意:以上操作对表上锁,另外,必须有足够的空间来执行(剩余空间必须为最大表的1.2倍左右) (sp_spaceusedusertable)

                                                  3.重新编译存储过程和触发器

                                                  sp_recompile (+usertable)    --与该表相关联的存储过程和触发器在第一次运行时,自动重新编译


                                                  十三、备份和恢复

                                                  系统管理员每天必须作数据库的备份

                                                  备份的命令

                                                  1.全库备份
                                                  dump database userdb to stripe_device1 
                                                  stripe on stripe_device2

                                                  2.增量备份并删除日志

                                                  dump transaction userdb to stripe_device

                                                  3.仅删除日志(没有备份)

                                                  dump transaction userdb with truncate_only

                                                  4、日志满且truncate_only无法删除日志时

                                                  dump transaction userdb with no_log(慎用)


                                                  恢复的命令

                                                  1. load database database_name from stripe_device
                                                  恢复整个数据库

                                                  2. load transaction database_name from stripe_device

                                                  恢复日志


                                                  十四、几个常用的存储过程和命令

                                                  sp_who            (查看用户进程)
                                                  sp_lock            (查看数据库锁状况)
                                                  sp_help            (查看对象信息)
                                                  sp_helpdb        (查看数据库信息)
                                                  sp_helpdevice        (查看设备信息)
                                                  sp_spaceused        (查看表占用的空间大小)
                                                  select @@version    (查看版本号)
                                                  dbcc sqltext(@spid)    (查看@spid执行的sql语句)
                                                  sp_showplan @spid,null,null,null        (查看@spid的执行计划)


                                                  ================================================================================================

                                                  ************************************************************************************************
                                                  ================================================================================================
                                                  修改server启动地址及端口:dscp

                                                  $dscp

                                                  >> open
                                                  ok
                                                  Session 1 InterfacesDriver>> add test
                                                  Service: [ASE]
                                                  Transport Type: [tcp]
                                                  Transport Address: 158.77.123.200 5000   --注意端口号和ip地址之间用空格分开
                                                  Transport Type: [tcp]
                                                  Transport Address:
                                                  Security Mechanism [] :
                                                  HA Failoverserver:
                                                  Retry Count:
                                                  Retry Delay:
                                                  Added test

                                                  >> exit


                                                  退出后查看 $SYBASE/interfaces 能看到添加到信息


                                                  dscp一些基本操作命令

                                                  help    查看帮助
                                                  list    显示所有的服务名
                                                  read    看具体配置
                                                  add    加一个新的
                                                  del    删除已有的
                                                  mod    修改已有的

                                                  一、SQL Advantage使用

                                                  先点击server,里面点击connect连接到sybase服务端,开一个新窗口,写一些sql执行即可(ctrl+e)