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\n” tid 转换tid为16进制
jstack pid |grep tid -A 30 查看堆栈信息,定位错误
linux面试集的更多相关文章
- linux面试题目--1
Linux面试题目 填空题1. 在Linux系统中,以 (文件)方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用i节 ...
- Linux企业集群用商用硬件和免费软件构建高可用集群PDF
Linux企业集群:用商用硬件和免费软件构建高可用集群 目录: 译者序致谢前言绪论第一部分 集群资源 第1章 启动服务 第2章 处理数据包 第3章 编译内容 第二部分 高可用性 第4章 使用rsync ...
- Linux面试基础题-2
继续我们这面试系列,在这篇文章里我们给出了10个问题.这些问题或者是在以后的文章中出现的问题不一定在面试中会被问到.然而通过这些文章我们呈现出的是一个交互的学习平台,这必将会对你有很大的帮助. 自本系 ...
- Linux服务器集群系统(一)--转
引用地址:http://www.linuxvirtualserver.org/zh/lvs1.html LVS项目介绍 章文嵩 (wensong@linux-vs.org)2002 年 3 月 本文介 ...
- Linux服务器集群系统(一)(转)
add by zhj:虽然是2002年的文章,但读来还是收益良多.在 章文嵩:谈LVS及阿里开源背后的精彩故事 中LVS发起人及主要贡献者谈了LVS的开发过程及阿里开源的一些故事 原文:http:// ...
- 【原创】Linux服务器集群通过SSH无密码登录
SSH 无密码授权访问slave集群机器 1. 安装SSH,所有集群机器,都要安装SSH环境介绍: Master : CNT06BIG01 192.168.3.61 SLAVE 1: CNT06BI ...
- Linux服务器集群系统(LVS)
from:http://www.linuxvirtualserver.org/zh/lvs1.html#5 本文介绍了Linux服务器集群系统--LVS(Linux Virtual Server)项目 ...
- 浅析Linux服务器集群系统技术
浅析Linux服务器集群系统技术 目录 前言 常用的服务器集群 集群系统的优势 LVS集群的通用体系结构 为什么使用层次的体系结构 为什么是共享存储 可伸缩Web服务 前言 总结两篇技术文章,努力学习 ...
- Gravitational Teleport 开源的通过ssh && kubernetes api 管理linux 服务器集群的网关
Gravitational Teleport 是一个开源的通过ssh && kubernetes api 管理linux 服务器集群的网关 支持以下功能: 基于证书的身份认证 ssh ...
随机推荐
- 浅入分析Linux
Linux 操作系统必须完成的两个主要目的 与硬件部分交互, 为包含在硬件平台上的所有底层可编程部件提供服务 为运行在计算机系统上的应用程序(即所谓的用户空间)提供执行环境 一些操作系统运行所有的用户 ...
- GOPS 2018全球运维大会上海站 参会感悟梳理
今天遇到很多优秀的讲师.业界的大伽,很开心 现在把get到的信息梳理一下:(1)想解决性能问题,一定要在缓存上下功夫:[nginx上有好多文章可以做,真是博大精深呢<深入理解Nginx:模块开发 ...
- avalon教程-简介
avalon是什么? avalon是一个MVVM框架, Modle-模型层,即为js中从后台接口中取出的数据,例如一个对象或者对象数组,并对这些数据进行一定的格式化.常见的返回数据是这样的{id : ...
- Win2D 官方文章系列翻译 - 与 Direct2D 互操作
本文为个人博客备份文章,原文地址: http://validvoid.net/win2d-interop-with-direct2d/ Win2D 作为 Direct2D 的上层实现,支持与其进行双向 ...
- MySQL锁行锁表
select..for update; 给数据库表手动上锁 --锁行Begin; for update; --给 id=1 的行加上排它锁且 id 有索引 ; Commit; -- 锁表 BEGIN; ...
- CF1096C Polygon for the Angle
思路: 要想到正n边形中所有可能的ang为180 * k / n (1 <= k <= n - 2). 根据n = 180 * k / ang, n是大于等于3的整数,并且n >= ...
- Asp.net防御XSS攻击组件库
一.AntiXss 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下. 目前类库已融入到.netframework中,类库主页不再更新. 使用方法:使用Nuget ...
- 《深入理解Java 7核心技术与最佳实践》读书笔记(2) Java语言动态性引言
Java语言是一种静态类型的编程语言.静态类型的含义是指在编译时进行类型检查.Java源代码中的每个变量的类型都要显式地进行声明.所有变量.方法的参数和方法返回值的类型在程序运行之前就必须是已知的.J ...
- 显示C++ vector中的数据
C++ 中的vector是一个容器数据类型,不能使用cout直接显示容器中的值. 以下程序中,myvector 是一个vector数据类型.将myvector替换为需要输出的vector. for(i ...
- Python-Django框架学习笔记——第二课:Django的搭建
Django 环境搭建 一. 版本选择 Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3. Django 1.6.x 支持 Pytho ...