想必大家在工作当中会经常跟linux打交道,这篇文章从终端的工具开始,介绍了一套完整的也是比较基础的入门路线,有需要的同学可以了解一下。
终端实用技巧
俗话说得好:“工欲善其事,必先利其器”,一个好的终端可以让你事半功倍,工作效率提升自然不用说。因为笔者主要用mac办公,所以这部分内容主要针对mac用户,当然这是技巧在windows上面也是有样例的,可以搜索相关关键词自行了解学习。
你需要一个更好的终端软件
windows主要推荐实用CRT,mac主要推荐iTerm2。(如何安装就不赘述了)
mac自带的终端办公也可以,只是功能相对比较单薄,iTerm算是mac下面主流的终端软件,虽然crt也有mac版本,不过破解起来非常费劲。
让你的工具赏心悦目
专业,让工作更高效
前提你已经安装了iTerm2,这些配置的改动建议了解一些,尤其是经常会使用终端的同学,强烈推荐。
-
字体
等宽字体Consolas、monoco、sourcepro...各取所需 -
配色
黑白、黑绿这种高对比度的配色非常伤害眼睛
主题很多,推荐一下solarized -
编码
拒绝中文乱码,统一UTF-8
最终看起来就会比较有辨识度,接下来介绍几个常用的工作技巧。
技巧一:会话保存与tag使用
你有没有遇到过这样的问题,比如:
同样的机器每次都要登录,比如公司跳板机…
机器太多记不住,都是数字特别容易混淆…
已经登录过了,新开窗口还是要再登录…
当然有办法啦,CRT其实已经自带了这个功能,iTerm实现也很轻松
iTerm2的配置方法:
1. 安装sshpass(安装方法自行百度) 2. 打开iterm2->Peferences->Profiles 3. 添加对应profile,比如新增标签paclous,登录命令为/usr/local/bin/sshpass -p 密码 ssh [email protected] 4. 在窗口选项中点击对应名字即可实现不输入密码登录
技巧二:session会话克隆
你可能还会遇到这样的问题,比如
机器的登录密码是变动的,刚才那个技巧不管用了
已经登录了某机器,新开窗口还得再次登录
iTerm配置方法
1. 编辑vim ~/.ssh/config 2. 增加如下配置 host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p
再也不用为多开而苦恼
其他技巧
-
选中即复制,滚轮是粘贴,当然
ctrl+C(commond+C),ctrl+V(commond+V)
也是可以的 -
ctrl+a, ctrl+e回到行首行尾
-
ctrl+r,搜索历史记录
-
zsh了解一下
Linux基础入门
目录结构
/bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:dev是Device(设备)的缩写,外部设备
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库
/mnt:文件、光驱挂载
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:该目录存放一些服务启动之后需要提取的数据。/tmp这个目录是用来存放一些临时文件的。
/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
最基础命令
linux命令很多,每个命令支持的参数也很多,详细了解每个命令的用法可以man command
或者command -h
或者command --help
自行学习,下面主要介绍一些常用的命令。
'-h'和'--help'主要是shell风格的差异,功能是完全一样的,比如-r其实是等同于--regular的,不用太纠结这个
cd
路径切换
ls
显示文件或目录信息(ls –l = ll)
mkdir
当前目录下创建一个空目录,mkdir –p
可用于级联创建
rmdir
删除目录,要求目录为空
touch
生成一个空文件
cp
复制文件,cp –r
递归复制,复制文件夹是需要用到
mv
移动文件或目录、文件或目录改名
rm
删除文件或目录,rm –r
删除目录,rm –f
强制删除(不问是否),一定要慎用rm –rf
易翻车!!!
find
查找文件,比如在当前目录下查到nginx.conf这个文件find ./ -name "nginx.conf"
cat
查看文本文件内容,文件较大时终端容易开始,使用more或者less代替
more
查看文件内容
less
查看文件内容,功能更强大
tail
查看文件内容,常用于日志文件的查看和检测
head
查看文件的头部
echo
把内容重定向到指定的文件中 ,有则打开,无则创建
绝对路径与相对路径
.或./表示当前目录, cd .
或者cd ./
表示当前目录
..或../表示上一级目录
~ 表示当前登录用户的主目录(等于echo $HOME
)
通配符
比较常用的通配符*
,参考正则表达式
几个常用场景
-
当前目录下显示文件名中带audit的文件
ls –l “*audit*”
-
在系统中搜索一个包含123关键词的文件
find / -name “*123*”
中断与挂起
ctrl+c
是发送中断信号,ctrl+z
是挂起任务或者服务,需要手动终止
管道“|”
用于连接多个命令,并将上一个命令的输出作为下一个命令的输入
查找tomcat进程: ps aux | grep “tomcat”
串行执行多个命令 && 或者 ;
多个命令如何一起执行呢?答案是&&
或者;
cd /home/test && ls -al && echo "123" > test.txt cd /home/test ; ls -al ; echo "123" > test.txt; mkdir -p test/a/b && cd test/a/b && do something
重定向
>
表示清空文件并写入
>>
表示向文件中追加写入内容
创建一个空文件touch test.txt
可以用echo "" > test.txt
代替
echo "" > access.log
可用于清空文件内容
echo "haha" >> access.log
往access.log文件末尾追加内容
grep、awk、sed文本处理三剑客
grep文本过滤,经常配合管道、awk一起使用(大小写敏感)
查找tomcat进程ps –ef|grep tomcat
查找匹配关键词的文件行cat test.txt | grep keyword
grep常见用法:
grep ios
正向过滤,过滤出包括ios关键词的行
grep –v test
反向过滤,过滤不包括test关键字的行
grep “ios”|grep “android”|…
过滤出同时包含ios和android的行
grep “ios|android”
包含ios或者android的行
grep –E “正则”
根据正则匹配目标行
grep –r “关键字” .
递归匹配,在当前目录下查找所有文件中能匹配到关键字的行
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
命令格式:
awk [-F field-separator] 'commands' input-file(s)
awk默认以空格为切分符号,比如我们想拿到当前系统下nginx的master进程的pid,可以这么操作ps aux | grep nginx | grep master | awk '{print $2}'
awk很强大,可自定义变量还可以使用更高级语法的来做更复杂的计算,比如计算总和,求平均值等
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作
sed常用格式:sed [-nefri] ‘command’ 输入文本
显示第一行到第二行sed -n '1,2p' ab
显示第一行sed -n '5p' ab
grep/awk/sed是linux下面文本处理三剑客,功能很强大,有兴趣的话自己深入学习一下吧。
文件压缩与解压
比较常见的两种格式:gz和zip
压缩:tar –zcvf test.tar.gz ./test
解压:tar -xf test.tar.gz
压缩:zip test.zip ./test
解压:unzip test.zip
文件上传与下载
1秒钟搞定服务器文件上传和下载,前提是iTerm和服务器都要支持rzsz才可以使用
iTerm配置rzsz参考配置链接
服务器安装lrzsz扩展:Yum –y install lrzsz
上传:rz –e 单文件
(只能是单文件,不能是文件夹)
下载: sz + 文件名
注意,上传文件不要太大,容易卡死
定时任务crontab
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
基本格式:* * * * * command
Cront –e
编辑当前用户的crontab
Crontab –l
限时当前crontab列表
*/15 * * * * do something
每小时内15/30/45/0时执行操作
1,3,5 * * * * do something
每小时内分钟为1,3,5时执行操作
vim常用操作
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
Vim提供了三种模式:普通模式、编辑模式、命令模式
常用操作:
打开文件: vim test.txt
插入:i
在当前行的下一行插入o
在当前行的上一行插入O
跳到文件开头gg
跳到文件末尾G
翻页:ctrl+F(下一页), ctrl+B(上一页)
搜索:/关键字 (在搜索结果间跳转n N)
替换:%s/原始字符串/目标字符串/g
光标移动:hjkl 或者 方向键
撤销u
复制yy,粘贴p
vim键盘图谱
alias超级实用的别名
alias命令用来设置指令的别名,我们可以使用该命令可以将一些较长的命令进行简化。
操作方法:
-
编辑~/.bashrc文件
-
alias 新的命令='原命令 -选项/参数'
-
source ~/.bashrc
要删除一个别名,可以使用 unalias 命令,如 unalias l
举个实例,执行jmeter压测/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n -t test.jmx
命令很长,按照上面的操作方法我们可以使用alias优化一下alias jmeter="/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n”
,之后在系统中直接输入jmeter
就等同于你输入了/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n
,非常实用哦。
进程相关
ps(process)
常用过滤用户进程ps aux | grep tomcat
-
Cpu升序
ps -aux --sort -pcpu | less
-
内存升序
ps -aux --sort -pmem | less
端口占用lsof
常用与查看某个端口占用情况,laof –i:8080
top
显示所有正在运行而且处于活动状态的实时进程, 而且会定期更新显示结果;它显示了CPU使用率,内存使用率,交换内存使用大小,调整缓存使用大小,缓冲区使用大小,进程PID, 使用的命令等信息。
iostat
查看存储设备输入和输出状态统计的工具,用来追踪存储设备的性能 问题;包括设备,磁盘,NFS远程磁盘
iftop
网络流量监控(需要自己安装)
pmap
pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。pmap pid
查看pid的内存占用情况