Linux基础 什么是Linux?
Linux它是一款基于C语言开发的操作系统内核;其主流发行版有Ubuntu、RedHat、Debain、RockyLinux,
这些发行版基于Linux系统内核构建成不同的操作系统版本,Linux系统一般作为服务器操作系统使用。
特点:支持多用户、多任务、多线程,稳定性、安全性和自由度高。
目录结构 在Linux系统下万物皆是文件,使用Linux几乎都是在根文件打交道。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /:根目录,所有目录和文件的起点 bin:存放二进制可执行文件,基本命令 boot:存放启动文件,内核文件、引导加载器 dev:设备文件,硬件和虚拟设备的接口文件 etc:存放系统和应用程序的配置文件 home:用户主目录,存放普通用户的家目录 lib/lib64:存放系统所需的共享库 media:自动挂载可移动设备,如U盘 mnt:临时手动挂载文件系统,如额外磁盘 opt:第三方或大型软件的安装目录,如IDE proc:虚拟文件系统,存放内核和进程信息 root:root用户家目录 run:存放系统运时的临时文件,重启即失效 sbin:存放系统管理员命令 srv:存放服务相关的数据 tmp:存放临时文件 usr:存放用户级应用程序和文件 var:存放经常变化的文件,如日志
系统常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #查看Linux发行版本 cat /etc/os-release #查看Linux内核版本 uname -r #查看当前用户 whoami #立刻关机 shutdown -h now #指定分钟关机 shutdown -h 数字 #重启 reboot #注销 logout #将内存中的数据同步到磁盘中,重启和关机前先执行这条命令,方式数据丢失! sync
vim 什么是vim?
vim它是一款功能强大、跨平台的文本编辑器。
vim的三种模式
普通模式:默认模式,从其它模式切换按Esc键,用来执行命令
插入模式:按 i 进入插入模式,可以对文件编辑
命令行模式:在普通模式按 : 冒号进入,用来执行保存、退出、搜索、等操作
安装
快捷键
快捷键
作用
yy
拷贝当前行,5yy向下拷贝5行,按p粘贴
dd
删除当前行,5dd向下删除5行
/关键字
根据关键字在文件中查找内容,回车查找,n查找下一个
set nu
显示行号
set nonu
不显示行号
shift+g
跳转文件最末尾处,按56接着按shift+g可以快速跳转56行
gg
跳转文件首行
u
撤销上一次输入动作
忘记root密码 1、在开机动画页面按e
2、找到以linux16开头的段落,在末尾的UTF-8后面加上init=/bin/sh,再按ctrl+x键进入单用户模式
3、进入单用户名模式后输入,mount -o remount,rw / 回车
4、再次输入passwd后回车,输入第一次新密码后回车,再次输入新密码确定
5、再次输入touch /.autorelabel回车
6、最后输入exec /sbin/init回车,系统重启输入新密码即可
文件目录管理 1 2 3 以 d 开头的是目录 以 - 开头的是文件 以 l 开头的是软连接,类似快捷方式
文件目录常用命令
命令
作用
语法
pwd
显示当前所在工作目录绝对路径
pwd
ll
以列表形式查看当前目录内容信息
ll
ls -a
查看当前目录所有内容信息,包括隐藏文件
ls -a
tree
以树状显示目录结构
tree [目录名称]
cd
目录之间切换
cd [目录路径]
mkdir
创建目录,加 -p 可以创建多级目录
mkdir [目录名称]
rmdir
删除空目录
rmdir [目录名称]
rm
删除指令,-r 递归删除,-f 强制删除不提醒
rm -rf [目录或文件名称]
touch
创建空文件
touch [文件名]
cp
拷贝文件或目录,加 -r 可以递归拷贝
cp [源文件] [目标路径]
mv
重命名或移动文件或目录
mv [源目录或文件] [目标路径]
cat
查看文件内容,加 -n 可以显示行号
cat -n [文件名]
less
分页查看文件内容
less [文件名]
echo
输出内容到控制台
echo [输出内容]
head
显示文件开头部分内容,加 -n 数字 可以指定显示几行
head [文件名]
tail
显示文件末尾部分内容,加 -n 数字 可以指定显示几行
tail [文件名]
tail -f
实时最终文件更新内容
tail -f
>
输出重定向,会覆盖原有内容
>>
输出追加
ln -s
软链接,相当于创建一个快捷方式
ln -s [源文件或目录] [软链接名]
history
查看历史命令,!编号 可以执行指定编号的历史命令
history
du -h 路径
查看指定路径目录大小,不加路径查看所在目录
du -h 路径
ll -h 路径
查看指定路径文件大小,不加路径查看所在文件
ll -h 路径
用户管理 用户管理常用命令
命令
作用
语法
useradd
添加用户
useradd [用户名]
passwd
修改密码
passwd [用户名]
userdel
删除用户,加 -r 连同家目录一起删除
userdel [用户名]
id
查看用户信息
id [用户名]
su
切换用户
su [用户名]
who am i
查看当前用户登录信息
who am i
usermod -l
修改用户名,不会自动更改用户的家目录名
usermod -l [新用户名] [旧用户名]
usermod -d -m
修改用户名后,将旧家目录移动到新家目录
usermod -d /home/[新用户名] -m [新用户名]
用户组管理 用户组管理常用命令
命令
作用
语法
groupadd
新增组
groupadd [组名]
groupdel
删除组,组下有成员则不能删除
groupdel [组名]
usermod -aG
追加用户到,不离开原有组
usermod -aG [组名] [用户名]
gpasswd -a
添加用户进组,推荐使用
gpasswd -a [用户名] [组名]
gpasswd -d
将用户移出组,推荐使用
gpasswd -d [用户名] [组名]
groupmod -n
修改组名
groupmod -n [新组名] [旧组名]
groupmod -g
修改组GID数字表示
groupmod -g [新GID] [组名]
groups
查看用户所属的组
groups [用户名]
搜索查找命令 在Linux中一般使用find命令在进行查找操作。
**语法:**find <搜索范围> <选项>
选项 :-name按文件名查找;-user按用户名查找;-size按大小查找
压缩解压命令 第一种zip和uzip
需要安装
1 2 yum install -y zip yum install -y uzip
**zip压缩语法:**zip [选项] 压缩包名称.zip 要压缩的文件或目录
常用选项
-r:递归压缩子目录
-q:不显示压缩过程
-e:加密压缩,设置密码
**uzip解压语法:**uzip [选项] 压缩包名称.zip
常用选项
-d:指定解压目录
-l:查看压缩包内容不解压
-o:强制覆盖已存在的文件
-q:不显示解压过程
-P:直接提供密码,不推荐,推荐进行交互
第二种tar命令
压缩:tar -zcvf 压缩包名称.tar.gz 要压缩的文件或目录
解压:tar -zxvf 压缩包名称.tar.gz
常用选项
-c:创建归档文件
-v:显示详细信息
-f:指定压缩后的文件名,必须放在最后
-z:打包同时压缩
-x:解包.tar
-C:指定解压或压缩后存放目录
文件权限管理 1 2 3 4 5 6 7 8 9 #权限 r=4:代表可读 w=2:代表可写 x=1:代表可执行 #字母代表 u:代表文件拥有者 g:代表同组内 o:代表其他组
常用命令
1 2 3 4 5 6 7 8 9 10 11 #数字形式语法 chmod [权限数字] 文件名 #字母形式语法,有 + 有 - cmoud 字母代表+权限字母 #修改文件拥有者,-R 可以递归生效 chown [选项] 用户名 文件名 #修改文件所属组,-R 可以递归生效 chgrp [选项] 组名 文件名
任务调度 设置系统在指定时间执行指定命令或程序
第一种:crontab命令 ,到了指定时间会执行
语法:crontab [选项]
常用选项
1 2 3 4 5 -e:编辑定时任务 -l:查看定时任务 -r:删除定时任务
定时任务时间规则
1 2 3 4 5 6 7 8 9 10 11 12 13 #符号代表的意思 *:代表任何时间 ,:代表不连续的时间 -:代表连续时间的范围 */n:代表每隔多久执行一次 #每个 * 代表的含义 第一个 * :代表一个小时中的第几分钟 第二个 * :代表一天中的哪个小时 第三个 * :代表一个月中的几号 第四个 * :代表一年中的几月 第五个 * :代表一周里的星期几,0和7都代表星期日
crontab定时任务例子
要求:编写脚本打印当前时间后追加到指定文件内
1、编写shlle脚本
1 2 3 vim my.sh date >> /home/yzg/showking/crontab.log
2、设置执行权限
3、编辑定时任务
1 2 3 crontab -e */1 * * * * /home/yzg/showking/my.sh
4、查看定时任务
5、等待时间到执行后查看
第二种:at命令
at定时任务只会执行一次,且需要atd守护进程每60秒检查作业队列,有作业时检查作业运行时间,当指定时间与当前时间匹配后会执行at定时任务;
编辑at定时任务会进入交互模式,按 Ctrl+d 才可以保存退出交互模式
查看atd守护进程是否运行
安装启动atd守护进程
1 2 3 yum -y install at systemctl start atd
at定时任务时间规则
1 2 3 4 5 6 7 8 9 10 11 12 13 完整时间:mm:ss YY-MM-DD 例子:at 18:40 2025-05-05 上午、下午:am代表上午,pm代表下午 例子:at 8am 或者 at 9pm 在当前时间基础上加时间:now + 数字 时间单位 now:代表当前时间 时间单位:minutes(分钟)、hours(小时)、days(天)、weeks(星期) 例子:at now + 2 minutes 今天或明天:today(今天)、tomorrow(明天) 例子:at 9am tomorrow
at定时任务实例
要求:在当前时间两分钟后执行查看指定文件命令
磁盘操作 在Linux下一切皆为文件,所以磁盘表达的方式和windows有所不同,在Linux一块磁盘可以分为多个分区,分出来的子分区通过mount命令挂载到某个指定目录,让子分区和目录产生关联,访问目录就是访问该分区。
查看磁盘情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #查看挂载情况 lsblk #详细查看挂载情况 lsblk -f #查看磁盘使用情况 df -h #查看指定目录 df -h 目录路径 #df命令常用选项 -s:指定目录占用大小总汇 -h:带计量单位 -a:将文件也显示 --max-depth=数字:子目录深度 -c:列出明细的同时,增加总汇
fdisk命令操作磁盘
1、分区
1 2 3 4 5 6 7 fdisk /dev/sd? #?代表具体是哪块硬盘,例如sda,sdb.... m:显示命令 p:显示磁盘分区 n:新增分区 d:删除分区 w:写入并退出
2、格式化
1 mkfs -t ext4 /dev/sd?? #ext4表示分区的类型
3、临时挂载
4、卸载分区
1 umount /dev/sd?? 或者 umount [挂载目录]
5、删除分区
parted命令操作磁盘(推荐使用)
MBR与GPT:它们都是分区时所要选的分区格式
MBR:老式的分区表类型,支持最大容量为2TB,最多支持4个分区,引导记录存储在第一个扇区,不推荐。
GPT:新型分区表类型,支持大于2TB的硬盘,分区数量几乎不受限制,采用全新结构,更安全、快速,推荐使用。
查看磁盘分区表情况
创建分区表
1 parted /dev/sd? mklabel gpt
注意:这条命令会格式化清楚指定磁盘上的所有数据!!!
创建子分区
1 2 #语法:parted /dev/sd? mkpart 分区类型 文件类型 容量启示位置 容量结束位置 parted /dev/sdb mkpart primary ext4 1MiB 10GiB
修改子分区容量大小
注意:尽量是由小改到大,避免大改小,大改小数据可能会丢失!!!
1 2 #语法:parted /dev/sd? resizepart 分区号 新的结束位置 parted /dev/sdb resizepart 1 15GiB
临时挂载
永久挂载,fdisk命令通用
1 2 3 4 5 #编辑/etc/fstab文件 vim /etc/fstab #添加.二选一 第一种方式:UUID=分区的UUID [挂载目录] 分区文件类型 defaults 0 0 第二种方式:/dev/sd?? [挂载目录] 分区文件类型 defaults 0 0
立即生效
卸载分区命令
1 umount /dev/sd?? 或者 umonut 挂载目录路径
删除分区命令
主机名Hosts映射 应用场景:当需要通过ping主机名的方式测试网络是否互通时,可以通过编辑Hosts文件来记录IP和主机名的映射关系,ping 主机名就等同于ping IP。
查看主机名
修改主机名
1 2 3 4 5 6 7 #第一种方式 hostnamectl set-hostname 新主机名 #第二种方式 vim /etc/hostname #修改后需要重启才能生效
配置主机名与IP映射关系
1 2 3 4 5 #编辑hosts文件 vim /etc/hosts #最后添加 IP 主机名
**知识扩展:**这里用到了DNS技术,DNS中文意思是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库;例如现实生活中的信息数据库,记录人的名字和身份证号。
DNS技术简单解析
案例:用户在浏览器输入www.baidu.com
首先请求会在浏览器缓存中去找该域名的解析IP地址,找到就调用;
没有找到则会进入本地的DNS缓存找,找到就调用;
没有找到则会进入本机的hosts文件里找,找到就调用;
没有找到则会去配置的DNS服务器里找,找到就调用,没有找到则返回该域名无效。
进程管理 在Linux中每一个执行的程序都称为一个进程,每一个进程都会分配一个ID号,也叫pid进程号;
每个进程都可能以两种方式存在,前台和后台,前台进程运行时通常都会占据屏幕可以进行交互;
后台进程则不会占据屏幕,但它已经开始工作了,例如 MySQL Tomcat,一般系统的服务都是以后天的方式存在且会常驻在系统中,直到关机才结束。
程序和进程的关系
程序是指没有通过命令运行加载进内存的源代码文件,静态的;
进程是指程序通过命令运行加载进内存开始工作后,动态的。
查看进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #查看当前终端的所有进程信息,不会显示父进程的ID ps -aux #常用选项 -a:显示所有进程 -u:以用户的格式显示进程信息 -x:显示隐藏的进程信息 #以全参数的形式查看所有进程信息,会显示父进程的ID ps -ef #分页查看进程信息 ps -aux | more ps -ef | more #过滤查看指定进程信息 ps -aux | grep 进程名称 ps -ef | grep 进程名称
进程参数解析
参数
解释
USER
进程执行用户
PID
进程号
PPID
父进程号
%CPU
CPU使用占比
%MEM
物理内存使用占比
VSZ
虚拟内存大小(KB)
RSS
物理内存大小(KB)
TTY
终端
STAT
运行状态
TIME
占用CPU时间
CMMAND
进程名,执行该进程的指令
**运行状态分类:**s 表示休眠,r 表示运行中,d 表示短期等待,z表示僵死(进程死了内存还没释放,需要手动释放),t 表示被跟踪或被停止。
终止进程
1 2 3 4 5 #只终止本进程,-9选项表示强制执行 kill [选项] 进程号 #终止本进程以及子进程 killall 进程名(如nginx)
服务管理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #启动 systemctl start 服务名称 #停止 systemctl stop 服务名称 #重启 systemctl restart 服务名称 #开启自启 systemctl enable 服务名称 #取消开机自启 systemctl disable 服务名称 #查看所有服务开机自启状态 systemctl list-unit-files #查看指定服务名开机自启状态 systemcatl is-enabled 服务名
防火墙管理 在个人学习中可以随意关闭防火墙,在工作环境中禁止关闭防火墙!!!
防火墙常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #查看已放行的端口 firewall-cmd --list-port #放行端口 firewall-cmd --permanent --add-port=端口号/协议 #关闭端口 firewall-cmd --permanent --remove-port=端口号/协议 #修改立即生效 firewall-cmd --permanent --reload #查看指定端口是否放行 firewall-cmd --query-port=端口/协议 #启动防火墙 systemctl start firewalld #关闭防火墙 systemctl stop firewalld #开机自启 systemctl enable firewalld #取消开机自启 systemctl disable firewalld
动态监控 动态监控使用 top 命令来执行,top与ps命令很相似都是用来显示正在执行的进程,它们两个最大的不同就是top命令在执行一段时间可以更新正在运行的进程。
语法格式
1 2 3 4 5 6 top [选项] #常用选项 -d:指定top命令几秒更新一次,默认3秒 -i:不显示闲置或僵死进程 -p:通过指定进程ID监控某个进程状态
交互操作指令
1 2 3 4 5 6 P:以CPI使用率排序 M:以内存使用排序 N:以PID排序 u:输入用户名动态监听指定用户情况 k:输入对应进程号终止该进程,需要root权限 q:退出
网络监控 在Linux中使用netstat和ss命令来监控网络状态,netstat命令已经逐渐被淘汰,现在推荐是ss命令。
语法格式
1 2 3 4 5 6 7 8 9 10 11 12 ss [选项] #常用选项 -t:显示TCP连接 -u:显示UPD连接 -l:监听中的套字节 -n:禁用域名解析 -p:显示进程信息 -a:显示所有 -s:统计摘要 -o:显示计时器信息 -4/-6:仅IPv4/IPv6
输出参数解析
1 2 3 4 Netid:协议类型 State:连接状态,LISTEM代表监听中 Recv-Q/Send-Q:接收/发送队列大小 Local Address:Port:本地监听的IP地址和端口
软件包管理 RockyLinux中使用npm命令和dnf命令来管理软件包,用于查看、下载、安装、卸载软件包等操作。
使用npm管理软件包
安装
1 sudo yum -y install nodejs npm
常用命令
命令
含有
npm -qa
查看所有已安装的软件包
npm -qa | more
分页查看
npm -qa | grep 包名
查看指定软件包
npm -q 包名
查看是否安装
npm -qi 包名
查看软件包信息
npm -ql 包名
查看属于软件包的所有文件
npm -qf 文件全路径
查看指定文件属于哪个软件包
npm -ivh 软件包全路径
安装软件包
npm -e 包名称(加–nodeps强制删除)
卸载软件包
使用dnf管理软件包
dnf会一次性安装软件包以及软件包所需要的依赖。
常用命令
命令
作用
dnf -y install 软件包名
安装
dnf remove 软件包名
卸载
dnf autoremove
卸载无用软件包名
dnf search 关键词
搜索软件包名
dnf list
列出所有可用软件包
dnf list installed
列出已安装的软件包
dnf updates
列出可更新的软件包
dnf info 软件包名
查看软件包信息
dnf update
更新所有可升级的软件包
dnf update 软件包名
更新指定软件包
dnf check-update
检查可更新的软件包
dnf clean all
清楚缓存
dnf makeche
重建缓存
dnf repolist
列出可用仓库
dnf repolist all
列出所有仓库
日志管理 在Linux下使用rsyslogd服务来管理日志文件,它是一个后台服务。
常用命令
1 2 3 4 5 #查看是否启动 ps -aux | grep rsyslog #查看是否开机自启 systemctl -list-unit-files | grep rsyslog
编辑日志文件时的格式
1 2 3 4 5 #格式 *.* #解释 第一个*:代表日志类型 第二个*:代表日志级别
类型解析
类型
含义
auth
pam产生的日志
authpriv
ssh、ftp等登陆信息的验证信息
corn
时间任务相关
kern
内核相关
lpr
打印相关
mail
邮件相关
mark(syslog)-rsyslog
服务内部信息
news
新闻组
user
用户程序产生的相关信息
uucp
主机之间相关的通信信息
local 1-7
自定义的日志设备
级别解析
注意:从上到下,级别从低到高,记录信息越来越少!!!
级别
含义
debug
调试、通信
info
一般信息,最常用
notice
具有重要性的普通条件
warrning
警告
err
错误
crit
严重
alert
需要立刻修改
emerg
内核崩溃
none
什么都不记录
怎么看日志文件
日志文件的格式包含以下4列
1、事件产生的时间
2、产生事件的服务器主机名
3、产生时间的服务名或程序名
4、事件的具体信息
自定义日志
通过编辑/etc/rsyslog.conf文件来完成;
修改后重启才能生效!!!
1 2 3 4 5 6 vim /etc/rsyslog.conf #最后添加 类型.级别 /var/log/文件名.log #例如ssh类型,任意级别 authpriv.* /var/log/testssh.log
日志轮替
日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。
使用logrotate进程日志轮替管理,/etc/logrotate.cong作为全局日志轮替规则配置文件 , 也可以给单独某个日志文件指定策略
当进行轮替时初始日志文件会改名成 原文件名1 , 然后会使用旧文件名新建一个空的日志文件 , 依次类推
全局规则配置文件参数解析
参数
含义
weekly
每周轮替一次
rotate 数字
按数字保存几份
create
创建新空的日志文件
dateeext
使用日期作为日志轮替文件的后缀
自定义日志加入日志轮替
所有自定义日志规则全部放在/etc/logrtate.d目录下,此目录下的所有文件都会被加载进全局规则配置文件中
日志轮替的参数说明
参数
含义
daily
每天一换
weejly
每周一换
monthly
每月一换
rotate 数字
按数字保存几份
compress
轮替时,旧的会被压缩
create mode owner group
新建日志文件,同时指定权限\所有者\所属组
mail address
轮替时,输出内容到指定邮件地址
missingok
日志不存在时忽略警告信息
notifempty
日志文件为空,不轮换
minsize
轮替最小值才会替换
size
指定大小,忽略时间限制
dateext
使用日期作为日志轮替文件的后缀
sharedscripts
在此关键字后执行一次脚本
prerotate/endscript
在轮替前或者后执行脚本
内存日志
内存日志一旦重启即可清空;
内存日志使用journalctl来操作;
常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #查看全部 journalctl #查看最新三条 journalctl -n 3 #查看时间段 journalctl --since 开始时间 --until 结束时间 #查看保存日志 journalctl -p err #查看日志详细内容 journalctl -o verbose #查看指定日志信息 journalctl | gerp 服务名
备份与恢复 实体机是无法做快照的,如果系统出现异常或数据损坏,后果很严重,这时需要备份和恢复。
在linux中使用dump命令来进行备份
安装
dump基本介绍
dump支持分卷和增量备份,增量备份的意思是指备份上次备份后所增加的文件或修改的文件,不会把备份过的再备份一次;
分区才支持增量备份,文件和目录不支持增量备份!!!
语法
选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -c:创建新的归档文件,c是具体的数字层级0-9 -f:指定备份后文件名 -j:将备份好的文件压缩成bz2格式,让文件更小 -T:指定开始备份的时间与日期 -u:本完成后在/etc/dumpdares中记录备份的文件系统,层级,等信息。 -t:指定文件名 -W:显示需要备份的文件以及最后一次备份的层级,时间,日期 -w:与-W相似,只显示需要备份的文件
在linux中使用restoer来恢复已备份的文件
安装
语法格式
模式选项,不能混用,一次命令只能用一种
1 2 3 4 5 6 7 -C:使用对比模式,已备份文件和未备份的文件对比 -i:交互模式进行恢复 -r:进行恢复模式 -t:查看模式
选项