Linux与Shell 第1天 文件目录、VIM、网络配置、系统管理、远程登录
传送门
Linux与Shell 第0天 阿里云安装Ubuntu22.04以及桌面
Linux与Shell 第1天 文件目录、VIM、网络配置、系统管理、远程登录
Linux与Shell 第2天 实操、软件包管理、Shell编程
Linux概述
Unix->Unxi变种Minix->类Unix(Linux内核)->GNU-Linux(GNU工具+Linux内核)
CentOS和Ubuntu都是基于GNU/Linux的发行版,它们遵循GNU的自由软件理念
Linux系统可以粗糙地抽象为3个层次,底层是系统内核(Kernel),中间层是Shell层,即命令解释层;高层则是应用层
Unix的核心原则和概念包括:
模块化设计:Unix采用模块化的设计理念,将系统功能分解为多个独立的小组件,每个组件都有特定的功能,并可以相互协作。这种设计使得Unix系统更易于扩展和维护。
分层结构:Unix系统采用分层结构,将系统功能分为不同的层次,每个层次都有自己的责任和功能。这种分层结构有助于提高系统的稳定性和可维护性。
文件系统:Unix将所有资源都视为文件,包括硬件设备、进程和网络连接等。这种文件系统的设计使得Unix系统可以统一管理和访问各种资源。
命令行界面:Unix系统通常采用命令行界面来与用户交互,用户可以通过输入命令来操作系统和应用程序。这种界面简单高效,也有利于自动化和批处理操作。
多用户、多任务:Unix是一个多用户、多任务的操作系统,可以同时支持多个用户登录并执行多个任务。每个用户都有自己的权限和环境,彼此之间相互隔离。
管道和过滤器:Unix引入了管道和过滤器的概念,允许将多个命令连接起来,实现数据流的传输和处理。这种机制使得Unix系统可以简洁地完成复杂的任务。
Linux安装
安装系统,一般来说没什么难的,不论虚拟机还是实体机器
文件目录与结构
目录 | 含义 |
---|---|
/bin | Binary的缩写,用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令 |
/sbin | Super User的意思,存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令 |
/boot | 主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件 |
/dev | device,任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备 |
/etc | 配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改 |
/home | 系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的家目录 |
/lib | library,存放着系统开机时所需的函数库以及/bin和/sbin目录下的命令会调用的函数库 |
/lib64 | 存放相对于/lib中支持64位格式的函数库 |
/media | 存放可移除的媒体设备、如光盘,DVD等 |
/mnt | mount,临时挂载的设备文件,临时安装目录,系统管理员可以挂载文件系统。时系统管理员临时安装文件的系统安装点。 |
/opt | optional,可选的软件包,即第三方文件软件。我们可以将除了系统自带软件之外的其他软件安装到这个目录。 |
/proc | 特殊的动态目录,用以维护系统的信息和状态,包括当前运行中进程(processes)信息。包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。 |
/root | 系统管理员root的主目录 |
/run | 最近一次开机后所产生的各项信息,如当前的用户和正在运行中的守护进程等。 |
/srv | service,存放一些服务启动后所需的数据 |
/sys | system,与/proc类似也是虚拟文件系统,存放系统核心与硬件相关信息管理设备文件。不占用硬件容量。 |
/tmp | temporary, 存放系统运行过程中使用的一些临时文件,可以被所有就用户访问,系统重启时会清空该目录 |
/usr | 包含绝大部分所有用户(users)都能访问的应用程序和文件包含二进制文件,库文件。文档和二级程序的源代码 |
/var | 经常变化的(variable)文件,诸如日志或数据库等代表变量文件。在这个目录下可以找到内容可能增长的文件 |
VIM编辑器
vim的界面分为一般模式(快速编辑、光标跳转)、插入模式(编辑文本)、指令模式(搜索、替换)
保存
:w # 写入文件并保存,会修改文件的时间戳
:wa # 保存所有文件
:wq # 写入文件并保存后退出,会修改文件的时间戳
:wqa # 保存所有文件后退出
:q #退出
:q! #强制退出
:x # 保存文件并退出,不会修改文件的时间戳
:pwd # 显示 Vim 当前文件的路径
显示行号
:set number
:set nonumber
:set relativenumber
输入 | 作用 |
---|---|
y | 复制 |
p | 粘贴 |
x/X | 光标/光标钱单字符剪切 |
dd/dw | 整行剪切/按单词剪切 |
c/s | 改变,删除后进入插入模式 |
r/R | 替换当前字符/进入替换模式光标自动向后移动 |
u/<Ctrl>+r | 撤销/重做 |
0/^/0w | 光标到行首/行首非空白字符/行首第一个单词 |
$ | 光标到行尾 |
h/j/k/l | 方向键左/下/上/右 |
gg/G | 光标到文件开头/文件末尾 |
<Ctrl>+<Home>/<End> | 同上,光标到文件开头/文件末尾 |
<Ctrl>+e/y | 向上/下滚动一行 |
<Ctrl>+u/d | 向上up/下down滚动半屏幕 |
<Ctrl>+f/b | 向下forward/回back滚动一屏幕 |
(数字)G/:(数字)<Enter> | 光标移动到指定行的非空白字符行首 |
(数字)% | 光标移动到文件指定%处的非空白字符行首 |
(数字)| | 光标移动到该行的指定列 |
w/W | 跳到下一个单词开头(word:标点或空格分隔的单词/空格分隔的单词) |
b/B | 跳到上一个单词开头(word:标点或空格分隔的单词/空格分隔的单词) |
e/E | 跳到下一个单词末尾(word:标点或空格分隔的单词/空格分隔的单词) |
ge | 跳到前一个单词结尾(word:标点或空格分隔的单词) |
)/( | 向前/后移动一个句子(句号.分隔) |
}/{ | 向前/后移动一个段落(空行分隔) |
<Enter> | 移动到下一行的行首,如果非空行,光标到该行的首个非空字符 |
+/- | 移动到下/上一行的行首,如果非空行,光标到该行的首个非空字符 |
(数字)<Enter> | 向下移动到指定数字行的行首,如果非空行,光标到该行的首个非空字符 |
(数字)+/(数字)- | 向下/上移动到指定数字行的行首,如果非空行,光标到该行的首个非空字符 |
H/M/L | 移动到屏幕上(High)/中(Middle)/下(Low)部 |
<Shift>+<Left>/<Right> | Shift+方向键左右,按单词左右移动(word:标点或空格分隔的单词) |
<Shift>+<Up>/<Down> | Shift+方向键上下,向上下翻页 |
gm/gj/gk | 光标保持当前行/移动到下一行/移动到上一行,移动到屏幕中间,如果该行内容长度不够,则到该行末尾 |
zz/zt/zb | 光标保持当前行,滚动屏幕让该行处于中央/上部/底部 |
i/I/a/A/o/O | 插入模式,光标处/行首/光标后/行尾/下一行插入新行/上一行插入新行 |
v/V | 可视模式/按行可视模式 |
//? | 向下/上查找,可以正则表达式 |
*/# | 向下/上查找光标所在的单词 |
😒 /old/new | 替换当前行匹配到第一个old为new |
😒 /lod/new/g | 替换当前行匹配到所有old为new |
:%s /old/new | 替换文档中每一行匹配到的第一个old为new |
:%s /old/new/g | 替换文档中的所有的old为new 比较常用 |
网络配置
ifconfig # 看网卡
vim /etc/resolv.conf # CentOS修改DNS
systemctl restart network
resolvectl dns # Ubuntu默认使用了systemd-resolved来管理DNS
resolvectl status # Ubuntu默认使用了systemd-resolved来管理DNS
sudo vim /etc/systemd/resolved.conf # Ubuntu修改systemd-resolved的配置文件,来配置DNS
# 配置后重启服务 sudo systemctl restart systemd-resolved.service
sudo resolvectl dns <interface> <DNS server IP> # 或者使用命令来临时配置DNS,立即生效
# sudo resolvectl dns eth0 8.8.8.8
# CentOS配置静态网络IP
cd /etc/sysconfig/network-scripts
vim ifcfg-<interface> #按tab键补充 例如ifcfg-eth0
BOOTPROTO="dhcp"
修改为
BOOTPROTO="static"
#IP地址
IPADDR=192.162.202.100
# 网关
GATEWAY=192.168.202.2
# 域名解析器
DBS1=192.168.202.2
# 重启
server network restart
# 在 Ubuntu 服务器 22.04 中,网络由 netplan 程序控制,因此我们将使用 netplan 在 Ubuntu 服务器上配置静态 IP 地址
# netplan配置文件存储在/etc/netplan目录中,可能有一个或多个YAML文件,文件的名称可能因安装程序而异。通常,该文件名为01-netcfg.yaml、00-installer-config.yaml、50-cloud-init.yaml或NN_interfaceName.yaml,但是在不同系统中可能有所不同。
# 禁用cloud-init
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
# Netplan 根据文件名的规则,这些配置文件将按照以下顺序应用:
# 01-network-manager-all.yaml(优先级最高)
# 50-cloud-init.yaml
# 99-custom-config.yaml(优先级最低)
# 静态ip
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: false
addresses: [192.168.100.87/24]
gateway4: 192.168.100.3
nameservers:
addresses: [192.168.100.3,8.8.8.8]
# DHCP
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: true
# 重启Netplan
netplan apply
系统管理
systemctl list-unit-files --type=service #列出所有服务
systemctl list-units --type=service #当前正在运行的服务
systemctl start/stop/restart/status/enable/disable #enable/disable开机自启动
系统启动流程
- 读取BIOS,根据BIOS加载硬件信息和硬件系统自检
- 根据BIOS读取第一个可启动设备中MBR的启动引导程序(Boot Loader)
- 根据启动引导程序,将指定内核(Kernel)文件加载至内存中解压和执行
- 待内核检测硬件和加载驱动程序完毕,系统即可运行,内核文件一般为压缩文件,使用前需解压缩,才能加载到内存中
- 在驱动程序加载完成后,Kernel会主动调用Systemd程序进行default.target流程
- Systemd执行sysinit.target初始化系统;
- Systemd执行basic.target设计运行环境;
- Systemd启动multi-user.target下的本机/服务器的服务;
- Systemd执行multi-user.target的/etc/rc.d/rc.local、getty.target和登录服务,若是图形界面,Systemd还需执行graphical.target所需的服务
系统运行级别runlevel
3-多用户有网络,命令行
5-多用户有网络,图形界面
远程登录
ssh 用户名@ip地址或域名 -p 端口号