创建空文件(四种方式)
- touch a.log
- echo “” > a.log
该方式创建的空文本会有一个字节的大小,所以慎用 - cat /dev/null > a.log 把一个文件设置为空
- vi a.log,然后shift+:+wq保存
查看文件内容和筛选某些关键字
- cat somefile: 查看整个文档,一般用查看配置文件等较小的文件
- more somefile: 可以翻页查看, 下翻一页(空格) 上翻一页(b) 退出(q)
- less somefile:可以翻页查看,下翻一页(空格) 上翻一页(b),上翻一行(↑) 下翻一行(↓) 可以搜索关键字(/keyword)
- tail -10 install.log:查看文件尾部的10行
- tail -f install.log:根据文件描述符进行追踪踪(inode号),当文件改名或者删除,追踪停止
- tail -F install.log:根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。生产上flume一般配置该方式。
定位ERROR日志
- 文件内容比较小(几十兆),下载到windows电脑,用记事本一类的工具打开,查找
- 文件内容很大(几百兆到几个G) cat xxx.log | grep ERROR
- 查找ERROR关键字上下文的信息
cat xxx.log | grep -A 10 ERROR 后10行
cat xxx.log | grep -B 10 ERROR 前10行
cat xxx.log | grep -C 30 ERROR 前后各30行 经常用 迅速定位ERROR上下文
常用操作命令
命令 | 说明 |
---|---|
ls | 查看当前光标所在的目录的文件 |
ls -a | 查看当前光标所在的目录的文件,包含隐藏文件 |
ll | 查看当前光标所在的目录的文件,列展示详细信息 |
ll -h | 查看当前光标所在的目录的文件,列展示详细信息 和易于读取的大小信息 |
ls --help | 列举文件的命令帮助,Usage: ls [OPTION]… [FILE]… [OPTION]可选择,[FILE]可以选择 |
> | 将一条指令的输出结果写入到一个文件中,会覆盖原文件内容,如查找关键字的信息可以输出到一个文件cat xxx.log |
>> | 将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容 |
| | 管道符,将管道符左边命令输出结果作为管道符右边命令的输入 |
登录后操作的命令
- who :查看当前有哪些在线用户
- last: 查看最近的登陆历史记录
- history:查看历史操作记录
!7 可以执行历史记录(cd /usr/),history -c 清空历史记录
打印命令
- echo: echo “www.baidu.com” ,直接打印到控制台
- $PATH:查看环境变量
echo $PATH: /usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin - which:比较实用的命令,在安装完软件后,which + 服务命令,比如which java,有结果就证明安装完成,没有证明软件没有安装好
当前会话session
在当前操作窗口修改的一些环境变量,只能在当前会话生效,比如PATH=’’,
alias j=‘cd /home/hadoop’
关闭当前窗口,变量就没有了
环境变量
- 全局环境变量 /etc/profile,所有人都可以使用,修改完环境变量,使其生效,需要 source /etc/profile
- 当前用户的环境变量 .bash_profile和 .bashrc ,一般配置.bashrc ,因为 .bash_profile容易产生ssh bug,修改完环境变量,使其生效,需要 source .bashrc
别名
一般用于简化操作的
可以配置在/etc/profile和.bashrc中
删除操作
rm -f xx.log 直接删除文件
rm -rf a/b/c/a.log 可以删除文件,rm -rf a 可以递归删除文件夹和文件
rm -rf /* 生产环境 删除文件的时候慎用,高危命令,最好使用rm xx.log(有提示)
编辑保存命令
- 设置行号: 编辑 “vi a.txt”; 尾行输入: “: set nu”;取消行号设置:“set nonu”
- 取消搜索结果中关键字高亮状态:esc退出编辑模式,然后输入:nohl
- 清空文件内容
cat /dev/null > xxx.log(推荐)
echo ‘’ > xxx.log (存在一个字节) - vi命令常见的快捷方式
dd:删除当前行
dG:删除光标当前及以下的所有行
ndd:删除光标当前及以下的n行
gg:跳转到第一行的第一个字母
G:跳转到最后一行的第一个字母
shift+$:跳到行尾
gg+dG:清空整个文件
系统命令
- 查看磁盘情况:df -h
- 查看内存大小:free -m / free -g
- 查看关于ssh的进程:ps -ef|grep ssh,排除自己查找的命令:ps -ef|grep ssh| grep -v grep
- 根据进程pid查找对应的端口号:netstat -nlp|grep pid
- 根据程序名称查找端口号:netstat -nlp|grep ssh
安装服务,打开web界面
- 安装:yum install httpd -y
- 启动service httpd start和systemctl start httpd
- 查看状态:systemctl status httpd
- http协议端口:80,https协议端口:443
高危命令
- rm -rf /
- 生产修改和删除配置文件,记得要备份
- ps -ef|grep pid,top命令查询夯住的的进程,删除某进程:kill -9 pid1 pid2 pid3
- 也可以使用kill -9 $(pgrep -f 关键字)(其中的$符号是把纵向输出变成横向输出)
- 杀死进程一定要看清哪些是需要杀死的
yum安装软件和卸载软件
- 查找本地yum源中的软件:yum search xxx
- 安装软件:yum install -y xxxx
- 移除yum源中软件:yum remove xxxx
- 查找已经安装的软件:rpm -qa|grep http
- 卸载软件:rpm -e --nodeps httpd-tools-2.4.6-90.el7.centos.x86_64,其中 --nodeps是去掉卸载校验,直接删除;rpm -e httpd-tools-2.4.6-90.el7.centos.x86_64,会报错:error: Failed dependencies:
httpd-tools = 2.4.6-90.el7.centos is needed by (installed) httpd-2.4.6-90.el7.centos.x86_64
压缩和解压缩
- 压缩:zip,zip -r xxx.zip ./* 光标在文件夹里面压缩 ,zip -r fei.zip fei/* 光标在文件夹外面压缩
- 解压:unzip fei.zip
- 解压 tar -xzvf hadoop-2.6.0-cdh5.16.2.tar.gz
- 压缩tar -czvf hadoop-2.6.0-cdh5.16.2.tar.gz hadoop-2.6.0-cdh5.16.2/*
linux自带的调度工具
- 添加一个调度任务crontab -e
* * * * * /root/test.sh >> /root/test.log
*分布代表分,小时,日,月,周,*代表每 ,
/6就是乘以6,/6 * * * * /root/test.sh >> /root/test.log,就是每隔6分钟执行一次 - 查看调度任务crontab -l
- 面试题:每隔10秒执行一次
vi test1.sh#!/bin/bash for((i=1;i<=6;i++)); do date sleep 10s done exit
后台执行命令
- nohup ./test.sh & 手动启动脚本 看日志 开发维护 测试 ,nohup ./test.sh >
/root/test.log 2>&1 & 生产上
软连接
- ln -s 原path 目标path,如 ln -s /data01/log/hbase /var/log/hbase ,注意不要写成ln -s /data01/log/hbase/ /var/log/hbase,同时注意权限的问题
系统配置
- /etc/hosts的前两行内容不能删除,否则其他服务器无法访问
- 开发的时候云主机配置/etc/hosts : 内网ip hostname
- windows开发情况下配置hosts: 外网 hostname
场景案例
- 在centos部署大数据组件,发现一个错误 Connection refused
- 有可能是防火墙打开,或者某个端口对外没有暴露,或者像云服务器的安全机制没有打开,比如阿里云盾之类的
- 测试方法:先ping ip看是否通,在telnet ip port 测试ip和端口号是否通
- linux安装telnet:yum install -y telnet,然后which telnet查看是否安装成功
面试题
登录服务器,如何打开xxx软件的web界面:
- 输入命令ifconfig,查看ip
- 查找该软件的进程pid: ps -ef|grep xxx
- 通过进程查找端口port: netstat -nlp|grep pid
0.0.0.0:22 :当前的ip
:::22 :当前的ip
192.168.0.3:22 :当前的ip
如果显示如上的当前ip,是windows服务器和其他服务器可以访问的
127.0.0.1:22
localhost:22
如果显示本地ip,本地自己访问自己, window和其他服务器无法进行访问