Linux入门知识

基础:

  • Linux是什么
  • Linux用户、文件、目录管理
  • VIM编辑器
  • Linux文件系统管理
    进阶:
  • Linux网络管理
  • Linux进程管理
  • Linux系统监控

查看操作系统:

  • cat /proc/version
    查看系统时间:
  • date
    查看IO、系统内存
  • cat /proc/cpuinfo 查看cpu详细信息
  • free -m 查看内存使用情况
  • top 监控视图
  • lostat 输出CPU和磁盘I/O相关的统计信息
    查看网络端口状态
  • netstat -anp | grep 18008 查看18008端口状态
    进入某个目录
  • cd /opt/oss 进入根目录下opt目录下的oss目录
    查找某个具体的文件
  • find . -name "test*" 当前目录下,查询名为test开头的文件
  • find / -name "test*" 在根目录下,查询名为test开头的文件
    修改文件权限和修改文件名
  • chown ossuser:ossgroup test.jar 修改单个
  • chown -R ossuser:ossgroup test/ 递归修改test目录下面的文件
  • mv 重命名和移动
  • cp 拷贝
    从一个环境上copy包到当前环境的具体目录
  • scp test.jar [email protected]:/tmp/test 把当前目录的test.jar复制到10.10.10.10环境上的/tmp/test目录下
    搜索进程、杀死某个进程:
  • ps -ef | grep test 查看包含test的进程,其中ps可以继续查看更多用法
  • kill -9 pid 强制杀死进程

VIM:主要是熟悉一些常用的操作。

额外的命令:

  • 前言:
  1. 扫描本地ip地址: ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | sed 's/addr://g'
  2. 扫描端口号被哪个进程占用: netstat -anp | awk '{print $4, $7}' | grep 31006 | sed -n '1p' | awk '{print $2}' | awk -F'/''{print $1}' | xargs ps -lfp | sed -n '2p' | awk '{print $17}'
  3. 获取某个进程的堆栈: ps -elf | grep -v grep | grep necomm_agent | awk '{print $4}' | xargs gstack > yp.txt
  4. 批量重命名网元license备份的文件名:for i in `ls`; do mv -f $i `echo $i | sed 's/^[a-zA-Z0-9].*_[a-zA-Z0-9].*_\([0-9]\{8\}\)\(_\)|([0-9]\{6\}\)\(\.txt\)$/Lic_Esn_\1\2\3/'`;done
  5. 统计某个文件夹下的文件占用的字节数:ls -l | awk 'BEGIN {size=0;} {size = size + $5;} END{print "[end]size is ", size/1024,1024, "M"}'
  • 何时需要xargs?

    • 有些命令本身不支持管道,这时候要加xargs,本身支持管道命令有限如 cut grep sort uniq wc tee join split等。比如例子:echo "/opt" | ls -l 其中,ls 本身不支持管道,所以对于前面管道输出的内容会忽略,不会输出/opt目录下的内容;而 echo "/opt" | xargs ls -l 加上xargs,执行的结果就是输出/opt下目录的内容
    • 命令虽然支持管道,但是加不加xargs意义不同。比如:在某个目录下查找某个abc字符串:find ./ | grep "abc" 这个命令不会在目录下文件查找,而是把find出来的内容查找,相当于在一群文件名中查找是否包含abc文件名。而 find ./ xargs grep "abc" 这个命令则是把find出来的东西当作参数传递给管道后的内容,相当于find出来的文件内容中查找是否包含字符串abc。
  • 正则表达式:
    POSIX正则表达式分为基本正则表达式(BRE)和扩展表达式(ERE)。目前很多UNIX工具程序沿用某一种正则表达式形式来强化本身的功能。常用的包括:1)grep和egrep;2)sed;3)awk;4)more/less;5)vi

比如:

  • grep 'a\{3\}' test.txt 查找包含3个a的行,
  • grep '^aa' test.txt 查找以aa开头的行,
  • grep '^$' test.txt 查找空行
  • 后向引用:用\(\)包裹子表达式,然后用\digit来引用, 比如:

  • grep `\(why\).*\1` test.txt 匹配why..why

  • grep `\(ab\)\(cd\)[def]*\2\1` test.txt 匹配abcddcdab

  • grep:主打“查找”,常用的选项:

    • -v 过滤指定字符串内容的行
    • -i 不区分大小写
    • -n 顺便打印出行号
    • -c 计算出符合行的次数
    • -E 默认grep只支持基本的正则表达式,加上-E支持扩展的正则表达式,grep -E和egrep意义一样,扩展的正则有'+', '?', '|', '()'

常用的命令:

  • ps -elf | grep -v grep | grep "necomm_agent" 如果不加grep -v grep则输出2条内容。

  • grep -i 'abc' test.txt 忽略大小写,找出test.txt包含abc的行

  • grep -v '^&' test.txt > testnew.txt 过滤test.txt的空行

  • sed:主打“编辑”,工作原理:从文件或管道中读取一行,放在模式空间(sed内部的一个临时缓存)中,进行处理,处理完输出一行;再读取一行,再处理一行。

    1. 增(a追加文本到指定行后,i插入文本到指定行前)
    • 单行增加:
      sed '2a abc' test.txt
      sed '2i abc' test.txt
    • 增加多行
    sed '2a abc\ 
    cde' test.txt 
    

执行指定的地址范围:

  • sed可以对单行或多行进行处理,如果在sed命令前面不指定地址范围,那么默认会匹配所有行。
    /abc/,/fff/{sed-commands} 对匹配abc的行到匹配fff的行操作


    1. 删除指定的行
      sed '/aaa/d' test.txt


    2. 用新行取代旧行
      sed '2c abc' test.txt
      文本替换:
      sed 's/abc/bcdd/g' test.txt g表示全局替换,如果不加g,则替换每行第一个匹配的字符串
      sed 's/^/abc /' test.txt 在test.txt每行前插入abc
      sed -i '/aaa/s/abc/bcd/g' test.txt 加上-i代表修改了文件test.txt
      替换部分有几个特殊的元字符,分别是:
      &: 被pattern匹配的内容
      \num: 被pattern匹配的第num个分组(正则表达式的概念,\(...\)括起来的部分成为分组)
      sed '/d/s/ab/&jj/' test.txt 将匹配d内容的行中的ab替换为abjj
      echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'

    3. 查:

    • p输出指定内容,默认会输出2次匹配的结果,用n取消默认输出
      按行查询
      sed -n '2p' test.txt
      按字符串查询
      sed -n '/abc/p' test.txt
      混合查询
      sed -n '2,/abc/p' test.txt
    1. 多命令编辑:
      sed -e '1,5d' -e 's/test/check/' test.txt
  • awk:主打“分割处理“:文件逐行输入,空格默认分割,切片后再分析

awk

不是很懂这些进阶的命令,仍需要更多理解和学习。

你可能感兴趣的:(Linux入门知识)