必须掌握的Linux命令
本文章列举比较常用的Linux命令,针对的是Java开发人员,不是运维
查看目录中内容
ls [选项] [文件或目录]
ls -alh
ll :ls -l的缩写
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-h 人性化显示文件大小
查询所在目录位置
pwd
切换所在目录
cd [目录]
简化操作:
cd ~ :切换到用户目录(家目录)
cd :切换到用户目录
cd - :切换到上一个访问目录
cd .. :切换到上一级目录
cd . :切换到当前目录
创建文件
touch 文件名
建立目录
mkdir 目录名
-p 递归创建
mkdir -p xx/yyy/zz :创建多级目录
删除空目录(目录为空时执行)
rmdir 目录
删除文件或目录
rm -rf [文件或目录]
选项:
-r 递归删除目录
-f 强制(不需要提示)
rm -r 目录 :递归文件夹 带提示
rm -f 文件 :删除文件
rm -rf 文件/文件夹 :递归删除,无提示
禁止: rm -rf /* 删除所有文件
复制
cp [选项] [原文件或目录] [目标目录]
选项:
-r 复制目录
cp 源文件 备份文件 :备份文件
cp -r 源目录 目标目录 :备份目录
剪切或改名
mv [原文件或目录] [目标目录]
mv 源文件 目标目录 :剪切
mv 源文件 不存在的文件 :重命名
mv 源文件 文件夹/不存在的文件 :剪切重命名
字符串搜索
grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串
grep timezone anaconda-ks.cfg
经典使用:ps查询出进程,使用管道符把查询出来的进程作为结果被右边使用
ps -ef | grep java
PATH环境变量
PATH环境变量:定义的是系统搜索命令的路径
相当于window下的path
echo $PATH : 查看环境变量
修改配置环境变量文件
vi /etc/profile
帮助命令
man ls
#查看ls的帮助
man 命令名 :查看帮助命令 f b 键翻页 q退出
命令 --help
#获取命令选项的帮助
实例:
ls --help
命令 --help :简洁版帮助
但是不适用内部命令,如cd:
命令特殊时,使用
help 命令 比如: help cd
打包、压缩、解压(.zip、.gz、.bz2、.tar.bz2、.tar.gz等)
打包命令:
tar -cvf 打包文件名 源文件
选项:
-c 打包
-v 显示过程
-f 指定打包后的文件名
tar -cvf learn.tar learn
解打包命令:
tar -xvf 打包文件名
选项:
-x 解打包
tar -zcvf 压缩包名.tar.gz 源文件
选项:
-z 压缩为.tar.gz格式
tar -zcvf learn.tar.gz learn
tar -zxvf 压缩包名.tar.gz
选项:
-x 解压缩.tar.gz格式
#加上-C表示解压到指定的目录
tar -zxvf 压缩包名.tar.gz -C 指定目录
解压:
tar -zxvf learn.tar.gz -C 目录
压缩:
tar -zcvf learn.tar.gz learn
磁盘使用情况
df:用于显示磁盘的使用情况
df -h: 格式化显示输出磁盘使用情况
查看任务进程
top
查看内存占用
free -h 格式化显示
查看操作历史
history
在显示器输出内容
echo
文件查看命令
cat 整个文件的内容显示出来
tail
默认在屏幕上显示指定文件的末尾10行
参数:
-f 显示文件最新追加的内容。
-行数 在屏幕上显示指定文件的末尾参数设置的行数
编辑器三种模式
三种模式:
#编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式
#输入模式:大部分机键动作都会理解为输入的字符
#末行模式:在末行模式,输入很多文件管理命令
模式之间的相互转换:
------------------------------------------
#编辑-->输入
i
ctrl+f 向下翻一页
ctrl+b 向上翻一页
------------------------------------------
#输入模式-->编辑模式
ESC(键盘左上方的按键)
------------------------------------------
#编辑模式--->末行模式
:
:wq --> 保存退出
:q! --> 退出不保存
------------------------------------------
#末行模式:-->编辑模式
ESC(键盘左上方的按键)(一次或者多次)
------------------------------------------
#删除命令
dd: 删除光标所在行 (编辑模式)
3dd:从光标行开始删除3行(编辑模式)
: 1,4d 删除第一行到第四行(末行模式)
#复制粘贴命令
yy 复制光标所在行 (编辑模式)
2yy 从光标行开始复制2行(编辑模式)
p: 粘贴命令
#查找替换
#文件的查找
/parttern 从前往后查找
?parttern 从后往前查找
n: 下一个匹配的字符串
N: 上一个匹配的字符串
#文本的替换(末行模式)
startNum,endNums/partter/string/gi
g:全局替换
i:忽略大小写
%s/f/F/gi
:.,$s/F/f/gi
/关键字 按n找下一个
set number 设置行号
或者
set nu
取消行号
set nu!
查看进程
用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
ps -ef 显示出的结果:
1.UID 用户ID
2.PID 进程ID
3.PPID 父进程ID
4.C CPU占用率
5.STIME 开始时间
6.TTY 开始此进程的TTY----终端设备
7.TIME 此进程运行的总时间
8.CMD 命令名
经典使用:ps查询出进程,使用管道符把查询出来的进程作为结果被右边使用
ps -ef | grep java
杀死进程
kill -9 pid
防火墙
centos7的防火墙程序服务名为:firewalld
防火墙配置命令:firewall-cmd
#防火墙帮助:
firewall-cmd --help
#查看防火墙状态:
firewall-cmd --state
#查看所有打开的端口:
firewall-cmd --zone=public --list-ports
#开启端口:
firewall-cmd --zone=public --add-port=端口号/tcp --permanent(--permanent参数为永久生效,不加则重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
#更新防火墙规则:
firewall-cmd --reload
#删除端口:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanent
firewall-cmd --zone=public --remove-port=80/tcp --permanent
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
软件的安装
rpm
rpm 常用命令
#安装一个包
rpm -ivh <包名>
rpm -ivh --nodeps <包名> : 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
--force 即使覆盖属于其它包的文件也强迫安装
#查询一个包是否被安装
rpm -q <软件名>
#得到被安装的包的信息
rpm -qi < 软件名>
#列出该包中有哪些文件
rpm -ql < 软件名>
#列出服务器上的一个文件或目录属于哪一个RPM包
rpm -qf <文件或目录名>
#列出所有被安装的rpm package
rpm -qa
#卸载一个包
rpm -e <软件名>
#有安装包,知道依赖关系使用rpm
yum
#配置一个自定义的仓库地址
/etc/yum.repos.d
local.repo
#安装命令
yum install
#查看软件包
yum list |grep mysql
yum list installed
#卸载软件包
yum remove
#没安装包, 不知道依赖关系,使用yum
修改仓库地址为阿里巴巴
第一步:将原来的目录改个名,晾到一边
mv /etc/yum.repos.d /etc/yum.repos.d-bak
第二步:原来的目录还得再恢复
mkdir /etc/yum.repos.d
第三步:下载阿里云的yum源配置
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/repo/Centos-7.repo
第四步:清除yum原来的缓存
yum clean all
//注意clean与all之间还有一个空格
第五步:查看这个软件源中有多少软件包
yum repolist
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00
extras | 3.4 kB 00:00
updates | 3.4 kB 00:00
(1/4): base/7/x86_64/group_gz | 166 kB 00:00
(2/4): extras/7/x86_64/primary_db | 187 kB 00:05
base/7/x86_64/primary_db FAILED
http://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/03d0a660eb33174331aee3e077e11d4c017412d761b7f2eaa8555e7898e701e0-primary.sqlite.bz2: [Errno 14] curl#7 - "Failed connect to mirrors.aliyuncs.com:80; Connection refused"
Trying other mirror.
(3/4): updates/7/x86_64/primary_db | 5.2 MB 00:26
(4/4): base/7/x86_64/primary_db | 5.9 MB 00:30
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,911
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 402
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 1,333
repolist: 11,646
如果最后一行的repolist后面是0,那你肯定是某个地方弄错了,得找找原因会不会是网络不通呢?
ping mirrors.aliyun.com
ping不通?肯定要找一找网络的问题了。