Linux
linux基础
介绍
Linux是一款操作系统,免费、开源、安全、高效、稳定、处理高并发非常强悍,很多的企业级项目都部署到Linux/unit服务器运行。
Linux目录结构
Linux的文件系统采用级层式的目录结构,最上层是根目录“/”,然后再此目录下创建其他的目录。在Linux中,一切皆文件。
具体目录结构:
- /bin(/usr/bin、/usr/local/bin)Binnary的缩写,存放最经常使用的命令。
- /sbin(/usr/sbin、/usr/local/sbin)s指super user,存放系统管理员使用的系统管理程序。
- /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名。
- /root 系统管理员用户的主目录。
- /lib 系统开机所需要最基本的动态连接共享库,作用类似于Windows的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /etc 所有的系统管理需要的配置文件和子目录。
- /usr 存放用户的应用程序和文件,类似Windows下的program files目录。
- /boot 存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件。
- /proc 是一个虚拟目录,是系统内存的映射,访问这个目录可以获取系统信息。
- /srv service的缩写,存放一些服务启动之后需要提取的数据。
- /sys 该目录下安装了2.6内核中新出现的一个文件系统。
- /dev 类似Windows的设备管理器,把所有的硬件用文件形式存储。
- /media Linux系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下。
- /mnt 用户临时挂载别的文件系统,可以将外部的存储挂载在/mnt/上。
- /opt 给主机额外安装软件(安装包)的目录。如安装数据库就可以放到该目录下。
- /usr/local 额外软件的安装目录。
- /var 存放不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
vi和vim编辑器
所有的Linux系统都内置vi文本编辑器。
vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,具有代码补全、编译及错误跳转等功能。
vi和vim常用的三种模式
正常模式:以vim打开一个文档就进入正常模式(默认模式)。在这个模式中可以移动光标,可以使用删除字符或删除整行来处理文档内容,也可以使用复制黏贴来处理文件数据。
插入模式:按i进入编辑模式。
命令模式:在这个模式可以根据相关指令,完成读取、存盘、替换、离开vim、显示行号等操作。
vi和vim模式的相互切换
vi和vim快捷键
在文件中查找某个单词,命令模式下/关键字,回车查找,n下一个
设置取消文件行号,命令模式下:set nu和:set nonu,快速定位到第n行:n
光标移动到文档末尾G首行gg
u撤销上一步
复制当前行yy,复制当前行下的n行,nyy,粘贴p
删除当前行dd,删除当前行下的n行ndd
更多vim操作可以参考https://www.cnblogs.com/MMLoveMeMM/articles/3707287.html
用户管理
创建用户
-
语法
useradd 用户名
-
说明
- 当用户创建成功后,会自动的在/home目录下创建和用户同名相同的目录
- 也可以通过useradd -d 指定目录 用户名,给新创建的用户指定目录
更改用户密码
-
语法
passwd 用户名
删除用户
-
语法
userdel 用户名
- 删除用户,但是保留用户目录
- 删除用户以及用户目录
查询用户
-
语法
id 用户名
uid:用户id、gid:组id、组名
切换用户
如果当前用户权限不够,可以通过su - 指令,切换到高权限用户。
-
语法
su - 切换用户名
- 说明
- 从高权限用户切换到低权限用户,不需要输入密码,反之需要
- 可以使用exit指令返回到原来的用户
查看当前用户
-
语法
whoami/who am i
用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理。
增加组
-
语法
groupadd 组名
删除组
-
语法
groupdel 组名
创建用户时指定用户组
-
语法
useradd -g 用户组 用户名
修改用户组
-
语法
usermod -g 用户组 用户名
用户和组相关的文件
/etc/passwd文件
用户的配置文件,记录用户的各种信息
每行的含义:用户名:密码:用户id:组id:描述:主目录:登录shell
/etc/shadow文件
密码的配置文件
每行的含义:登录名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件
group的配置文件
每行含义:组名:密码:组id:组内用户列表
实用命令
指令运行级别
- 关机
- 单用户【找回丢失密码】
- 多用户状态没有网络服务
- 多用户状态有网络服务
- 系统未使用保留给用户
- 图形界面
- 系统重启
帮助指令
man获得帮助信息
-
语法
man [命令或配置文件]
查看ls命令的帮助信息
help指令
-
语法
help 命令(功能描述:获得shell内置命令的帮助信息)
文件目录类指令
pwd
-
语法
pwd(显示当前工作目录的绝对路径)
ls
-
语法
ls [选项] [目录或文件]
-
常用选项
-a:显示当前目录的所有文件和目录,包括隐藏的
-l:以列表的方式展示信息
cd
-
语法
cd [参数](切换到指定目录)
-
常用参数
cd ~:回到自己的home目录
cd …:回到上一级目录
mkdir
用于创建目录(make directory)
-
语法
mkdir [选项] 要创建的目录
-
常用选项
-p:创建多级目录
rmdir
rmdir删除的是空目录。如果目录下有内容是无法删除的。如果要删除非空目录,需要使用rm -rf 要删除的目录。
-
语法
rmdir [选项] 要删除的空目录
touch
创建空文件
-
语法
touch 文件名称
cp
拷贝文件到指定目录
-
语法
cp [选项] source target
-
常用选项
-r:递归复制整个文件夹
rm
删除文件或者目录
-
语法
rm [选项] 要删除的文件或者目录
-
常用选项
-r:递归删除整个文件夹
-f:强制删除不提示
mv
移动文件目录或重命名
-
语法
mv oldFileName newFileName (重命名)
mv moveFile targetFolder (移动文件)
cat
查看文件内容
-
语法
cat [选项] 要查看的文件
-
常用选项
-n:显示行号
-
使用细节
cat只能查看文件,不能修改文件,分页显示使用 | more,空格键下一页
more
more指令是一个基于vi编辑器的文本过滤器,它以全屏的方式按页显示文本文件的内容。
-
语法
more 要查看的文件
操作 | 说明 |
---|---|
space | 向下翻一页 |
Enter | 向下翻一行 |
q | 立刻离开more |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
less
less指令用来分屏查看文件内容,功能与more类似,但是比more更加强大,支持各种显示终端。less指令再显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示加载需要的内容,对于显示大型文件具有较高的效率。
-
语法
less 要查看的文件
操作 | 说明 |
---|---|
space | 向下翻一页 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字符 | 向下搜索【字符】,n:向下查找,N:向上查找 |
?字符 | 向上搜索【字符】,n:向上查找,N:向下查找 |
q | 退出less |
>指令和>>指令
>输出重定向和>>追加
- 语法
- ls -l >文件 (列表的内容写入到文件中(覆盖写))
- ls -al>>文件 (列表的内容追加到文件中)
- cat 文件1>文件2 (将文件1的内容覆盖到文件2)
- echo “内容”>>文件 (内容追加到文件中)
echo
输出内容到控制台
-
语法
echo [选项] 输出内容
head
显示文件的开头部分内容,默认显示文件的前10行
-
语法
head 文件 (查看文件的头10行)
head -n 5 (查看文件头5行,5可以时任意行数)
tail
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行
-
语法
tail 文件 (查看文件后10行)
tail -n 5 文件 (查看文件后5行,5可以时任意行数)
tail -f 文件 (实时追踪文件的所有更新)
ln
软链接也叫符号链接,类似于Windows的快捷方式,主要存放了链接其他文件的路径
-
语法
ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)
history
查看已经执行过的历史指令,也可以执行历史指令
-
语法
history
案例1:显示最近使用过的10个指令
案例2:执行编号1052的指令
时间日期类型
date
显示当前日期
- 语法
- date (显示当前时间)
- date “+%Y” (显示年)
- date “+%m” (显示月)
- date “+%d” (显示日)
设置日期
-
语法
date -s 日期字符
查看日历
-
语法
cal [选项]
搜索查找类
find
find指令将从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示 再终端
-
语法
find [搜索范围] [选项]
选项 | 功能 |
---|---|
-name(查询方式) | 按照指定的文件名查找文件 |
-user(用户名) | 查找属于指定用户名的所有文件 |
-size(文件大小) | 按指定的文件大小查找文件 |
查找系统中大于100m的文件(+大于、-小于)
locate
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位。locate指令无需遍历整个文件系统,查询速度快。
-
语法
locate 搜索文件名
-
特别说明
第一次运行时使用updatedb创建locate数据库
grep指令和管道符|
grep过滤查找,管道符“|”表示将一个命令的处理结果传递给后面的命令处理
-
语法
grep [选项] 查找文件内容 源文件
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
压缩和解压缩类
gzip/gunzip
gzip用于压缩文件,gunzip用于解压
-
语法
gzip 文件 (压缩文件,只能压缩为*.gz文件)
说明:使用gzip进行压缩后,不会保留原来的文件
gunzip 文件 (解压缩)
zip/unzip
zip用于压缩文件,unzip用于解压缩
-
语法
zip [选项] 压缩后的名字.zip 将要压缩的内容(压缩文件和目录)
unzip [选项] 被解压缩的文件名.zip(解压缩文件)
-
zip常用选项:
-r:递归压缩,即压缩目录
-
unzip常用选项
-d [目录]:指定解压后存放目录
tar
tar是打包指令,打包成.tar.gz文件。
-
语法
tar [选项] 打包后的文件名.tar.gz 打包的内容
-
选项说明
选项 功能 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解压.tar文件 -
应用实例
-
压缩多个文件
-
压缩文件夹
-
解压文件到当前目录
-
解压文件到指定目录
注:指定解压到的目录要存在才能成功。
-
-
文件权限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-64JTW5PD-1612541177507)(C:\Users\junwe\AppData\Roaming\Typora\typora-user-images\image-20210124151023592.png)]
文件权限:由三位二进制数表示,1表示拥有权限。如果拥有所有权限,用二进制数111表示,对应十进制的7
r(读) w(写) x(执行) 用户组
- 前三位:拥有者
- 中间三位:同组用户
- 最后三位:其他用户
chmod
-
方式一
修改tom.txt文件,其他用户不可读
拥有者权限:6=22+21+20
同组用户权限:4=22
-
方式二
修改tom.txt文件,其他用户可读,同组用户可读写
o:other
g:group
定时任务调度
crontab
-
语法:crontab [选项]
-
常用选项
选项 说明 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 service crond restart 重启任务 简单的任务可以不用写脚本,直接在crontab中加入任务。
如果是比较复杂的任务,需要写shell脚本。
-
时间占位符
项目 含义 范围 第一个“*” 一小时中的第几分钟 0-59 第二个“*” 一天中的第几小时 0-23 第三个“*” 一月中的第几天 1-31 第四个“*” 一年中的第几月 1-12 第五个“*” 一周中的星期几 0-7(0和7都表示星期日) -
特殊字符
符号 含义 * 代表任何时间 , 多个值之间的间隔 - 连续的时间范围 */n 代表时间间隔 -
应用
每间隔一分钟,打印一段文字到/home/temp/cron.txt文件中
-
方式一
-
新建定时任务,crontab -e
-
编辑定时任务并写入
-
结果
-
-
方式二
-
新建shell脚本
-
给脚本可执行权限
-
新建定时任务
-
执行结果
-
-
磁盘分区
分区的方式
- mbr分区
- 最多支持四个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- MBR最大只支持2TB,但拥有最好的兼容性
- gtp分区
- 支持无限多个主分区(但操作系统可能限制,比如Windows下最多128个分区)
- 最大支持18EB的容量(1EB=1024PB,1PB=1024TB)
Windows分区
Linux分区
lsblk -f:查看系统分区和挂载情况
磁盘情况查询
查询系统整体磁盘使用情况
-
语法
df -h
查询指定目录的磁盘占用情况
-
语法
du -h /目录(默认当前目录)
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
-c 列出明细同时增加汇总值
–max-depth=1 子目录深度
工作实用指令
-
统计/home目录下文件个数
grep:支持正则表达式,wc:word count
-
统计/home目录下文件夹个数
-
统计/home目录下文件个数,包括子文件夹里的
-R:递归
-
以树状显示目录结构
找不到tree命令,yum install tree安装插件
网络配置
Linux网络配置原理图(含虚拟机)
查看Linux虚拟机IP
查看Windows IP
ping测试主机间网络连通性
-
语法
ping 目的主机
进程管理
显示系统执行的进程
ps命令用来查看哪些进程正在执行,以及它们的执行状态
ps显示的信息选项
字段 | 说明 |
---|---|
PID | 进程号 |
TTY | 终端机号 |
TIME | 进程消耗CPU时间 |
CMD | 正在执行的命令或进程名 |
ps -a:显示当前终端的所有进程信息
ps -u:以用户的格式显示进程信息
ps -x:显示后台进程运行的参数
ps -ef:以全格式显示当前所有的进程。-e 显示所有进程,-f全格式
终止进程kill和killall
-
语法
kill [选项] 进程号(功能:通过进程号杀死进程)
killall 进程名(功能:通过进程名杀死进程,支持通配符)
-
常用选项
-9:强制停止进程
-
实践
-
剔除ssh远程登录
-
终止远程登录服务sshd
-
服务管理
service指令
-
语法
service 服务名 start|stop|restart|reload|status
CentOS7.0后可以使用systemctl
-
案例
查看当前防火墙状态
telnet
通过telnet指令检查Linux的某个端口是否在监听
-
语法
telnet ip 端口
查看服务名
方式1:使用setup->系统服务查看
[*]自动启动
方式2:systemctl list-units --type=service
服务的运行级别
Linux系统又7种运行级别,常用的级别是3和5
- 0:系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动
- 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 2:多用户状态,不支持网络
- 3:完全的多用户状态,登录后进入控制台命令行模式
- 4:系统未使用,保留
- 5:X11控制台,登录后进入图形GUI模式
- 6:系统正常关闭并重启,默认级别不能设置为6,否则不能正常启动
每个服务对应不同的运行级别可以设置不同值
动态监控进程
top与ps命令相似。都可以用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
-
语法
top [选项]
-
选项说明
选项 功能 -d 秒数 指定间隔几秒更新,默认是3秒 -i 不显示任何闲置或者僵死进程 -p 指定监控进程ID -
交互操作说明
操作 功能 P 以CPU使用率排序,默认就是此项 M 以内存使用率排序 N 以PID排序 q 退出top u 切换用户 k 指定要杀死进程id -
实例
案例一:监控特定用
第一步:输入top回车,查看执行的进程
第二步:输入u回车,再输入用户名
案例二:终止指定的进程
第一步:top回车
第二步:输入k回车,输入要结束的进程ID
监控网络状态
查看系统网络情况netstat
-
语法
netstat [选项]
-
选项说明
-an:按一定顺序排列
-p:显示哪个进程在调用
-
实例
查看所有网络服务
RPM和YUM
RPM包管理
用于在互联网下载包的打包及安装工具,它包含在某些Linux分发版本中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Mananger(RedHat软件包管理工具)的缩写,类似Windows的setup.exe。
rpm包管理
-
查询指令
rpm -qa:查询安装的所有rpm软件包
rpm -q 软件包名:查询软件包是否安装
rpm -qi 软件包包名:信息
-
卸载指令
-
语法
rpm -e 包名
-
-
安装指令
-
语法
rpm -ivh 包全路径名称
-
参数说明
i=install
v=verbose 提示
h=hash 进度条
-
yum
yum是一个shell前端软件包管理器。基于rpm包管理,能够从指定服务器自动下载rpm包并安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
-
基本指令
-
查询yum服务器是否有需要安装的软件:yum list|grep XX
-
安装指定的yum包:yum install XX
-
搭建JavaEE环境
安装JDK
-
查看jdk软件包
-
查看是否安装成功
-
jdk默认安装路径
-
配置全局变量vim /etc/profile,添加如下配置,JAVA_HOME对应安装目录中的jdk
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH
-
执行source /etc/profile使全局变量生效
安装Tomcat
-
执行yum install tomcat
-
tomcat的默认安装路径/usr/share/tomcat
-
启动tomcat
-
安装管理包yum install tomcat-webapps tomcat-admin-webapps
-
添加用户
在tomcat安装目录,进入conf目录,编辑tomcat-users.xml文件,在 标签下,添加如下配置
<role rolename="manager-gui"/> <user username="root" password="root" roles="manager-gui"/>
-
进入Manager App,可以在此部署应用程序