B站视频教程:https://www.bilibili.com/video/BV1WY4y1H7d3
笔记链接:https://doubleuch.lanzouw.com/izGni0ieubhg
# Linux 系统中一切皆文件。
# CentOS 7 设置终端快捷键:
# 设置 --> 设备 --> 键盘 --> 添加
# 名称随意,内容 "/usr/bin/gnome-terminal",快捷键随意
1. Linux 目录结构
# Linux目录结构是逻辑结构。
⚙️挂载点:将某硬盘挂载在某目录下,则改目录下的文件都会直接写入该硬盘。
# 目录主要结构:
/ --> {/root,/bin,/boot,/dev,/etc,/home,/var,/lib,/usr,/media ...}
# bin (binary 二进制)
/ 存放常用二进制可执行文件
# sbin(systembinary)
/ 存放管理员可执行文件
# lib(library)
/ 库文件
# boot
/ 引导分区
# dev(device)
/ 存放管理硬件设备的文件
# etc
/ 系统管理所需要的配置文件
# home
/ 普通用户都有自己的 home 的文件夹
# opt(optional)
/ 第三方软件包
# media
/ 媒体管理,如U盘等
# mnt
/ 挂载 类似 media
2. VIM编辑器
# 打开当前路径下某文件
vim 「文件名」
i --> 进入编辑模式
u --> 撤回上一步操作
:W --> 写入(保存)
:q --> 退出
# 一般模式
/ 在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!
语法 |
功能描述 |
yy |
复制光标当前一行 |
y数字y |
复制一段(从第几行到第几行) |
p |
箭头移动到目的行粘贴 |
u |
撤销上一步 |
dd |
删除光标当前行 |
d数字d |
删除光标(含)后多少行 |
X |
剪切一个字母,相当于 del |
X |
剪切一个字母,相当于 Backspace |
yw |
复制一个词 |
dw |
删除一个词 |
shift+6(^) |
移动到行头 |
shift+4($) |
移动到行尾 |
1+shift+g |
移动到页头,数字 |
shift+g |
移动到页尾 |
数字+shift+g |
移动到目标行 |
# 编辑模式
/ 注意:通常在Linux中,按下这些按键时,在画面的左下方会出现「INSERT」或「REPLACE」的字样,
/ 此时才可以进行编辑。而如果要回到一般模式时,则必须要按下「Esc」这个按键即可退出编辑模式。
按键 |
功能描述 |
i |
当前光标前 |
a |
当前光标后 |
o |
当前光标行的下一行 |
I |
光标所在行最前 |
A |
光标所在行最后 |
O |
当前光标行的上一行 |
# 指令模式
/ 在一般模式当中,输入「:/?」3个中的任何一个按钮,就可以将光标移动到最底下一行。
/ 在这个模式当中,可以提供你「搜寻资料」的动作,而读取、存盘、大量取代字符、离开vim、显示行号等
/ 动作是在此模式中达成的!
/ 如:强制保存退出 ":wq!"
命令 |
功能描述 |
:w |
保存 |
:q |
退出 |
:! |
强制执行 |
/要查找的词 |
n查找下一个,N往上查找 |
:noh |
取消高亮显示 |
set nu |
显示行号 |
set nonu |
关闭行号 |
:%s/old/new/g |
替换内容/g替换匹配到的所有内容 |
3. 网络相关
# 查看当前网络 ip
ifconfig
# ping 测试主机之间网络连通性
ping 「目标主机」
# 查看ip配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 其中:
BOOTPROTO="static" #修改为ip静态分配
# 添加如下全部内容:
# 系统启动的时候网络接口是否有效(yes/no)
ONBOOT="yes"
# IP 地址
IPADDR=192.168.1.100
# 网关
GATEWAY=192.168.1.2
# 域名解析器
DNS1=192.168.1.2
# 重启网络
service network restart
# 查看当前主机名
hostname
# 修改主机名(重启生效)
vim /etc/hosthome
# 修改hosts文件
vim /etc/hosts
# Windows下hosts路径
C:\Windows\System32\drivers\etc
4. 系统管理
# service 服务管理(CentOS 6)
# 基本语法
service 服务名 start | stop | restart | status
# 查看网络服务的状态
service network status
# 停止网络服务
service network stop
# 启动网络服务
service network start
# 重启网络服务
service network restart
# chkconfig 设置后台服务的自启配置(CentOS 6)
chkconfig (功能描述:查看所有服务器自启配置)
chkconfig 服务名 off (功能描述:关掉指定服务的自动启动)
chkconfig 服务名 on (功能描述:开启指定服务的自动启动)
chkconfig 服务名 --list (功能描述:查看服务开机启动状态)
# systemctl (CentOS 7)
systemctl start | stop | restart | status 服务名
# 查看服务
ls -al /usr/lib/systemd/system
# 案例实操
(1)查看防火墙服务的状态
systemctl status firewalld
(2)停止防火墙服务
systemctl stop firewalld
(3)启动防火墙服务
systemctl start firewalld
(4)重启防火墙服务
systemctl restart firewalld
# systemctl 设置后台服务的自启配置的基本语法
systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)
# Linux 运行级别(CentOS 6)
# 查看默认级别:
vi /etc/inittab
# Linux系统有7种运行级别(runlevel):常用的是级别3和5
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
- 运行级别2:多用户状态(没有NFS),不支持网络
- 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登陆后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
# CentOS7的运行级别简化为:
- multi-user.target 等价于原运行级别3(多用户有网,无图形界面)
- graphical.target 等价于原运行级别5(多用户有网,有图形界面)
# 查看当前运行级别:
systemctl get-default
# 修改当前运行级别
systemctl set-default TARGET.target ( TARGET 取 multi-user 或者 graphical)
# 关闭防火墙
# 查看防火墙状态
systemctl status firewalld
# 临时关闭防火墙
systemctl stop firewalld
# 开机启动时关闭防火墙
# 查看防火墙开机启动状态
systemctl enable firewalld. service
# 设置开机时关闭防火墙
systemctl disable firewalld.service
# 关机重启操作
# 基本语法
(1) sync (功能描述:将数据由内存同步到硬盘中)
(2) halt (功能描述:停机,关闭系统,但不断电)
(3) poweroff (功能描述:关机,断电)
(4) reboot (功能描述:就是重启,等同于shutdown -r now)
(5) shutdown [选项] 时间
选项 |
功能 |
– H |
相当于halt,停机 |
– r |
-r=reboot重启 |
now |
立刻关机 |
时间 |
等待多久后关机(时间单位是分钟) |
5. 常用基本命令
# man 获得帮助信息
man 「命令或配置文件」
信息 |
功能 |
NAME |
命令的名称和单行描述 |
SYNOPSIS |
怎样使用命令 |
DESCRIPTION |
命令功能的深入讨论 |
EXAMPLES |
怎样使用命令的例子 |
SEE ALSO |
相关主题(通常是手册页) |
# help 获得 shell 内置命令的帮助信息
help 「命令」
常用快捷键 |
功能 |
ctrl + c |
停止进程 |
ctrl + l |
清屏,同 clear,彻底清屏为 reset |
tab |
提示补全,可防止错误 |
上下键 |
查找执行过的命令 |
# 文件目录类
# pwd:print working directory
# 显示当前工作目录的绝对路径
# ls:list
ls [选项] [目录]
选项 |
功能 |
– a |
全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用) |
– l |
长数据串列出,包含文件的属性与权限等等数据;(常用)等价于”ll” |
# cd 切换目录(change directory)
cd [参数]
参数 |
功能 |
cd 绝对路径 |
切换路径 |
cd 相对路径 |
切换路径 |
cd ~ 或者 cd |
回到自己的家目录 |
cd – |
回到上一次所在目录 |
cd .. |
回到当前目录的上一级目录 |
cd -P |
跳转到实际物理路径,而非快捷方式路径 |
# mkdir(make directory)创建目录
mkdir [选项] [要创建的目录]
-p 创建多层目录
# rmdir(remove directory)移出目录
rmdir [要删除的空目录]
touch [文件名称](当前路径)
touch /a/b/c.txt(路径 + 文件名)
cp [选项] [源文件] [目标文件夹]
-r 递归复制整个文件夹
# rm 删除文件或目录
rm [选项] [文件或目录]
选项 |
功能 |
– r |
递归删除目录中所有内容 |
– f |
强制执行删除操作,而不提示用于进行确认 |
– v |
显示指令的详细执行过程 |
# 移动文件与目录或重命名
mv oldNameFile newNameFile (重命名)
mv /temp/movefile /targetFolder (移动文件)
# 查看文件内容,从第一行开始显示。
cat [选项] [文件名]
-n 显示所有行的行号,包括空行
# 注意:一般查看比较小的文件,一屏幕能显示全的。
# 文件内容分屏查看器
more [文件名]
操作 |
功能说明 |
空格(space) |
向下翻一页 |
Enter |
向下翻一行 |
q |
退出 |
ctrl + F |
向下滚动一屏 |
ctrl + B |
返回上一屏 |
= |
输出当前行号 |
:f |
输出文件名与当前的行号 |
# 分屏显示文件内容
less [文件名]
操作 |
功能说明 |
空格键(space) |
向下翻动一页; |
[pagedown] |
向下翻动一页; |
[pageup] |
向上翻动一页; |
/字串 |
向下搜寻「字串」的功能; n:向下查找;N:向上查找; |
?字串 |
向上搜寻「字串」的功能; n:向上查找;N:向下查找; |
q |
离开less这个程序; |
# 输出内容到控制台
echo [选项] [输出内容]
-e 支持反斜线控制的字符转换
控制字符 |
作用 |
\\ |
输出\本身 |
\n |
换行符 |
\t |
制表符(Tab) |
# head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
head [文件名] (功能描述:查看文件头10行内容)
head -n 5 [文件名] (功能描述:查看文件头5行内容,5可以是任意行数)
# tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
tail [文件名] (功能描述:查看文件尾部10行内容)
tail -n 5 [文件名] (功能描述:查看文件尾部5行内容,5可以是任意行数)
tail -f [文件名] (功能描述:实时追踪该文档的所有更新,显示文件最新追加的内容,监视文件变化)
# 输出重定向和 >> 追加
ls -l > [文件名] (功能描述:列表的内容写入文件中(覆盖写))
ls -al >> [文件名] (功能描述:列表的内容追加到文件的末尾)
cat [文件1] > [文件2] (功能描述:将文件1的内容覆盖到文件2)
echo “内容” >> [文件名] (功能描述:将echo的内容追加到文件的末尾)
# 软链接也称为符号链接,类似于 Windows 下的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
# 删除软链接:
rm -rf 软链接名,而不是 rm -rf 软链接名/
⚠️注意:如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
# 查看已经执行过历史命令
history
# 显示当前时间
语法 |
功能描述 |
date |
显示当前时间 |
date +%Y |
显示当前年份 |
date +%m |
显示当前月份 |
date +%d |
显示当前是哪一天 |
date +”+%Y-%m-%d %H:%M:%S” |
显示年月日时分秒 |
date -d '1 days ago' (功能描述:显示前一天时间)
date -d '-1 days ago' (功能描述:显示明天时间)
# 设置系统当前时间
date -s 字符串时间
# 查看日历(calendar)
cal [选项] (不加选项,则显示本月日历)
cal 2022 (显示2022年日历)
# 添加新用户
useradd [用户名] (功能描述:添加新用户)
useradd -g [组名] [用户名] (功能描述:添加新用户到某个组)
# 删除用户
userdel [用户名] (功能描述:删除用户但保存用户主目录)
userdel -r [用户名] (功能描述:用户和用户主目录,都删除)
# 设置用户密码
passwd [用户名]
# 查看用户是否存在
id [用户名]
# 查看创建了哪些用户
# su: swith user 切换用户
su [用户名称] (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - [用户名称] (功能描述:切换到用户并获得该用户的环境变量及执行权限)
# 查看登录用户信息
whoami (功能描述:显示自身用户名称)
who am i (功能描述:显示登录用户的用户名以及登录时间)
# 设置普通用户具有 root 权限
useradd usr1 # 添加用户
passwd usr1 # 设置密码
vi /etc/sudoers # 修改配置文件,管理权限
# 后者使用sudo命令不需要密码
root ALL=(ALL) ALL
usr1 ALL=(ALL) ALL
usr1 ALL=(ALL) NOPASSWD:ALL
# 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
# 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对
# 文件`/etc/group`的更新。
# 修改用户
usermod -g [用户组] [用户名]
-g # 修改用户的初始登录组,给定的组必须存在。默认组 id 是 1。
# 新增组
groupadd [组名]
# 删除组
groupdel [组名]
# 修改组
groupmod -n [新组名] [旧组名]
# 查看创建了哪些组
cat /etc/group
# 文件权限图示
# rwx作用文件和目录的不同解释
# 作用到文件时:
- [r]代表可读(read):可以读取,查看
- [w]代表可写(write):可以修改,但是不代表可以删除该文件。
删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- [x]代表可执行(execute):可以被系统执行
# 作用到目录时:
- [r]代表可读(read):可以读取,ls查看目录内容
- [w]代表可写(write):可以修改,目录内创建+删除+重命名目录
- [x]代表可执行(execute):可以进入该目录
文件类型 |
属主权限(u) |
属组权限(g) |
其他组权限(o) |
0 |
123 |
456 |
789 |
d |
rwx |
r-x |
r-x |
d(目录文件) -(文件) L(链接文件) |
读 写 执行 |
读 写 执行 |
读 写 执行 |
# 第1-3位确定属主(该文件的所有者)拥有该文件的权限 -User
# 第4-6位确定属组(所有者的同组用户)拥有该文件的权限 -Group
# 第7-9位确定其他用户拥有该文件的权限 -Other
# 修改权限
# 方式一
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
# 方式二
chmod [mode=421] [文件或目录]
# 例如:采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
chmod 777 aaa.txt
# 例如:修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可 执行权限。
chmod -R 777 dic/
# 改变拥有者
chown [选项] [最终用户] [文件或目录] (功能描述:改变文件或者目录的所有者)
-R 递归操作
# 改变所属组
chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组)
# 查找文件或目录
find [搜索目录] [选项]
-name --> 按照指定的文件名查找模式查找文件
-user --> 查找属于指定用户名所有文件
-size --> 按照指定的文件大小查找文件(+n/-n/=n)(大于小于等于)
# 快速定位文件路径
# 由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
updatedb
locate [文件名]
# 过滤查找
# 管道符 "|" --> 表示将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] [查找内容] [源文件]
-n 显示匹配行及行号
# 压缩文件,只能将文件压缩为*.gz 文件
gzip [文件名]
# ① 只能压缩文件不能压缩目录
# ② 不保留原来的文件
# ③ 同时多个文件会产生多个压缩包
# 解压缩
gupzip [文件名].gz
# 压缩文件或目录
zip [选项] xxx.zip [要压缩的内容]
-r 压缩目录
# 解压缩
unzip [选项] xxx.zip
-d 指定解压后文件的存放目录
# 打包目录
tar [选项] xxx.tar.gz [将要打包进去的内容]
# 压缩目录
tar -zcvf aaa.tar.gz bbb/
# 解压到当前目录
tar -zxvf aaa.tar.gz
# 解压到指定目录
tar -zxvf aaa.tar.gz -C bbb/
选项 |
功能 |
-c |
产生.tar打包文件 |
-v |
显示详细信息 |
-f |
指定压缩后的文件名 |
-z |
打包同时压缩 |
-x |
解包.tar文件 |
-C |
解压到指定目录 |
# 查看文件和目录占用的磁盘空间(disk usage)
选项 |
功能 |
-h |
以人们较易阅读的GB, MB, KB等格式自行显示 |
-a |
不仅查看子目录大小,还要包括文件 |
-c |
显示所有的文件和子目录大小后,显示总和 |
-S |
只显示总和 |
–max-depth=n |
指定统计子目录的深度为第n层 |
# 查看磁盘空间使用情况(disk free)
# 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
df -h
-h --> 以人们较易阅读的GB, MB, KB等格式自行显示
# 查看设备挂载情况
lsblk -f
-f --> 查看详细的设备挂载情况,显示文件系统信息
# 挂载/卸载
# 分区
# 进程管理(process status)
# 查看系统中所有进程(CPU和占用率)
ps aux | grep xxx
# 可以查看子父进程之间的关系
ps -ef | grep xxx
选项 |
功能 |
a |
列出带有终端的所有用户的进程 |
x |
列出当前用户的所有进程,包括没有终端的进程 |
u |
面向用户友好的显示风格 |
-e |
列出所有进程 |
-u |
列出某个用户关联的所有进程 |
-f |
显示完整格式的进程列表 |
# ps aux 显示信息说明
# USER:该进程是由哪个用户产生的
# PID:进程的ID号
# %CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源;
# %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
# VSZ:该进程占用虚拟内存的大小,单位 KB;
# RSS:该进程占用实际物理内存的大小,单位 KB;
# TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,
# tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。STAT:进程状态。常见的状态有:
# R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
# START:该进程的启动时间
# TIME:该进程占用 CPU 的运算时间,注意不是系统时间
# COMMAND:产生此进程的命令名
# ps -ef 显示信息说明
# UID:用户 ID
# PID:进程 ID
# PPID:父进程 ID
# C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;
# 数值越小,表明进程是 I/O 密集型运算,执行优先级会提高 STIME:进程启动的时间
# TTY:完整的终端名称
# TIME:CPU 时间
# CMD:启动进程所用的命令和参数
# 通过进程号杀死进程
kill [选项] [进程号]
-9 表示强迫进程立即停止
# 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
killall [进程名称]
# 查看进程树
pstree [选项]
-p 显示进程的 PID
-u 显示进程的所属用户
# 实时监控系统进程状态
# 显示网络状态和端口占用信息
# 查看某进程网络信息
netstat -anp | grep 进程号
# 查看网络端口号占用情况
netstat –nlp | grep 端口号
# 系统定时任务
# 重启服务
systemctl restart crond
# 定时任务设置
crontab [选项]
选项 |
功能 |
-e |
编辑crontab定时任务 |
-l |
查询crontab任务 |
-r |
删除当前用户所有的crontab任务 |
# 进入 crontab 编辑界面。会打开 vim 编辑你的工作。
crontab -e
# 格式为
* * * * * [执行的任务]
项目 |
含义 |
范围 |
第一个”*” |
一小时当中的第几分钟 |
0-59 |
第二个”*” |
一天当中的第几小时 |
0-23 |
第三个”*” |
一个月当中的第几天 |
1-31 |
第四个”*” |
一年当中的第几月 |
1-12 |
第五个”*” |
一周当中的星期几 |
0-7(0和7都代表星期日) |
特殊符号 |
含义 |
* |
代表任何时间。比如第一个”*”就代表一小时中每分钟都执行一次的意思。 |
, |
代表不连续的时间。比如”08,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
– |
代表连续的时间范围。比如”0 5 * * 1-6命令”,代表在 周一到周六的凌晨5点0分执行命令 |
*/n |
代表每隔多久执行一次。比如”*/ 10 * * *命令”,代 表每隔10分钟就执行一遍命令 |
时间 |
含义 |
45 22 * * * |
每天22点45分执行命令 |
0 17 * * 1 |
每周1的17点0分执行命令 |
0 5 1,15 * * |
每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 |
每周一到周五的凌晨4点40分执行命令 |
*/ 10 4 * * * |
每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 |
每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
6. RPM(软件包管理)
# RPM 查询命令
rpm -qa | grep [包名]
# 卸载软件包
rpm -e RPM软件包
rpm -e --nodeps 软件包(不检查依赖)
# RPM 安装命令
rpm -ivh RPM 包全名
选项 |
功能 |
-i |
install,安装 |
-v |
-verbose,显示详细信息 |
-h |
hash,进度条 |
–nodeps |
安装前不检查依赖 |
# yum 仓库配置
yum [选项] [参数]
-y 对所有问题都做 yes 回答
参数 |
功能 |
install |
安装rpm软件包 |
update |
更新rpm软件包 |
check-update |
检查是否有可用的更新rpm软件包 |
remove |
删除指定的rpm软件包 |
list |
显示软件包信息 |
clean |
清理yum过期的缓存 |
deplist |
显示yum软件包的所有依赖关系 |
# 修改网络yum源
# 安装wget
yum install wget
# 在/etc/yum.repos.d/目录下,备份默认的 repos 文件
cp CentOS-Base.repo CentOS-Base.repo.backup
# 下载网易或者阿里的repos文件
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo //网易 163
wget http://mirrors.aliyun.com/repo/Centos-7.repo //阿里云
# 使用下载好的 repos 文件替换默认的 repos 文件
mv CentOS7-Base-163.repo CentOS-Base.repo
# 清理旧缓存数据,缓存新数据
yum clean all
yum makecache
版权声明:本文为Doubleuch原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。