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 获得帮助信息
man 「命令或配置文件」
信息 功能
NAME 命令的名称和单行描述
SYNOPSIS 怎样使用命令
DESCRIPTION 命令功能的深入讨论
EXAMPLES 怎样使用命令的例子
SEE ALSO 相关主题(通常是手册页)
  • help
# help 获得 shell 内置命令的帮助信息
help 「命令」
常用快捷键 功能
ctrl + c 停止进程
ctrl + l 清屏,同 clear,彻底清屏为 reset
tab 提示补全,可防止错误
上下键 查找执行过的命令
# 文件目录类
  • pwd
# pwd:print working directory

# 显示当前工作目录的绝对路径
  • ls
#  ls:list
ls [选项] [目录]
选项 功能
– a 全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用)
– l 长数据串列出,包含文件的属性与权限等等数据;(常用)等价于”ll”
  • cd
# cd 切换目录(change directory)
cd [参数]
参数 功能
cd 绝对路径 切换路径
cd 相对路径 切换路径
cd ~ 或者 cd 回到自己的家目录
cd – 回到上一次所在目录
cd .. 回到当前目录的上一级目录
cd -P 跳转到实际物理路径,而非快捷方式路径
  • mkdir
# mkdir(make directory)创建目录
mkdir [选项] [要创建的目录]
-p 创建多层目录
  • rmdir
# rmdir(remove directory)移出目录
rmdir [要删除的空目录]
  • touch
touch [文件名称](当前路径)
touch /a/b/c.txt(路径 + 文件名)
  • cp
cp [选项] [源文件] [目标文件夹]
-r 递归复制整个文件夹
  • rm
# rm 删除文件或目录
rm [选项] [文件或目录]
选项 功能
– r 递归删除目录中所有内容
– f 强制执行删除操作,而不提示用于进行确认
– v 显示指令的详细执行过程
  • mv
# 移动文件与目录或重命名
mv oldNameFile newNameFile		(重命名)
mv /temp/movefile /targetFolder		(移动文件)
  • cat
# 查看文件内容,从第一行开始显示。
cat [选项] [文件名]
-n 显示所有行的行号,包括空行
# 注意:一般查看比较小的文件,一屏幕能显示全的。
  • more
# 文件内容分屏查看器
more [文件名]
操作 功能说明
空格(space) 向下翻一页
Enter 向下翻一行
q 退出
ctrl + F 向下滚动一屏
ctrl + B 返回上一屏
= 输出当前行号
:f 输出文件名与当前的行号
  • less
# 分屏显示文件内容
less [文件名]
操作 功能说明
空格键(space) 向下翻动一页;
[pagedown] 向下翻动一页;
[pageup] 向上翻动一页;
/字串 向下搜寻「字串」的功能; n:向下查找;N:向上查找;
?字串 向上搜寻「字串」的功能; n:向上查找;N:向下查找;
q 离开less这个程序;
  • echo
# 输出内容到控制台
echo [选项] [输出内容]
-e		支持反斜线控制的字符转换
控制字符 作用
\\ 输出\本身
\n 换行符
\t 制表符(Tab)
# head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
head [文件名]		(功能描述:查看文件头10行内容)
head -n 5 [文件名]		(功能描述:查看文件头5行内容,5可以是任意行数)
  • tail
# tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
tail [文件名]		(功能描述:查看文件尾部10行内容)
tail -n 5 [文件名]		(功能描述:查看文件尾部5行内容,5可以是任意行数)
tail -f [文件名]		(功能描述:实时追踪该文档的所有更新,显示文件最新追加的内容,监视文件变化)
  • >>
# 输出重定向和 >> 追加
ls -l > [文件名]		(功能描述:列表的内容写入文件中(覆盖写))
ls -al >> [文件名]		(功能描述:列表的内容追加到文件的末尾)
cat [文件1] > [文件2]		(功能描述:将文件1的内容覆盖到文件2)
echo “内容” >> [文件名]		(功能描述:将echo的内容追加到文件的末尾)
  • ln
# 软链接也称为符号链接,类似于 Windows 下的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
# 删除软链接: 
rm -rf 软链接名,而不是 rm -rf 软链接名/

⚠️注意:如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
  • history
# 查看已经执行过历史命令
history
  • date
# 显示当前时间
语法 功能描述
date 显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前是哪一天
date +”+%Y-%m-%d %H:%M:%S” 显示年月日时分秒
  • date(显示非当前时间)
date -d '1 days ago'		(功能描述:显示前一天时间)
date -d '-1 days ago'		(功能描述:显示明天时间)
  • date(设置系统时间)
# 设置系统当前时间
date -s 字符串时间
  • cal
# 查看日历(calendar)
cal [选项]		(不加选项,则显示本月日历)
cal 2022		(显示2022年日历)
  • 用户管理命令

  • useradd
# 添加新用户
useradd [用户名]		(功能描述:添加新用户)
useradd -g [组名] [用户名]		(功能描述:添加新用户到某个组)
  • userdel
# 删除用户
userdel [用户名]		(功能描述:删除用户但保存用户主目录)
userdel -r [用户名]		(功能描述:用户和用户主目录,都删除)
  • passwd
# 设置用户密码
passwd [用户名]
  • id
# 查看用户是否存在
id [用户名]
  • cat /etc/passwd
# 查看创建了哪些用户
  • su
# su: swith user 切换用户
su [用户名称]		(功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量)
su - [用户名称]		(功能描述:切换到用户并获得该用户的环境变量及执行权限)
  • who
# 查看登录用户信息
whoami		(功能描述:显示自身用户名称)
who am i		(功能描述:显示登录用户的用户名以及登录时间)
  • sudo
# 设置普通用户具有 root 权限
useradd usr1		# 添加用户
passwd usr1		# 设置密码
vi /etc/sudoers		# 修改配置文件,管理权限
# 后者使用sudo命令不需要密码
root       ALL=(ALL)     ALL
usr1   ALL=(ALL)     ALL
usr1   ALL=(ALL)     NOPASSWD:ALL
  • usermod
# 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
# 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对
# 文件`/etc/group`的更新。
# 修改用户
usermod -g [用户组] [用户名]
-g		# 修改用户的初始登录组,给定的组必须存在。默认组 id 是 1。
  • group
# 新增组
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
# 修改权限
# 方式一
chmod [{ugoa}{+-=}{rwx}] [文件或目录]
# 方式二
chmod [mode=421] [文件或目录]
# 例如:采用数字的方式,设置文件所有者、所属组、其他用户都具有可读可写可执行权限。
chmod 777 aaa.txt
# 例如:修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可 执行权限。
chmod -R 777 dic/
  • chown
# 改变拥有者
chown [选项] [最终用户] [文件或目录]				(功能描述:改变文件或者目录的所有者)
-R		递归操作
  • chgrp
# 改变所属组
chgrp [最终用户组] [文件或目录]				(功能描述:改变文件或者目录的所属组)
  • find
# 查找文件或目录
find [搜索目录] [选项]
-name --> 按照指定的文件名查找模式查找文件
-user --> 查找属于指定用户名所有文件
-size --> 按照指定的文件大小查找文件(+n/-n/=n)(大于小于等于)
  • locate
# 快速定位文件路径
# 由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
updatedb
locate [文件名]
  • grep 和 |(管道符)
# 过滤查找
# 管道符 "|" --> 表示将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] [查找内容] [源文件]
-n		显示匹配行及行号
  • gzip/gunzip
# 压缩文件,只能将文件压缩为*.gz 文件
gzip [文件名]
# ① 只能压缩文件不能压缩目录
# ② 不保留原来的文件
# ③ 同时多个文件会产生多个压缩包

# 解压缩
gupzip [文件名].gz
  • zip/unzip
# 压缩文件或目录
zip [选项] xxx.zip [要压缩的内容]
-r		压缩目录

# 解压缩
unzip [选项] xxx.zip
-d		指定解压后文件的存放目录
  • tar
# 打包目录
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 解压到指定目录
  • du
# 查看文件和目录占用的磁盘空间(disk usage)
选项 功能
-h 以人们较易阅读的GB, MB, KB等格式自行显示
-a 不仅查看子目录大小,还要包括文件
-c 显示所有的文件和子目录大小后,显示总和
-S 只显示总和
–max-depth=n 指定统计子目录的深度为第n层
  • df
# 查看磁盘空间使用情况(disk free)
# 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
df -h
-h --> 以人们较易阅读的GB, MB, KB等格式自行显示
  • lsblk
# 查看设备挂载情况
lsblk -f
-f --> 查看详细的设备挂载情况,显示文件系统信息
  • mount/umount
# 挂载/卸载
  • fdisk
# 分区
  • ps
# 进程管理(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
# 通过进程号杀死进程
kill [选项] [进程号]
-9		表示强迫进程立即停止
# 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
killall [进程名称]
  • pstree
# 查看进程树
pstree [选项]
-p		显示进程的 PID
-u		显示进程的所属用户
  • top
# 实时监控系统进程状态
  • netstat
# 显示网络状态和端口占用信息
# 查看某进程网络信息
netstat -anp | grep 进程号
# 查看网络端口号占用情况
netstat –nlp | grep 端口号
  • crontab
# 系统定时任务
# 重启服务
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 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/doubleuch/p/16973790.html