Linux
1 Linux入门
1.1 概述
- 类Unix操作系统
- 常用版本:Ubutun、RedHat、CentOS
1.2 Linux和Windows的区别
Windows:收费、封闭、安全性差、PC主流
Linux:免费、开源、安全性较好、服务器主流
2 Linux文件与目录结构
2.1 Linux文件
- Linux系统一切皆文件
2.2 Linux目录结构
/home
/root
/etc
/tmp
/mnt
/opt
3 网络配置和系统管理操作
3.0 原理图
3.1 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改下面两个:
BOOTPROTO=static
ONBOOT=yes
#添加下面的内容:
#IP地址
IPADDR=192.168.1.100
#网关
GATEWAY=192.168.20.2
#域名解析器
DNS1=114.114.114.114
DNS2=8.8.8.8
3.2 配置网络接口:ifconfig
ifconfig
3.3测试主机之间网络连通:ping
ping www.baidu.com
3.4 显示和修改系统主机名称
#显示主机名称
hostname
#修改hostname文件
vim /etc/hostname
3.5 临时后台服务管理
#功能描述:开启服务
systemctl start 服务名
#功能描述:关闭服务
systemctl stop 服务名
#功能描述:重新启动服务
systemctl restart 服务名
#功能描述:查看服务状态
systemctl status 服务名
#功能描述:查看正在运行的服务
systemctl --type service
3.6 设置后台服务的自启配置
systemctl list-unit-files (功能描述:查看所有服务器自启配置)
systemctl disable 服务名 (功能描述:关掉指定服务的自动启动)
systemctl enable 服务名 (功能描述:开启指定服务的自动启动)
systemctl is-enabled 服务名 (功能描述:查看服务开机启动状态)
3.7 进程运行级别
vim /etc/inittab
3.8 关机重启命令
sync #(功能描述:将数据由内存同步到硬盘中)
poweroff #(功能描述:关闭系统,等同于shutdown -h now)
reboot #(功能描述:就是重启,等同于 shutdown -r now)
#语法:shutdown [选项] [时间]
shutdown -h #关机后停机
shutdown -r #关机后重启
4 VI/VIM编辑器
4.1 什么是VI/VIM编辑器
- Linux系统的文本编辑器,VIM由VI发展而来
4.2 一般模式
- 复制、粘贴、删除、撤销、移动
复制:
y 复制一个字母
yw 复制一个单词(光标选到首字母)
yy 复制整行
2yy 复制2行
粘贴:
p 粘贴到光标后
P 粘贴到光标前
删除或剪切:
x 往后删除1一个字母
10x 往后删除n个字母
X 往前删除
dd 删除整行
2dd 删除2行
dG 从光标行删到文件尾
替换:
r 替换当前字母
R 进入替换模式,ESC结束
撤销:
u
Ctrl + r 反撤销
移动:
^ 移动到行首
$ 移动到行尾
gg 移动到文件首
G 移动到文件尾
20G 移动到20页
4.3 编辑模式
a 光标后插入
o 另起一行插入
A 行尾插入
i 光标前插入
O 上一行插入
I 行首插入
4.4 命令模式
:w 保存
:q 退出
:! 强制执行
:wq 保存并退出
:wq! 强制保存并推出
? 查找内容
/ 查找内容
:%?/ x/y 将x替换为y
ZZ 保存并退出
:syntax on 开启颜色
:syntax off 关闭颜色
:set操作:
:set nu 显示行号
:set nonu 不显示行号
:set nohlsearch 取消高亮高亮搜索内容
:set hlsearch 高亮搜索内容
:set ruler 开启右下角状态栏
:set noruler 关闭右下角状态栏
:set showmode 开启左下角状态栏
:set noshowmode 关闭左下角状态栏
:set list 显示隐藏字符
:set nolist 不显示隐藏字符
4.5 模式间转换
5 常用基本命令
5.1 帮助命令
#功能描述:获得帮助信息
#语法:man [命令或配置文件]
man ls
#功能描述:获得shell内置命令的帮助信息
#语法:help [命令]
help cd
#常用快捷键
Ctrl + c #停止进程
Ctrl + l #清屏
Ctrl + q #退出
5.2 文件目录类
#pwd:print working directory 打印工作目录
#功能描述:显示当前工作目录的绝对路径
pwd
/root/test #输出结果
#ls:list 列出目录内容
#语法:ls [选项] [目录/文件]
-a #显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l #除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
#常用命令:
ls #列出文件/目录内容
ls -l #长数据串列出,包含文件的属性与权限等等数据;(常用,等于ll)
ls -al #长数据串列出全部文件
#cd:Change Directory 切换路径
#语法:cd [参数/路径]
cd #回到根目录
cd ~ #回到根目录
cd / #进入根目录
cd - #回到上次所在目录
cd .. #返回上一级目录
#绝对路径和相对路径(重点)
/ #根目录
./或. #当前目录
..或../ #上一级目录
#mkdir:Make directory 建立目录
#语法:mkdir [-p] [目录]
mkdir /temp #在当前目录下创建temp目录
mkdir -p /opt/temp #创建多级目录(常用)
#rmdir:Remove directory 移动目录
#rmdir [-p] [目录]
rmdir aaa #删除空目录aaa
#rm remove移除文件或目录
#功能描述:递归删除目录中所有内容
#语法:rm [选项] [目录]
-i #删除前逐一询问确认。
-f #即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r #将目录及以下之档案亦逐一删除。
rm -r aaa #删除aaa目录中所有的内容
rm -f aaa #强制删除
rm -rf aaa #强制删除目录及内容并不提示(常用)
#touch 创建空文件(重点)
#touch [文件/目录]
touch abc.txt #创建abc.txt
vim def.txt #创建def.txt并编辑
#cp copy复制文件或目录
#功能描述:复制source文件到dest
#cp [选项] [文件] [目录]
-d #复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-r #若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
cp -r animal /root #复制整个目录
#mv move移动文件与目录或重命名
#语法:mv [选项] [文件/目录] [文件/目录]
-b #当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-f #如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
#功能描述:重命名
#mv [文件] [文件]
mv aaa.txt AAA.txt
#功能描述:移动文件
#mv [文件] [目录]
mv AAA.txt /root
#cat concatenate查看文件内容,从第一行开始显示
#cat [选项] [文件]
-n 或 --number #由1开始对所有输出的行数编号。
cat abc.txt #查看abc.txt
cat -n abc.txt #查看abc.txt并显示行号
#more 文件内容分屏查看器
#more [选项] [文件]
-num #一次显示的行数
+num #从第 num 行开始显示
#常见操作命令
space #向下翻一页
enter #向下翻一行
q #立即离开
Ctrl + f #向下滚一屏
Ctrl + b #返回上一屏
= #输出行号
:f #输出文件名和行号
#less 分屏显示文件内容
#less [选项] [文件]
ps -ef | less #ps查看进程信息并通过less分页显示
#常用操作
space #向下翻一页
pageup #向上翻一页
pagedown #向下翻一页
/ #查找。n向下查找
q #退出程序
#echo输出内容到控制台
#echo [选项] [输出内容]
-e #开启支持\的转义操作
echo -e \\ #输出\
echo -e \\n #换行
echo -e \\t #制表位
echo $PATH #输出Linux的环境变量
echo -e hello\\nworld
#hello
#world
echo -e hello\\tworld
#hello world
- 注意:单双引号的区别
- 单引号:引号中的内容不取值
- 双引号:引号中的内容取值
- 着重号:执行命令
#着重号
echo `date`
2022年 02月 22日 星期二 21:20:08 CST #输出结果
#双引号
name=ok
echo "$name it is good"
ok it is good #输出结果
#单引号
echo '$name it is good'
$name it is good #输出结果
#head 显示文件头部内容
#功能描述:默认查看文件头10行内容
#语法:head [选项] [文件]
#功能描述:查看文件头5行内容,5可以是任意行数
#语法:head -n 5 [文件]
head cat.txt #查看头10行
head -n 5 cat.txt #查看头5行
#tail 输出文件尾部内容
#功能描述:默认查看文件尾10行的内容
#tail [选项] [文件]
tail -f cat.txt #显示最新追加内容,追踪文件变化
#> 覆盖 和 >> 追加
#功能描述:列表的内容写入文件a.txt中(覆盖写)
ll > aaa.txt
#功能描述:列表的内容追加到文件aa.txt的末尾
ll >> aaa.txt
#功能描述:将文件1的内容覆盖到文件2
cat aaa.txt > bbb.txt
#将echo后的内容追加到文件中
echo helloworld >> aaa.txt
#ln -s软链接
#功能描述:给原文件创建一个软链接
#语法:ln -s [文件/目录] [软链接名]
ln -s /root link #给/root创建软连接link
ln -s aaa.txt linkaaa #给aaa.txt创建软连接linkaaa
#删除软连接,不能带/
rm -rf link
#通过软连接查看pwd时,仍然查看到软连接所在目录
#进入软连接的实际路径
cd -P link
#history 查看已经执行过历史命令
history #查看所有历史指令
history 10 #查看最近十条历史指令
!178 #执行编号178条的历史指令
5.3 时间日期类
#date 显示当前时间
date #显示当前时间
date "+%Y-%m-%d %H:%M:%S" #显示年月日时分秒
#date 设置系统时间
#语法:date -s 字符串时间
date -s #"2017-06-19 20:52:18"
#date 显示非当前时间
date -d '1 days ago' #显示前一天时间
date -d '-1 days ago' #显示明天时间
#cal 查看日历
#语法:cal [选项]
cal #显示当月日历
cal 2022 #显示2022整年的日历
5.4 搜索查找类
#find 查找文件或者目录
#语法:find [搜索范围] [选项]
-name 按文件名
-user 按用户名
-size 按文件大小
find ./ -name "*.txt" #查找当前目录下txt后缀的文件
find ./ -user root #查找当前目录下用户名为root的文件
find ./ -size +20M #查找当前目录下大于20M的文件
find ./ -size 20k #查找当前目录下等于20k的文件
#locate 快速定位文件路径
#第一次运行前使用updatedb创建locate数据库
updatedb
locate abc.txt #快速定位abc.txt的路径,包括重复的文件
#grep 过滤查找及“|”管道符。将前一个命令的处理结果输出传递给后面的命令处理
#语法:grep [选项] [查找内容] [源文件]
grep -n #匹配行号
grep -i #忽略大小写
cat a.txt | grep -ni hello
5.5 压缩和解压类
#gzip/gunzip 压缩
#不能压缩目录,不保留原来的文件
#语法:gzip [文件]
gzip aaa.txt
aaa.txt.gz #输出结果
#语法:gunzip [文件.gz]
gunzip aaa.txt.gz
aaa.txt #输出结果
#zip/unzip 压缩
#语法:zip [选项] XXX.zip [文件/目录]
#语法:unzip [选项] [解压路径]
zip -r #压缩目录
unzip -d #指定解压目录
zip -r package.zip /home #压缩/home目录下所有内容
unzip package.zip -d /home/aaa #将package.zip解压到/home/aaa目录
# tar 打包
tar [选项] XXX.tar.gz [文件/目录] #打包目录,压缩后的文件格式.tar.gz
#压缩
tar -zcvf a.tar.gz a1.txt a2.txt #将a1和a2压缩到a.tar.gz
tar -zcvf package.tar.gz /home/
#解压
tat -zxvf a.tar.gz -C /home/aaa #将a解压到/home/aaa/
5.6 用户权限
#-rw-r--r--. 1 tom police 231 8月 8 2019 .bashrc
#drwxr-xr-x. 3 tom police 18 2月 21 23:10 .cache
- 0首位:表示文件类型
- 普通文件
- d 目录
- l 软连接
- c 字符设备。例如鼠标和键盘
- b 块文件。例如键盘
- 1-3位:表示所属主(所有者)user
- r=4 读
- w=2 写。注意:对于文件的w权限,需要对文件目录也有w权限,才能删除
- x=1 执行
- 4-6位:所属组group
- 7-9位:其他组的用户权限other
- 用户名前数字:
- 如果是文件,表示硬链接的个数
- 如果是目录,表示亩的子目录数
- 组名后面的数字:
- 如果是文件,表示文件大小
- 如果是文件,统一为4096
5.7 用户管理命令
#useradd 添加新用户
#功能描述:添加新用户
#语法:useradd [用户名]
useradd tom #添加用户tom
#功能描述:添加新用户到某个组(常用)
#语法:useradd -g [组名] [用户名]
useradd -g police jerry
#passwd 设置用户密码
#passwd [用户名]
passwd tom
#id 查看用户是否存在
#id [用户名]
id tom
#查看创建了哪些用户
cat /etc/passwd
#su 切换用户,只能获得用户的执行权限,不能获得环境变量
#su [用户名]
su tom
#userdel 删除用户
#功能描述:删除用户但保存用户主目录
#语法:userdel [用户名]
userdel tom #删除tom
#功能描述:用户和用户主目录,都删除
#语法:userdel -r [用户名]
user -r tom #删除tom及其/home下的文件夹
#who 查看登录用户信息
功能描述:显示自身用户名称
#语法:whoami
whoami
功能描述:显示登录用户的用户名
#语法:who am i
who am i
#usermod 修改用户组
#语法:usermod -g [用户组] [用户名]
usermod -g root tom
#sudo 设置普通用户具有root权限
cat /etc/sudoers
visudo
/root
#找到如下
root ALL=(ALL) ALL
#添加
#[用户] ALL=(ALL) NOPASSWD:ALL
tom ALL=(ALL) NOPASSWD:ALL
#登录tom即可删除root权限的文件
sudo rm -rf orange.txt
5.8 用户组管理命令
#groupadd 组的创建
#语法:groupadd [组名]
groupadd police
#groupdel 组的删除
#语法:groupdel [组名]
groupdel police
#groupmod 修改组名
#语法:groupmod -n [新组名] [老组名]
groupmod -n thief police
#查看创建了哪些组
cat /etc/group
5.9 文件权限管理类
#chmod 改变权限
#chmod [{ugoa}{+-=}{rwx}] [文件或目录]
chmod u+x apple.txt #使apple.txt所属主有执行权限
chmod g=rwx apple.txt #使apple.txt所属组有读、写、执行权限
chmod o-x apple.txt #使apple.txt其他用户失去执行权限
#语句可以多条用“,”隔开
#chmod [mode=421] [文件或目录]
#r=4, w=2, x=1
chmod 777 apple.txt #使apple.txt所属主、组、其他用户都能读、写、执行
chmod -R 777 aaa #修改aaa目录下所有文件/目录的权限
#chgrp 改变文件所属组
#功能描述:改变文件或者目录的所属组
#chgrp [最终用户组] [文件或目录]
chgrp thief apple.txt
#chown 改变文件所属主
#功能描述:改变文件或者目录的所有者
#chown [选项] [最终用户] [文件或目录]
chown root apple.txt #将apple.txt所有者改为root
chown -R tom aaa #将aaa目录下所有文件/目录所有者改为tom
5.10 磁盘分区类
#df 查看磁盘空间使用情况
#功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
#语法:df [选项]
df -h #以可读的方式显示磁盘空间使用情况
#fdisk 查看分区
#功能描述:查看磁盘分区详情
#语法:fdisk [选项]
fdisk -l #显示当前分区情况
#mount/umount 挂载/卸载
#语法:
mount [-t vfstype] [-o options] device dir
mount /dev/hda1 /mnt #将 /dev/hda1 挂在 /mnt 之下
#语法:
umount [设备文件名或挂载点]
5.11 进程线程类
#ps 查看当前系统进程状态
#语法:ps [options]
ps -aux | grep xxx #查看系统中所有(指定)进程
ps -ef | grep xxx #可以查看(指定)子父进程之间的关系
#pstree 查看进程树
#语法:
pstree [选项]
pstree -u #显示用户名称
#kill 终止进程
#语法:kill [选项] 进程号
kill -9 5102 #强制关闭进程5102
kill -1 firefox #重新加载firefox
#top 查看系统健康状态
#语法:
top [选项]
top -d 3 #表示更新周期为3秒
#netstat 显示网络统计信息和端口占用情况
#语法:
netstat -anp | grep 进程号 #查看该进程网络信息
netstat -nlp | grep 端口号 #查看网络端口号占用情况
5.12 crond系统定时任务
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
#重新启动crond服务
restart crond
#crontab 定时任务设置
#语法:
crontab [选项]
crontab -e #进入vi编辑器编辑定时任务
#例:
0 */2 * * * /sbin/service httpd restart #每两个小时重启一次apache
50 7 * * * /sbin/service sshd start #每天7:50开启ssh服务
50 22 * * * /sbin/service sshd stop #每天22:50关闭ssh服务
0 0 1,15 * * fsck /home #每月1号和15号检查/home 磁盘
1 * * * * /home/bruce/backup #每小时的第一分执行/home/bruce/backup这个文件
30 6 */10 * * ls #每月的1、11、21、31日是的6:30执行一次ls命令
6 软件包管理
6.1 RPM
rpm -qa | grep rpm #查看所有安装的RPM安装包
6.1.1 RPM安装包卸载
#RPM卸载命令
#语法:
rpm -e RPM [软件包] #卸载软件
rpm -e --nodeps [软件包] #不检查依赖卸载软件
#RPM安装命令
#语法:
rpm -ivh [RPM包全名]
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm #安装firefox
6.2 YUM仓库配置
6.2.1 概述
- 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
6.2.2 YUM常用命令
yum [选项] [参数]
yum update #更新所有软件命令
yum install <package_name> #仅安装指定的软件命令
yum update <package_name> #仅更新指定的软件命令
yum remove <package_name> #删除软件包命令
6.2.3 国内YUM源(非必须)
- 首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
- 运行以下命令生成缓存
yum clean all
yum makecache
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人