zoukankan      html  css  js  c++  java
  • linux面试集

    shell:
    1、$# 和 $*之类的特殊变量

    特殊变量列表

    变量 含义
    $0 当前脚本的文件名
    $n 传递给脚本或函数的参数。n是一个数字,表示第几个参数。例如,第一个参数就是$1
    $# 传递给脚本或函数的参数个数
    $* 传递给脚本或函数的所有参数
    $@ 传递给脚本或函数的所有参数。被双引号(“”)包含时,与$*稍有不同
    $? 上一个命令的退出状态,或函数的返回值
    $$ 当前shell进程id。对于shell脚本,就是这些脚本所在的进程id

    $*和$@的区别

    不被双引号“”包含时,都以“$1” "$2" ... "$n" 输出所有参数

    被双引号“”包含时,“$*" 会将所有的参数作为一个整体,以“$1 $2 ... $n” 的形式输出;“$@” 以“$1” "$2" ... "$n" 的形式输出所有参数。

    $?

    退出状态是一个数字,一般情况下,大部分命令执行成功返回0,失败返回-1.

    2、用命令查看文本的第十行

    查看开头n行:

    head -n 10 filename  #查看开头10行

    查看末尾n行:

    tail -n 10 filename  #查看末尾10行

    查看文本文件行数:

    wc -l filename  #查看文件行数

    查看特定(几)行:

    sed -n '45,50p' filename  #显示第45行到50行

    查看特定几列:

    awk -F "[:]" 'print{ $3}' filename  #通过-F 指定分隔符

    取出文本文件的第100行到200行:

    sed -n '100,200p' inputfile

    awk 'NR>=100&&NR<=200{print}' inputfile

    head -200 inputfile | tail -100

    3、搜索定位文件

    查找文本内容所在文件位置:

    grep "*m*" ./m* | less  #| less表示随意阅读

    查找时不区分大小写:

    grep -i "字符串" 文件名

    查找匹配的行数:

    grep -c "字符串" 文件名

    查找不匹配的行:

    grep -v "字符串" 文件名

    从根目录开始查找所有扩展名为.log 的文本文件,并找出包含“ERROR” 的行:

    find / -type f -name "*.log" | xargs grep "ERROR"

    4、vi操作

    vi命令模式:
    光标定位:
    0 行首
    $ 行位
    /字符串 查找字符串。n下一个,N上一个,查找样式变为?字符串
    撤销和重复:
    u 撤销上一个动作
    . 重复上一个动作 如删除动作后,按. 重复删除动作
    复制粘贴删除(命令模式不显示):
    nyy 复制光标所在的向下n行内容
    p 光标所在位置粘贴复制的内容
    ndd 删除光标所在的向下n行
    shift + g 到为本末尾
    x 删除光标后一个位置字符
    dd 删除光标所在整行
    复制粘贴删除(命令模式显示):
    :set number 显示行号
    :set nonu 取消显示行号
    :1,3y 复制第一行到第三行
    :1,3d 删除第一行到第三行
    :1,3s/str/str_new/g 将第一行到第三行的str替换为str_new,如果一行有多个str,都替换
    :s/str/str_new/g 将当前行所有的str替换为str_new
    :1,3s/str/str_new/ 将第一行到第三行的str替换为str_new,如果一行有多个str,只替换第一个
    :1,3g/str/d 删除第一行到第三行包含str的行

    5、命令执行脚本

    ./helloworld.sh  #切换到shell脚本所在目录执行脚本

    /data/shell/hello.sh  #以绝对路径执行脚本

    bash hello.sh  或  sh hello.sh  #切换到shell脚本目录,执行脚本【该方式,是bash调用sh脚本,故不用事先给予sh执行权限】

    .hello.sh 或 source hello.sh  #在当前shell环境中执行shell脚本【前三种执行shell是在当前shell[称为父shell],开启一个子shell环境,shell脚本执行完,子shell环境随即关闭,回到父shell环境】这种执行,是在当前shell中执行。

    补充

    shell远程执行:

    ssh user@remoteNode "cd /home ; ls"  #前提条件:配置ssh免密登录,命令间用分号隔开

    执行sql脚本:

    shell脚本调用sql脚本

    #!/bin/csh

    source /opt/info

    dbaccess bpedb /opt/info/del.sql

    6、指令将 ? 转为大写

    tr 'a-z' 'A-Z' <filename  #将filename文件中所有的小写字母转换为大写字母【tr 命令对标准输入的字符进行替换,压缩和删除。如tr -d '0-9' 表示删除数字】

    6、将标准输出和标准错误输出定向到log.txt

    2>&1 log.out  【标准输入 standard input 0,正确输出 standard output 1,错误输出 error output 2】

    find / home -name lost* >allresult 2>&1  #首先将标准错误输出定向到标准输出,再将标准输出定向到allresult文件。

    或 find /home -name lost* >& allresuilt

    分析:find /home -name lost* > allresult 1>&2

    find /home -name lost* 2> allresult 1>&2

    find /home -name lost* 2>&1 > allresult

    补充:

    重定向操作符 - 

    (cd /source/directory && tar cf - .) | (cd /dest/directory && tar xvfp -)  #把/source/directory目录下所有文件通过压缩解压缩,移动到/dest/directory这个目录下

    n<&- 表示将n号输入关闭

    <&- 表示关闭标准输入(键盘)

    n>&- 表示将n号输出关闭

    >&- 表示将标准输出关闭

    7.cpu占用率过高问题排查

    top 查看居高的进程,找到其pid

    ps -mp pid -o THREAD,tid,time 查看居高pid进程下的线程情况,找到cpu居高的线程 tid

    printf “%x ” tid  转换tid为16进制

     jstack pid |grep tid -A 30 查看堆栈信息,定位错误

  • 相关阅读:
    combobox获取dataset部分数据的方法
    vs2008设置Jquery自动感知方法
    iOS7 初体验
    数据采集[即与 WEB 相关的功能函数]
    javascript 时间倒计时效果
    有进度条圆周率计算
    python科学计算库
    python随笔
    jieba库
    数据分析模块pandas
  • 原文地址:https://www.cnblogs.com/x-jingxin/p/8447073.html
Copyright © 2011-2022 走看看