掌握Linux命令是高级Java工程师必备的技能之一,但并不是每个人都能完全掌握,绝大部分Java初中级工程师只知道少数的cd/ls/mkdir/rm等非常简单的命令,但是只会这些命令是完全不够的,如果想要提升技术壁垒,晋升成为大牛程序员,掌握最实用的Linux命令是不可或缺的。文本作者结合多年企业开发经验,将最实用的Linux命令进行了清晰的分类,逐条罗列,对照反复练习即可快速掌握。熟练使用文本提到的命令能有效提升运维技能并帮助各位提高工作效率。
提示:
操作系统:CentOS
适合对象:使用过Linux的人群
本文命令:多以示例命令为主,要学会举一反三
在日常开发和部署的工作中,安装服务是非常常见的操作,一般来说当我们执行某个命令提示不存在命令时,都需要进行服务安装,一般安装命令有2种:在线安装和离线安装。对比来说,如果网速还不错的话,推荐使用在线安装更加方便。
yum install -y vim
示例含义:在线安装vim服务
注意:如果要加速yum在线下载需要修改yum源为国内源
rpm -ivh tomcat.rpm
示例含义:离线安装tomcat服务
注意:rpm文件安装包需要上传到服务器上,再执行安装命令
文件操作命令是Linux中使用最为频繁的命令,众多命令中还包含非常出名的Linux三剑客grep、awk、sed,在文中也有介绍。
创建方式1:touch命令直接创建
yacas touch abc.txt
创建方式2:vi命令修改后保存
yacas vi abc.txt
然后保存
创建方式3:echo命令输出写入文件
yacas echo hello > abc.txt
yacas vi abc.txt
yacas vim abc.txt
用法:vi或vim打开文件后(不要进入到编辑模式)输入英文的?或/,后面跟上要搜索的关键词即可
yacas ?hello
然后按住n健查找下一个,按N健查找上一个
yacas /hello
然后按住n健查找下一个,按N健查找上一个
这个命令非常实用,有时候当我们输入一段比较长的命令时,光标已经到最后了,但发现前面的命令写错了,一般的做法是按照向左箭头按键一直往左移动光标,改完由按向右监听按键一直向右移动光标,这个效率太慢了,以下快捷键能快速解决这个问题,能直接达到命令最前面和最后面。
移动到命令最前:按住快捷键 ctrl +a
移动到命令最后:按住快捷键 ctrl+e
vi或vim打开文件后,根据要求分别输入如下命令(不要进入到编辑模式)
设置行号
shell :set nu
取消行号
shell :set nonu
vi编辑文件时,如果内容太长,想要快速将光标跳转到文件头部或尾部,使用下面按键
跳转末行 ,按住 G健
跳转首行 ,按住 g健
不进入编辑模式,在要删除的行敲击 dd
不进入编辑模式,在要删除的行敲击 4 yy,标识从当前行开始复制4行,再移动光标到指定位置按p键粘贴
cat abc.txt
方式1
shell grep "heima" abc.txt
方式2
shell cat abc.txt |grep "heima"
这里用到了Linux三剑客之一的筛选命令grep,主要用于筛选文本
方式1
shell grep "heima" abc.txt |wc -l
方式2
shell grep "heima" abc.txt |wc -l
查看前3行
shell head -3 abc.txt
查看尾3行
shell tail -3 abc.txt
查看尾实时输出的3行日志
shell tail -3f abc.txt
sed作为Linux三剑客之一,是使用的最流行的替换命令,主要用于替换本文中的内容
sed -i s/heima/itcast/g abc.txt
示例含义:替换abc.txt文件内所有heima为itcast
方式1
shell mv abc.txt bcd.txt
方式2
shell rename abc bcd abc.txt
awk作为Linux三剑客之一,主要用于输出固定格式文件的内容
假设文本文件内每行数据的格式如: 姓名,年龄,城市,注意分隔符是逗号
输出每一行
shell awk '{print;}' aaa.txt
输出第三列所有值
shell awk -F ',' '{print $3}' aaa.txt
-F后紧跟的是每行内容的分割符号
输出倒数第2列的值
shell awk -F ',' '{print $(NF-1)}' aaa.txt
输出前2行的第2列的值
shell awk -F ',' '{print $2}' aaa.txt|head -2
find test/ -name abc*
示例含义:查找test目录下,所以文件名包含abc的文件
find test/ -name "abc*" | xargs rm -rf
示例含义:查找test目录下,所以文件名包含abc的文件并执行删除操作
find test/ -mtime +30 -type f | xargs rm -rf
示例含义:查找test目录下,所有创建时间超过30天的文件并执行删除操作
单线程下载
shell wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
多线程下载
shell axel -n 10 https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
示例含义:开启10个线程一起下载一个文件,注意这种下载效率会比单线程快很多
将本地文件上传到服务器或从服务器下载
上传rz
执行命令后会弹出窗口,选择本地的文件,确认后会执行上传
下载sz 文件命名
默认会下载到本地操作系统downloads目录下
说明:以上两个命令执行的前提是已经安装了lrzsz,可通过在线命令yum install -y lrzsz
安装
压缩解压命令在开发中比较常见,一般开发部署遇到的压缩包主要以zip和tar包为主,掌握这2种压缩文件的压缩和解压命令就足够了。
压缩
shell zip -r xxxx.zip xxxx
实例含义:将xxx的全部内容压缩为xxx.zip
解压
shell unzip -d xxxx xxxx.zip
压缩
shell tar -zcvf test.tar.gz test/
解压
shell tar -zxvf test.tar.gz test
系统命令是我们日常排查服务器问题及进行系统设置时使用比较多的命令,这些命令要求熟记于心
ip addrifconfig
修改当前用户密码:
passwd
修改其他用户密码:
password deploy
reboot
service network restart
systemctl stop firewalldsystemctl disable firewalld
查看还剩多少m
shell free -m
查看还剩多少g
free -g
查看总共剩下多少空间
shell df -h /
查看某个目录占用空间
shell du -sh test/
查看某个文件占用空间
shell du -sh abc.txt
top
将本服务器文件传输到其他服务器shell scp aaa.zip [email protected]:/usr/local/
将本服务器目录传输到其他服务器shell scp -r aaa [email protected]:/usr/local/
将其他服务器文件传输到本服务器shell scp [email protected]:/usr/local/bbb.zip aaa.zip
将其他服务器目录传输到本服务器shell scp -r [email protected]:/usr/local/bbb /mnt
比如我们在任意目录下执行ls -al
,将看到文件或目录最前面显示效果如下
444 r--r--r--600 rw-------644 rw-r--r--666 rw-rw-rw-700 rwx------744 rwxr--r--755 rwxr-xr-x777 rwxrwxrwx
解读下这个展示效果的含义,其实都是文件系统权限相关内容:
从左至右,先是3个数字,代表文件权限然后是9个字母(或者连字符),其中 1-3位数字代表文件所有者权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限,而具体的权限是由数字来表示的。
读取的权限等于4,用r表示
写入的权限等于2,用w表示
执行的权限等于1,用x表示
通过4、2、1的组合,得到以下几种权限:
0(没有权限)
4(读取权限)
5(4+1 | 读取+执行)
6(4+2 | 读取+写入)
7(4+2+1 | 读取+写入+执行)
chmod a+x -R test
su chmod a+x -R test
服务部署时使用比较多的命令就是进程命令,这些命主要是围绕着查看进程、确认进程存活情况及杀掉进程等操作
ps -ef|grep java
示例含义:查看所有运行中的进程信息中包含java的进程
lsof -i:8080
示例含义:确认8080端口是否被占用,如果命令执行完有响应数据列表,则表示已占用
telnet 192.168.200.130 8080
示例含义:确认192.168.200.130的8080端口是否能连通,能连通就会进入黑窗口有光标,否则会卡主到超时
kill -9 1011