Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57703
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 252
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-11 14:27
文章分类

全部博文(20)

文章存档

2014年(20)

我的朋友

分类: LINUX

2014-11-13 16:00:32

11/3

dmesg  显示开机信息
        :    dmesg [-cn][-s <缓冲区大小>]
        kernel 会将开机信息存储在ring buffer中,开机信息也保存在/var/log目录中
        名称为dmesg的文件里
        参数:
            -c 显示信息后,清楚ring buffer中的内容
            -s<缓冲区大小> 预设置为8196,刚好等于ring buffer的大小
            -n  设置记录信息的层级
        详细:dmesg用来显示内核缓冲区(kernel-ring buffer)内容,内核将各种消息
                存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填
                到这个缓冲区。内核缓冲区中的消息对于诊断系统问题一般很有用。在
                运行dmesg时,它显示大量信息。一般通过less或grep使用管道查看信息

    对于挂载的磁盘,之前一直想不通为什么df 只能显示一部分的磁盘,今天挂载了
        磁盘之后才发现,原来只有格式化后并挂载的磁盘才能用df显示


11/4

    blkid
        对于服务器来说,有时候会为了更换磁盘而导致原来的磁盘标符错乱(就是原来的sdb成了
            sdc)这时候就需要用到 UUID,可通过blkid命令获取各分区的UUID
            如果格式化的时候指定了LABEL 则该命令也会显示LABEL,也会显示相应的文件系统类型
            
    对于启动自动挂载分区,有两种方法:
        一种是 在/etc/fstab中输入
            UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7              /newdir                 ext4            defaults        0 0
        另一种 把挂载命令写到 /etc/rc.d/rc.local 文件中去,输入到最后一行

    umount 卸载挂载的分区、挂载点
            后面可以跟挂载点,也可跟分区名(/dev/hdb1),不可跟LABEL和UUID
            当遇到不能卸载的挂载点,并提示 
            umount: /newdir: device is busy.
            可加上 选项“-l”

        swap 交换分区
            类似与windows的虚拟内存,大小一般为内存的2倍大小
            增加思路:建立swapfile -格式化为swap格式 -启用该虚拟磁盘

            free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)
            和内核缓冲区内存   -m 显示内存的单位为M

    磁盘配额
                 quota在实际中是针对于整个分区进行限制的
                    quotaon启动
                     quotaoff 关闭全部的quota
        
    shell  作业控制
        当运行一个进程时,暂停(Ctrl+z),使用fg命令恢复,利用bg命令使他到后台运行,
            终止 ctrl+c
            再次使其暂停,输入 jobs,可看到在被暂停或者在后台运行的服务的任务

        对于多个被暂停的任务会有编号,使用jobs命令可以看到两个任务
            [root@k2 ~]# jobs
                [1]-  Stopped                 vi test4.txt
                [2]+  Stopped                 vi test4.txt
            那么使用bg或者fg的时候,要在后面加上相应的编号
            对于丢在后台的任务,如没退出刚才的shell,那么可用(fg 编号)
            调到前台,然后 ctrl+c 结束任务
     
            另一种情况,关闭当前的shell,再次打开一个shell时,使用jobs命令并不显示
            在后台运行或者被暂停的任务,要想停掉它的话,则需要先知道其pid,再kill


        变量
            # env   查看系统预设的环境变量  (不同的用户,显示的内容也会不一样)
            # set    不仅可以显示系统预设的变量,也可以连同用户自定义的变量显示出来

        使系统内所有用户登录都使用相同的变量
               需要在“/etc/profile"文件最末行加入 export myname=Aming 然后运行
                source  /etc/profile 就可以生效。再运行bash 或su - test 账户就可以看到效果
        只想让当前用户使用该变量
                需在用户主目录下的 .bashrc 文件最后一行加入 export myname=Aming,然后运行
                    source .bashrc 就生效
        Linux 下设置自定义变量的规则
              *设定变量的格式为  ”a=b",其中a 为变量名,b为变量的内容,等号两边不能有空格
              *变量名只能由英、数字以及下划线组成,而且不能以数字开头;
              *当变量内容带有特殊字符(如空格)时,需要加上单引号;
            PS. 当变量内容中带有单引号的时候,这时就需要双引号
              * 如变量内容中需要用到其他命令运行结果则可以使用反引号
              *变量内容可以累加其他变量的内容,需加双引号

            pstree 这个指令会把linux系统中所有进程通过树形结构打印出来
            在父shell中设定一个变量后,进入子shell后该变量是不会生效的,如想生效
                需使用  export 
                    ps. export 就是声明一下这个变量,如不加选项,则会声明所有的变量
                如要取消某个变量,则 unset 变量名
    
        系统环境变量与个人环境变量的配置文件
        
            /etc/profile : 预设置变量:eg. PATH USER LOGNAME MAIL INPUTRC HOSTNAME
                HISTSIZE umask 等
            /etc/bashrc : 主要预设umask及PS1。这个PS1就是我们在敲击命令时,前面的那串
                字符:
            [root@k2 ~]# echo $PS1
            [\u@\h \W]\$
             \u 就是用户,\h 主机名,\W则是当前目录,\$就是那个"#",如是pt用户则为$
                每个用户的主目录下有下面这几个隐藏文件:
                .bash_profile :定义了用户的个人化路径与环境变量的文件名称。每个用户都可使用
                    该文件输入专用于自己使用的shell,当用户登录时,该文件仅执行一次
                .bashrc :该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell时,
                    该文件被读取,eg.可以将用户自定义的alias或者自定义变量写到这个文件中
                .bash_history:记录命令历史用的
                .bash_logout :当退出shell时,会执行该文件。可放清理工作的脚本
                
        Linux shell 中的特殊符号
            * “*”代表零个或多个任意字符
            * “?”只代表一个任意的字符
            *“#” 这个符号在linux中表示注释说明的意思
            *“\” 脱意字符,将后面的特殊符号(如” *”)还原为pt字符
            *“|” 管道符,作用在于将符号前面命令的结果丢给符号后面的命令
                (命令常指针对文档操作的命令)
    
        cut:用来截取某一个字段
                语法:cut -d '分隔符' [-cf] n 这里的n是数字
                    -d:后面跟分隔字符,分隔字符要用单引号括起来
                    -c:后面接的是第几个字符
                    -f:后面接的是第几个区块

        sort:用作排序
                语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2
                -t 分隔符:作用跟cut的-d一个意思
                -n:使用纯数字排序
                -r:反向排序
                -u:去重复
        wc:用于统计文档的行数、字符数、词数
                -l:统计行数
                -m:统计字符数
                -w:统计词数
                wc 不跟任何选项,直接跟文档,则依次显示,行数、词数、字符数

        uniq 去重复的行
                -c:统计重复的行数,并把行数写在最前
                使用uniq的前提是需要先给文件拍讯,否则不管用

        tee 后跟文件名,类似与重定向 ">",不同的是,会吧文件显示在屏幕上

        tr 替换字符,常用来处理文档中出席的特殊字符,如DOS文档中的^M符号
            选项:-d 删除某个字符,-d后面跟要删除的字符
                      -s 把重复的字符去掉
                    最常用的是把小写变大写:tr `[a-z]``[A-Z]`
    
        split 切割文档,选项:-b 一句大小来分割文档,单位为byte
                    -l:依据行数来分割文档
            $ 出了用于变量前面的标识符外,还能和‘!’结合起来使用
            ‘!$'  标识上条命令中最后一个变量(就是上条命令中最后出现的那个)
            ;:    分号:想在一行中运行两个或两个以上的命令,则需在命令之前
                    加一个";"了
            ~ :用户的家目录,如果是root 则是 /root, 普通用户则是 /home/username
           & :如要把一条命令放到后台执行的话,要加上这个符号,常用于命令运行
                    时间非常长的情况

            2> 2>> :分别标识错误重定向和错误追加重定向

            [] 中括号,中间为字符组合,代表中间字符中的任意一个

            && 与 ||   用于多条命令中间的特殊符号,有下面几种情况:
                 *command1 ; command2
                 *command1&& command2
                 *command1 || command2
                    使用”;”时,不管command1是否执行成功都会执行command2
                    使用“&&”时,只有commadn1执行成功后,command2才会执行,
                     否者command2不执行
                    使用“||”时,command1执行成功后command2 不执行,否则去执行
                        command2


                lsattr  显示文件隐藏属性 (如未安装则 yum install lsattr -y)
                chattr 只有超级用户才能使用的命令





11/6 今天是正则表达式,好吧! 虽然看过了! 但还是要多看 多记 才可以的          

            grep  sed awk 都是针对文本的行才操作的

            grep [-cinvABC] 'word'  filename
                -c:打印符合要求的行数
                -i:忽略大小写
                -n:在输出符合要求的行的同时连同行号一起输出
                -v:打印不符合要求的行
                -A:后跟一个数字(有无空格都可以)
                -B:后跟一个数字,eg. -B2则表示打印符合要求的行以及上面两行
                -C:后跟一个数字,eg. -C2则表示打印符合要求的行以及上线各两行
               
                在正则表达式中,“^”表示行的开始,“$”表示行的结尾,so空行可用
                “^$”来表示
                PS. [] 还有一种形式,就是[^字符] 表示除[]内的字符之外的字符

                过滤任意一个字符与重复字符 --“.”表示任意一个字符

                指定要过滤字符出现的次数
eg.
[root@k2 ~]# grep 'o\{2\}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
                    这里的{},其内部为数字,表示前面的字符要重复的次数
                     上例中表示包含有两个o,即“oo”的行,{}左右都需要加上脱意字符
                        ‘\'。另外,{}也可表示一个范围,格式为:‘{n1,n2}’,其中n1                         表示重复n1到n2次前面的字符,n2还可以为空,则表示大于等于n1次

            egrep ,为grep的扩展版 ,不同的是 在过滤某项的时候,egrep是要用“+”的
             eg.[root@k2 ~]# egrep 'oo+' test.txdt 
                    operator:x:11:0:operator:/root:/sbin/nologin
                    operator:x:11:0:operator:/rooot:/sbin/nologin
                    roooot:x:0:0:/rooooot:/bin/bash
        筛选零个或一个前面的字符
    [root@k2 ~]# grep 'o' test.txdt 
rot:x:0:0:/rot:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash

        筛选字符串1 或者字符串2
[root@k2 ~]# egrep 'aaa|111|ooo' test.txdt 
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    egrep 中()的应用
[root@k2 ~]# egrep 'r(oo)|(at)o' test.txdt 
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
        用() 表示一个整体,例如(oo)+就表示1个 ‘oo’或者多个‘oo’
 [root@k2 ~]# egrep '(oo)+' test.txdt 
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
oo
oooo

    sed工具的使用
         对于grep的实现只是查找功能,却不能实现把查找的内容替换掉
            用vim的时候,虽然可以查找替换,却只局限于文本内容内部,
            不能输出到屏幕。而sed和awk都是流式编辑器,是针对文档编辑
    打印某行
        sed -n 'n'p filename单引号的n是一个数字,表示第几行;
        [root@k2 ~]# sed -n '2'p /etc/passwd
            bin:x:1:1:bin:/bin:/sbin/nologin
        如要打印所有行--sed -n '1,$'p filename
            也可定义一个区间--sed -n '1,3'p test.txt
      打印包含某个字符串的行
    [root@k2 ~]# sed -n '/root/'p test.txdt 
    operator:x:11:0:operator:/root:/sbin/nologin
            PS.对于grep中使用的特殊字符,如 ^ $ . *也可通用

[root@k2 ~]# sed -n '/^1/'p test.txdt 
1111111111111111111111111111111

            -e可以实现多个行为
[root@k2 ~]# sed -e '1'p -e '/111/'p -n test.txdt 
rot:x:0:0:/rot:/bin/bash
1111111111111111111111111111111
         
            删除某个或者多行
[root@k2 ~]# sed '1'd test.txdt 
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        ‘d'这个字符就是删除的动作了,不仅可以删除指定
            的单位以及多行,而且能删除匹配某个字符的行,
            还可删除某行到最后一行

        替换字符或字符串
[root@k2 ~]# sed '1,2s/ot/to/g' test.txdt 
rto:x:0:0:/rto:/bin/bash
operator:x:11:0:operator:/roto:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            ’s'就是替换的命令,‘g’为本行中全局替换,如不加‘g’只换该行中出现
            的第一个。出了可以使用‘/'作为分隔符外,还能用其他’#‘ ‘ @’
        eg.[root@k2 ~]# sed 's#ot#to#g' test.txdt 
        rto:x:0:0:/rto:/bin/bash
        operator:x:11:0:operator:/roto:/sbin/nologin
        operator:x:11:0:operator:/rooto:/sbin/nologin
        roooto:x:0:0:/rooooto:/bin/bash
        1111111111111111111111111111111
        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

            eg. 删除文档中的所有数字或者字母
[root@k2 ~]# sed 's/[0-9]//g' test.txdt 
rot:x:::/rot:/bin/bash
operator:x:::operator:/root:/sbin/nologin
operator:x:::operator:/rooot:/sbin/nologin
roooot:x:::/rooooot:/bin/bash

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

[root@k2 ~]# sed 's/[a-zA-Z]//g' test.txdt 
::0:0:/://
::11:0::/://
::11:0::/://
::0:0:/://
1111111111111111111111111111111

        调换两个字符串的位置
[root@k2 ~]# sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1/' test.txdt 
bash:x:0:0:/rot:/bin/rot
operator:x:11:0:operator:/root:/sbin/nologin
operator:x:11:0:operator:/rooot:/sbin/nologin
roooot:x:0:0:/rooooot:/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
            这个确实看着有点头晕,,,,,
            注释:()把所想要替换的字符括起来成为一个整体,因括号在sed中属于特殊
            符号,所有需要在前面加脱意字符‘’,替换时则写成‘1’,‘‘2’, ‘ ‘3’的形式,


11/7 
            今天主要是熟悉前些天的内容 尤其是 sed 要不然 白记录了 可就不好了
 
        对于sed  调换两个字符串的位置,默认是调换符合选项的第一位字符
            但是怎么指定符合选项的其他位字符,却是不知道的
        
                sed 's/^.*$/123&/'  filename     这里的s 为替换命令 / 为分隔符
                     ^.*$  为无论是什么开头和结尾  123 添加字符123  & 这个如果在
                    123前面这是在输出字符的每行最后添加123 如果在前 则相反

              这个课后有一个例子:把/etc/passwd 复制到/root/text.txt。用sed打印所有
                答案是 
         /bin/cp /etc/passwd  /root/test.txt ;  sed -n '1,$'p test.txt
            刚开始不知道 前面的 /bin/cp 是什么意思,上网查了 也没有,去掉
            他之后发现[root@k2 ~]# /etc/passwd /root/text.txt 
            bash: /etc/passwd: Permission denied
                想来是强制复制的作用!
    




















    



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