linux
linux
目录结构中常用目录介绍
- “/bin”: bin是Binary的缩写,这个目录存放着最经常使用的命令
- "/home": 存放普通用户的主目录,一般该目录名是以用户的账号命名的。
- "/root": 该目录为系统管理员,也称作超级权限者的用户主目录。
- "/etc": 所有的系统管理所需要的配置文件和子目录。
- "/usr": 重要,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
- "/boot": 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- "/media": linux会把识别的移动设备挂载到这个目录下。CentOS7在/run/media/root/media
- "/mnt": 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上
- "/opt": 这是给主机额外安装软件所摆放的目录。比如你安装JDK、Tomcat则就可以放到这个目录下。
- "/var": 这个目录中存放着在不断扩充着的东西,经常被修改的目录。包括各种日志文件。
文件编辑
vim
是Linux中重要的文本编辑器,我们使用vim
可以在Linux中编辑文件,vim
可以看做是之前vi
编辑器的升级版本
文件编辑过程中的三种模式
一般模式(无法编辑):通过按键控制VIM工作
编辑模式(可以编辑无法保存):可以自由输入
指令模式(可以执行保存、查找等操作):通过执行指令完成一些特殊操作
一般模式
- yy复制光标所在行
- p在下方粘贴一行
- dd删除光标所在行
- u撤销
- x向后删除
- ^移动到行头
- $移动到行尾
- 数字+G移动到目标行
- G移动到页尾
- gg移动到页头
编辑模式
按键 | 大小写说明 | 光标动作 |
---|---|---|
i | 小写,常用 | 不动,就在当前位置,开始输入 |
I | 大写 | 移动到行的开头,开始输入 |
a | 小写 | 光标向后移动一格,然后开始输入 |
A | 大写 | 光标移动到行的末尾,然后开始输入 |
o | 小写,常用 | 先在光标所在行的下面插入空行 然后把光标移动到空行的开头,再开始输入 |
esc键退出编辑模式
指令模式
冒号进入指令模式
命令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制退出 |
:%s/旧字符/新字符 | 批量替换 |
ZZ 或者 :wq! 最常用 | 保存退出 |
/ 要查找的词 | n 查找下一个 |
:set nu 相当于:set number,如果关闭 :set nonu | 显示行号 |
常见的问题
提示存在交换文件
- 可能原因1:其他窗口正在使用vim打开同一个文件
- 可能原因2:非正常关机等原因导致vim没有正常退出
- 可能原因3:使用了ctrl+c异常关闭文件
解决方法
- 最下面的提示输入Q退出
- 删除交换文件,重新编辑
屏幕被锁
在Linux环境下Ctrl+s是锁屏
可以使用Ctrl+q解锁,然后继续操作。
如果network无法开启
估计是和NetworkManager冲突,关闭NetworkManager即可
Linux常用命令
帮助文档
man [命令或配置文件] 怎样使用命令等
例如 man ls
--help (提示使用方法)
例如ls --help
可以提示ls命令的相关使用方法
清除屏幕
命令: clear
快捷键: ctrl + L
网络配置
-
显示所有网络接口的配置信息
- ifconfig
-
修改IP地址
- vim /etc/sysconfig/network-scripts/ifcfg-ens33
- BOOTPROTO=static 这里原本是dhcp自动获取,改为静态
- 以下是新增内容
- IPADDR=192.168.6.100 #IP地址
- GATEWAY=192.168.6.2 #网关
- DNS1=114.114.114.114 #域名解析器
- :wq! 保存退出
- 执行systemctl restart network命令
- 如果报错,reboot,重启虚拟机
-
配置主机名
-
查看当前主机名
- hostname
-
修改主机名称
- vim /etc/hostname 修改完成后保存退出即可
-
配置主机名找到ip
- vim /etc/hosts
- ip地址 显示的主机名称
-
重启后生效
-
临时服务管理
基本语法(CentOS 7)
- 开启服务
- systemctl start 服务名
- 关闭服务
- systemctl stop 服务名
- 重启服务
- systemctl restart 服务名
- 查看服务状态
- systemctl status 服务名
- 查看正在运行的服务
- systemctl --type service
- 重新加载服务
- systemctl reload 服务名
防火墙
除了停止服务,还要设置为开机不自动启动。
服务名:firewalld
停止防火墙:systemctl stop firewalld
设置开机不自动启动:systemctl disable firewalld
关机重启
命令 | 作用 |
---|---|
sync 全称synchronize | 将内存数据保存到硬盘上 |
poweroff 电源关闭 | 关机 |
reboot | 重启 |
常用快捷键
按键 | 作用 |
---|---|
Ctrl+l | 清屏 |
Ctrl+c | 强制终止程序 |
tab | 自动补全 |
上下键 | 查找执行过的命令 |
下载文件
wget
-P 参数可以指定目标目录
wget -P /root https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
文件目录类
ls -l 比较常用,所以别名是ll
[选项]表示可选项
-
pwd 显示当前工作目录的绝对路径
- pwd: 全称 print working directory 打印工作目录
- pwd /root
-
ls列出目录的内容
- ls [选项] [目录或是文件]
- -a
- 全部的文件,开头为点的隐藏文件一起列出
- -l
- 包含文件的属性和权限数据
- -a
- ls [选项] [目录或是文件]
-
cd 切换目录
- cd 绝对路径(相对),进入该目录
- cd.. 回到当前目录的上一级目录
- cd~ 或者cd 回到自己的家目录
- cd- 回到上一次所在目录
- cd -P 跳转到实际物理路径,而非软路径(快捷方式路径)
-
mkdir 创建一个新的目录
- mkdir [选项] 要创建的目录
- -p 表示创建多层目录
- 不加p只能创建单个目录
- mkdir [选项] 要创建的目录
-
touch 创建空文件
- touch 文件名称
- 如果想立刻写内容,直接用vim 文件名即可
-
cp 复制文件或目录
- cp [选项] 源文件 目标文件
- -r 递归复制整个文件夹
- cp [选项] 源文件 目标文件
-
rm 移除文件或目录
-
rm [选项] 要删除的目录
- -r 递归删除目录中所有内容
- -f 强制执行删除操作,不用确认
- -v 显示指令的详细执行过程
-
递归删除目录中所有内容
- rm -rf 文件名/
-
-
mv 移动文件与目录或重命名
- 重命名
- mv 旧名 新名
- 移动文件
- mv 文件 目的地
- 重命名
-
cat 查看文件内容
- cat [选项] 要查看的文件
- -n 查看文件内容并显示行号
- cat [选项] 要查看的文件
-
less 分屏显示文件内容
- less 要查看的文件
- 上下键翻页
- q 离开less程序
-
echo 输出内容到控制台
- echo [选项] [输出内容]
- -e 支持转义字符的字符转换
- 比如输出\n换行等
- echo [选项] [输出内容]
-
tail 输出文件尾部内容
- 默认情况下tail指令显示文件的后10行内容
- -n 行数 行数必须是数字
- -f 显示文件最新追加的内容
- 一般用于查看日志文件
- 默认情况下tail指令显示文件的后10行内容
-
> 覆盖 和 >> 追加
- ll >文件 列表的内容写入文件a.txt中(覆盖写)
- 将ls查看信息写入到文件中
- ls -l>houge.txt 相当于这个
- ll >>文件 列表的内容追加到文件aa.txt的末尾
- 将ls查看信息追加到文件中
- ls -l>>houge.txt
- ll >文件 列表的内容写入文件a.txt中(覆盖写)
用户管理命令
sudo 设置普通用户具有root权限
修改配置文件
vim /etc/sudoers
91行,在root下面添加一行
92行 root ALL=(ALL) ALL
用户名 ALL=(ALL) ALL
文件权限类
可以使用ll或者ls -l命令来显示一个文件的属性
-
首位表示类型,如果没有权限,就会出现减号[ - ]
- - 代表文件
- d 表示目录
- l 链接文档(link file)
-
第1-3位确定主人(文件的所有者),拥有该文件的权限 user
-
第4-6位确定属于哪个组(同组用户),拥有该文件的权限 group
-
第7-9位确定其他用户拥有该文件的权限 other
-
r:读(read)
- 读文件:查看文件内容
- 例如:cat、less、tail等命令
- 读目录:查看目录内容
- 例如:使用ll命令查看目录内容
- 读文件:查看文件内容
-
w:写(write)
- 写文件:向文件中写入新内容
- 不一定可以删除该文件,所在的目录有写权限,才能删除该文件
- 写目录:在目录里面增删内容
- 写文件:向文件中写入新内容
-
x:执行(execute)
- 执行文件:把文件当作可执行文件来运行
- 执行目录:使用cd命令进入目录
-
-:无权限
-
第一种方式变更权限
- chmod [{ugoa}{+-=}{rwx}] 文件或目录
- ugoa,表示要添加权限的字段
- +号表示添加某个权限,-号去掉某个权限,=号只能是这个权限
- rwx表示哪个权限
-
第二种方式变更权限
- chmod [mode=421] [文件或目录]
-
经验技巧
- u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
- 每个字段都有对应的rwx
- r=4 w=2 x=1 rwx=4+2+1=7
-
举例
- 修改文件使其所属主用户具有执行权限
- chmod u+x houge.txt
- 修改文件使其所属组用户具有执行权限
- chmod g+x houge.txt
- 修改文件所属主用户执行权限,并使其他用户具有执行权限
- chmod u-x,o+x houge.txt
- 采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
- chmod 777 houge.txt
- 修改整个文件夹里面的都具有可读可写可执行权限。
- chmod -R 777 xiyou/
- 修改文件使其所属主用户具有执行权限
搜索查找类
find 查找文件或者目录
find [搜索范围] [选项]
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件。 |
举例
- 按文件名:根据名称查找 /目录 下的filename.txt文件
- find xiyou/ -name “*.txt”
- 按拥有者:查找/opt目录下,用户名称为-user的文件
- find opt/ -user atguigu
- 按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)
- find /home -size +204800
- 不指定目录
- find -name "*.txt"
grep
管道筛选,grep配合进行管道筛选
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
grep 选项 查找内容 源文件
-n 表示匹配行和行号
查找某文件在第几行
ls | grep -n test
|
前面的表示数据源,| grep
后面表示筛选条件
which 查找命令
举例,查找命令在那个目录下
which ll
压缩和解压类
tar 打包
tar [选项] XXX.tar.gz 将要打包进去的内容
打包目录,压缩后的文件格式.tar.gz
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-x | 解包.tar文件 |
-z | 打包同时压缩 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
- 解压到当前目录
- tar -zxvf houma.tar.gz
- 解压到指定目录(必须是已经存在的) -C
- tar -zxvf xiyou.tar.gz -C /opt
- 压缩用-zcvf
磁盘分区类
fdisk查看分区
fdisk -l (功能描述:查看磁盘分区详情)
该命令必须在root用户下才能使用
Device:分区序列
Blocks:容量
进程线程类
ps:process status 进程状态
ps
命令是用于查看进程状态的命令
ps -aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)查看服务有没有开启
e参数(对应单词entire,表示全部)
f
参数(对应单词full-formate,表示完整格式。)
选项 | 功能 |
---|---|
-a | 选择所有进程 |
-u | 显示所有用户的所有进程 |
-x | 显示没有终端的进程 |
(1)ps -aux显示信息说明
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
(2)ps -ef显示信息说明-----用的比较多
PID:进程ID
PPID:父进程ID
如果想查看进程的CPU占用率和内存占用率,可以使用aux;
如果想查看进程的父进程ID可以使用ef;
kill 终止进程
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
选项是-9,表示强迫进程立即停止
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符)
RPM
Linux 系统中命令的参数往往有这样的特点:
- 参数如果是一个或多个完整的单词那么前面是两个“--”
- 参数如果是单词的缩写,是一个字母,那么前面是一个“-”
RedHat软件包管理工具,打包安装工具
适合用于装旧版或者指定版本的软件
- RPM查询命令(rpm -qa)
- rpm -qa (功能描述:查询所安装的所有rpm软件包)
- 由于软件包比较多,一般都会采取过滤。rpm -qa | grep 软件包名
- 查询firefox软件安装情况
- rpm -qa |grep firefox
- RPM卸载命令(rpm -e)
- rpm -e 软件包名
- 卸载软件包名
- 有依赖的情况下卸载不了
- rpm -e --nodeps 软件包名 nodepends
- 卸载软件时,不检查依赖。
- 所依赖的软件可能运行不了
- rpm -e 软件包名
- RPM安装命令(rpm -ivh)
- rpm -ivh 包全名
选项 | 功能 |
---|---|
-i | -i=install,安装 |
-v | -v=verbose,显示详细信息 |
-h | -h=hash,进度条 |
--nodeps少用 | --nodeps,不检测依赖进度 |
YUM仓库配置
Shell前端软件包管理器,基于RPM包管理,类似maven
能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系
YUM的常用命令
yum [选项] [参数]
选项可选,-y 表示默认选择yes
参数 | 功能 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist 全称dependlist | 显示yum软件包的所有依赖关系 |
采用yum方式安装firefox
yum -y install firefox.x86_64
程序的安装
安装jdk
-
先查询自带的jdk
- rpm -qa | grep jdk
-
卸载系统预装的JDK
- rpm -e –nodeps 第一步查询出来的数据,如果是多个则用空格分隔
-
jdk的压缩包传输到虚拟机的
/opt
目录下的自定义目录 -
解压jdk压缩包
- tar -zxvf jdk-8u152-linux-x64.tar.gz -C /opt
-
在/etc/profile.d目录下创建my_env.sh文件,设置环境变量
# 声明 JAVA_HOME 环境变量,等号两边不能有空格 JAVA_HOME=/opt/jdk1.8.0_152 # 给 PATH 环境变量附加 $JAVA_HOME/bin 部分 # $PATH 表示引用 PATH 环境变量以前的旧值 # 使用英文冒号连接 # $JAVA_HOME 表示对 JAVA_HOME 变量的引用 # $JAVA_HOME/bin 表示指向可执行文件 PATH=$JAVA_HOME/bin:$PATH # 发布 # 发布是发布变量名,不是引用变量的值,所以前面不写 $ 符号 export JAVA_HOME PATH
- 执行source /etc/profile.d/my_env.sh使环境变量立即生效
- echo $JAVA_HOME 有内容输出就说明生效了,否则reboot重庆
安装Tomcat
-
将tomcat的压缩包上传到/opt目录下的自定义目录
- tar -zxvf /opt/apache-tomcat-8.5.32.tar.gz -C /opt
-
进入tomcat的bin目录执行./startup.sh启动tomcat服务器
-
./表示当前目录的意思
-
关闭则shutdown.sh
-
安装MySQL
- 卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉)
- rpm -qa | grep mariadb
- 删除系统中预装的mariadb(如果第一步没查到就不删)
- rpm -e --nodeps 第一步查询到的结果
- 按照标号依次安装rpm软件包
- rpm -ivh xxxxxxxxx等
- 安装mysql-server时有可能出现以下异常
- libaio.so.1()(64bit) 被 mysql-community-server-5.7.29-1.el7.x86_64 需要
- 可以通过yum安装缺少的依赖:yum install -y libaio
- 初始化MySQL:生成临时密码
- mysqld --initialize --user=mysql
- 查看密码cat /var/log/mysqld.log
- 启动MySQL服务:
- systemctl start mysqld
- 临时密码连接MySQL之后修改密码
- set password=password('新的密码');
- 编辑/etc/my.cnf配置文件使用utf-8字符集
- 在[mysqld]后边添加内容,貌似是最后一行
- character-set-server=utf8
- 重启MySQL的服务
- systemctl restart mysqld
- 如果忘记密码
- 把服务关闭,删除/var/lib/mysql里的所有内容
- 重新初始化mysql即可
小结
-r删除全部,复制全部
prm -y确认全部