过滤掉文件空白行和注释
cat /usr/local/filebeat/conf/filebeat.yml|grep -Ev "^$|#"
rm
-d:删除空目录
-f:强制删除文件或目录(慎用)
-v:打印删除信息
-r:递归删除目录内容(慎用)
grep
显示文件和输入流中匹配行
grep root /etc/* 显示etc目录下所有包含root的文件
-
重要选项
-i:不区分大小写 -v:反转匹配 -E:识别正则表达式 egrep = grep -E
less
查看大文件
-
查看文件
less -N file 查看文件,-N:显示行号 空格键:显示下一屏 B:显示上一屏
-
搜索
/word 从下往上搜索 ?word 从上往下搜索 按n进入下一个匹配
pwd
显示当前目录信息
重要选项
-L:显示链接目录
-P:显示实际物理目录
*说明*
比如java8 -> /usr/local/jdk8
pwd -L 输出 /usr/loca/java8
pwd -P 输出/usr/local/jdk8
diff
比较2个文件不同 diff -u file1 file2
file
查看文件的格式信息 file file
find和locate命令;which和whereis
find:硬盘上寻找;查找速度慢
locate:将硬盘文件建立一个索引数据库,索引数据库一般由操作系统管理;查找速度快
which:查找可执行二进制文件(PATH目录下寻找)
whereis:和locate一样,从索引数据库查找
-
locate用法
模糊匹配;对于新建立文件可能查不到 updatedb:更新数据库[root@CentOS7 ~#]locate /etc/sh # 搜索以sh开头的文件 [root@centos7 ~#]locate -r "/etc/\sh " # 正则,锚定词首 [root@centos7 ~#]locate -i ~/d
-
find用法
精确匹配
-
文件名和inode类
-name "文件名称": 支持使用glob, *, ?, [], [^] -iname "文件名称": 不区分字母大小写 -inum n: 按inode号查找 -somefile name: 相同的inode号文件 -links n: 链接数为n的文件 -regex "PATTERN": 以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
-
属主属组类
-user USERNAME: 查找属主为指定用户(UID)的文件 -group GROUPNAME: 查找属组为指定组(GID)的文件 -uid UserID: 查找属主为指定的UID号的文件 -gid GroupID: 查找属组为指定的GID号的文件 -nouser: 查找没有属主的文件 -nogroup: 查找没有属组的文件
-
文件类型 -type + 文件类型
b block (buffered) special c character (unbuffered) special d directory p named pipe (FIFO)f regular file l symbolic link s socket f file
-
权限类
find -perm 644 表示要严格匹配644的文件 find -perm +222 表示u,g,o任何一类用户有写权限即匹配 find -perm -222 表示仅严格匹配写权限,即每个用户必须要有写权限 find -perm -002 表示仅严格匹配other用户的写权限
环境变量和shell变量
环境变量:能够被shell中运行的所有进程访问 export设置
shell变量:仅仅针对当前shell可用
命令路径
PATH是一个特殊的环境变量,定义了命令路径;shell运行命令时,回去PATH目录下查找
-
加入PATH路径
$ PATH=dir:$PATH # 先查找dir $ PATH=$PATH:dir # 先查找$PATH
命令行编辑
CTRL-A 移动光标到行首
CTRL-E 移动光标到行尾
CTRL-W 删除前一个词
CTRL-U 删除光标到行首的词
CTRL-K 删除光标到行尾的内容
CTRL-Y 粘贴已删除内容(CTRL-U内容)
帮助
--help
man
shell输入输出
- command > file
- command >> file
- head /proc/cpuinfo | tr a-z A-Z # 一个命令的执行结果可以通过管道传递给另一个命令 (tr 替换)
-
标准错误输出
ls /ffff > f 2> e # 2> 向f发送标准输出,向e发送标准错误信息 ls /fff > f 2>&1 # 将标准输出和标准错误输出都重定向到文件f中
-
标准输入重定向
head < /etc/passwd # 不常用
umask
设置新建文件的掩码,指定的掩码在新建文件时将被删除(和chmod正好相反)
使用umask创建的文件不能有可执行权限(除 编译程序创建的文件),只能通过chmod赋予权限
比如:umask -P ⇒ umask 0022
touch test ⇒ 644(7-0-1 -> 7-2-1 -> 7-2-1)
符号链接
删除符号链接需要注意
ln -s target linkname
比如:存在一个文件e ln -s e e1 ⇒ e1 -> e
sudoers
控制用户访问权限
sudo -l # 查看用户有那些sudo权限
1. root ALL=(ALL) ALL # 允许root执行任何命令
2. %users localhost=/sbin/shutdown -h now # 允许user组内的member关闭自己的机器
3. %users ALL=/sbin/mount # 允许users组内member以root用户执行挂载命令
4. ops ALL=(ALL) NOPASSWD: ALL # 允许ops用户免密执行所有命令
5. ops ALL=(ALL) NOPASSWD: ALL,! /sbin/mount # 允许ops用户免密执行除mount命令
包相关
yun list installed | grep package # 查看yum已经安装的包
rpm -qa|grep package # 查看rpm安装包
rpm -ql | grep package # 查看rpm安装包路径
磁盘io问题排查
lsof /目录 # 显示目录下被打开的文件
lsof -p 进程pid # 指定进程打开的文件
lsof -i <条件> # 协议、:端口、 @ip
=> lsof -i tcp # 列出所有tcp链接信息
=> lsof -i :3306 # 列出谁在使用某个端口
# strace:系统调用跟踪 显示进程涉及的所有系统调用
strace -p pid -f # 查看进程和线程情况 跟踪进程和线程系统调用 有时候由于进程变成z,会失效,可以用perf
perf record -g 性能分析
./filetop -C # 查看文件读写情况
./opensnoop # 查看文件路径
pstree -t -a -p 27458 # 查看进程树 -t 显示线程 -a 显示命令行参数
slab查看
slabtop 查看目录项和inode缓存占用大小 c按照缓存大小排序
dmesg
查看内核和硬件日志信息
vim常见指令
指令 | 作用 |
---|---|
0 | 行首 |
$ | 行尾 |
H | 屏幕首行 |
M | 屏幕中间 |
L | 屏幕末行 |
gg | 文件首行 |
G | 文件末行 |
o | 当前光标下一行插入内容 |
O | 当前光标上一行插入内容 |
p | 当前光标下一行粘贴内容 |
P | 当前光标的上一行粘贴内容 |
dd | 删除整行 |
d0 | 删除光标到行首字符 |
d$ | 删除光标到行末字符 |
ndd | 向下删除n行 |
nyy | 向下复制n行 |
ngg | 定位到第n行 |
dG | 删除光标到行末内容 |
dgg | 删除光标到行首内容 |
ggyG | 复制全文 |