1.linux常见快捷键
Ctrl+C
强制终止当前正在运行的程序或命令。适用于卡死的进程或需要中断的长时间任务。
Ctrl+D
发送EOF(文件结束符)信号,常用于以下场景:
- 退出当前登录的Shell账户(在空行连续输入两次)
- 退出
cat、mail等交互式命令行工具 - 终止标准输入流
Ctrl+R
反向搜索历史命令。输入关键词可快速查找并执行过往命令,支持多次按Ctrl+R向前翻页。
Ctrl+Alin
将光标移动到当前命令行的行首,避免长命令修改时手动移动光标。
Ctrl+E
将光标移动到当前命令行的行尾,与Ctrl+A形成互补操作。
Ctrl+左键(部分终端支持)
在单词间快速向左跳跃移动光标(需终端支持,如GNOME Terminal)。Windows的CMD通常不支持,但可通过其他终端模拟器实现。
补充说明
部分快捷键行为可能因终端类型(如Linux的bash、zsh或Windows的CMD)或配置不同而产生差异。例如:
- Mac的iTerm2需单独配置Ctrl+左右键跳跃功能
- Windows的CMD中Ctrl+C/Ctrl+D行为与Linux有区别
2.在CentOS上安装软件
CentOS主要使用yum或dnf(CentOS 8及以上版本)作为包管理工具。以下是常见操作:
更新系统软件包列表:
sudo yum update搜索软件包:
sudo yum search 软件名安装软件:
sudo yum install 软件名移除软件:
sudo yum remove 软件名启用EPEL仓库(扩展软件源):
sudo yum install epel-release3.在Ubuntu上安装软件
3.1 Ubuntu使用apt作为包管理工具。以下是常见操作:
更新软件包列表:
sudo apt update升级已安装的软件包:
sudo apt upgrade搜索软件包:
apt search 软件名安装软件:
sudo apt install 软件名移除软件:
sudo apt remove 软件名清理无用依赖:
sudo apt autoremove3.2 使用Snap安装软件(跨Linux发行版)
Snap是一种通用的包管理工具,适用于大多数Linux发行版:
安装Snap(Ubuntu已预装,CentOS需手动安装):
sudo yum install snapd # CentOS sudo apt install snapd # Ubuntu通过Snap安装软件:
sudo snap install 软件名3.3 通过源码编译安装
下载源码包并解压:
tar -xzvf 软件包.tar.gz cd 软件包目录编译安装:
./configure make sudo make install注意事项
- 安装前建议先更新软件包列表。
- 某些软件可能需要启用额外仓库(如EPEL、PPA等)。
- 权限不足时需使用
sudo。 - 通过源码安装可能需要提前安装编译工具和依赖库。
4.systemctl
4.1 systemctl 简介
systemctl是 Systemd 系统和服务管理器的核心命令,用于控制系统的启动、服务管理、日志查看等。它替代了传统的service和chkconfig命令,是现代 Linux 发行版(如 Ubuntu、CentOS、Fedora)的标准工具。
4.2 常用命令
4.2.1 管理服务状态
- 启动服务:
systemctl start <service_name> - 停止服务:
systemctl stop <service_name> - 重启服务:
systemctl restart <service_name> - 查看服务状态:
systemctl status <service_name> - 启用开机自启:
systemctl enable <service_name> - 禁用开机自启:
systemctl disable <service_name>
4.2.2 系统管理
- 查看所有已加载的服务:
systemctl list-units --type=service - 查看所有单元(包括未加载的):
systemctl list-unit-files - 重新加载 Systemd 配置:
systemctl daemon-reload - 重启系统:
systemctl reboot - 关闭系统:
systemctl poweroff
4.2.3 日志查看
- 查看服务日志:
journalctl -u <service_name> - 实时跟踪日志:
journalctl -f
4.3 高级用法
- 检查服务依赖关系:
systemctl list-dependencies <service_name> - 限制服务资源(需编辑单元文件):
systemctl edit <service_name> - 隔离运行级别(如多用户模式):
systemctl isolate multi-user.target
4.4 注意事项
- 服务名称通常以
.service结尾,但使用时可以省略后缀(如nginx和nginx.service等效)。 - 修改服务配置后需执行
systemctl daemon-reload使更改生效。 - 使用
journalctl查看日志时,可通过--since和--until过滤时间范围。
5.软连接
5.1 软链接的概念
软链接(Symbolic Link,又称符号链接)是Linux/Unix系统中的一种特殊文件类型,类似于Windows的快捷方式。它通过一个路径名指向另一个文件或目录,实际数据存储在目标文件中。删除软链接不会影响目标文件,但删除目标文件会导致软链接失效(称为“悬空链接”)。
5.2 软链接的特点
- 跨文件系统:可以链接不同文件系统的文件或目录。
- 灵活性:链接可以指向文件或目录,且目标路径可以是相对或绝对路径。
- 依赖目标:软链接的有效性依赖于目标是否存在。
5.3 创建软链接的命令
使用ln -s命令创建软链接,语法如下:
ln -s <目标文件/目录路径> <软链接路径>示例:
ln -s /home/user/data.txt /tmp/data_link # 创建指向data.txt的软链接 ln -s /var/www/html /home/user/webroot # 创建指向目录的软链接5.4 软链接与硬链接的区别
| 特性 | 软链接 | 硬链接 |
|---|---|---|
| 文件系统限制 | 可跨文件系统 | 必须同一文件系统 |
| 目标类型 | 可指向文件或目录 | 仅能指向文件 |
| inode | 与目标文件不同 | 与目标文件相同 |
| 目标删除后 | 链接失效(悬空) | 仍有效(共享inode) |
5.5 查看软链接信息
- 使用
ls -l查看软链接的指向目标:
输出示例:ls -l /tmp/data_linklrwxrwxrwx 1 user group 15 Jan 1 12:00 /tmp/data_link -> /home/user/data.txt - 使用
readlink命令获取软链接的目标路径:readlink /tmp/data_link
5.6 删除软链接
直接使用rm命令删除软链接文件,不影响目标文件:
rm /tmp/data_link注意:若误用rm -rf删除软链接目录,需确保路径末尾不含/(否则会删除目标目录内容)。
5.7 常见应用场景
- 快捷访问:为长路径文件创建短路径链接。
- 版本切换:通过软链接指向不同版本的软件目录(如
/usr/bin/python指向具体版本)。 - 数据共享:跨文件系统共享文件而不复制数据。
5.8 注意事项
- 避免循环链接(如A链接B,B又链接A),可能导致命令陷入无限循环。
- 脚本中处理软链接时,建议使用
realpath或readlink -f解析绝对路径。
6.date日期命令
6.1 日期命令date的基本用法
date是 Linux 和 Unix 系统中用于显示或设置系统日期和时间的命令。以下是其常见用法和选项:
6.1.1 显示当前日期和时间
date默认输出格式为:星期 月 日 时:分:秒 时区 年(例如:Mon Aug 1 14:30:00 CST 2023)。
6.1. 2 自定义输出格式使用+符号和格式符组合定义输出格式:
date "+%Y-%m-%d %H:%M:%S"输出示例:2023-08-01 14:30:00。常用格式符:
%Y:四位年份%m:两位月份%d:两位日期%H:24小时制小时%M:分钟%S:秒%A:完整星期名%B:完整月份名
6.1.3 设置系统日期和时间需要管理员权限(使用sudo):
sudo date -s "2023-08-01 14:30:00"或分步设置:
sudo date -s "2023-08-01" sudo date -s "14:30:00"6.1.4 示其他时区的日期时间通过环境变量TZ指定时区:
TZ='America/New_York' date输出将显示纽约的当前时间。
6.1.5 显示文件的修改时间结合date和stat命令:
date -r /path/to/file输出文件的最后修改时间。
6.2 日期计算
6.2.1 加减日期时间使用-d或--date参数进行日期计算:
date -d "now + 1 day" # 明天此时 date -d "2023-08-01 + 2 weeks" # 指定日期加两周 date -d "1 month ago" # 一个月前6.2.2 时间戳转换将时间戳转换为可读格式:
date -d @1627833600将可读日期转换为时间戳:
date -d "2023-08-01" +%s6.3 高级用法
6.3.1 输出日历周显示当前日期是一年中的第几周:
date +%V6.3.2 输出纪元时间(毫秒)
date +%s%3N6.3.3 用于脚本的日期生成生成日志文件名:
logfile="app-$(date +%Y%m%d).log"6.4 注意事项
- 修改系统时间可能影响依赖时间的服务(如 cron、数据库等)。
- 某些格式符可能因系统或地区设置不同而表现差异。
- 在脚本中使用时,建议明确指定格式以避免本地化问题。
7.linux时区
7.1 查看当前时区设置
在Linux系统中,可以通过以下命令查看当前时区配置:
timedatectl输出结果中Time zone字段显示当前时区,例如:Asia/Shanghai。
7.2 列出所有可用时区
若要查看系统支持的时区列表,运行以下命令:
timedatectl list-timezones可通过管道符grep过滤特定地区(如Asia):
timedatectl list-timezones | grep -i "Asia"7.3 修改系统时区
使用timedatectl命令设置新时区(需root权限):
sudo timedatectl set-timezone <时区名称>例如设置为上海时区:
sudo timedatectl set-timezone Asia/Shanghai7.4 通过软链接手动修改时区
某些旧版本系统可能需手动创建时区软链接:
- 删除旧的时区链接:
sudo rm -f /etc/localtime - 创建新时区链接(以上海为例):
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
7.5 同步硬件时钟(RTC)
若需将硬件时钟与当前系统时区同步,执行:
sudo hwclock --systohc7.6 验证时区修改
重新运行timedatectl或查看/etc/timezone文件内容,确认时区已更新:
cat /etc/timezone7.7 时区与时间格式
- 显示当前时间及格式(含时区):
date +"%Y-%m-%d %H:%M:%S %Z" - 临时切换时间显示格式(如UTC):
TZ=UTC date
7.8 注意事项
- 修改时区后,重启依赖时间的服务(如
cron、nginx)可能需手动重启:sudo systemctl restart cron - 容器环境下(如Docker),时区需在容器内单独配置或通过
-e TZ环境变量传递。
8.ip地址与主机名
8.1 IP地址与主机名的关系
IP地址和主机名是计算机网络中用于标识设备的两种不同方式,各有特点和用途。
1.IP地址
IP地址是一组数字标识符,用于在网络中唯一标识设备。分为IPv4(如192.168.1.1)和IPv6(如2001:0db8:85a3::8a2e:0370:7334)。它是网络层协议的基础,确保数据包能够准确路由到目标设备。
2.主机名
主机名是易于记忆的名称(如www.example.com),用于代替复杂的IP地址。通过DNS(域名系统)将主机名解析为对应的IP地址,简化用户操作。
8.2 主机名解析为IP地址的机制
域名系统(DNS)负责将主机名转换为IP地址。当用户在浏览器中输入主机名时,DNS服务器会递归查询,最终返回对应的IP地址。
解析过程示例
- 用户输入
www.example.com。 - 本地DNS缓存检查是否已存储该主机名的IP地址。
- 若未找到,向根DNS服务器发起查询,逐级解析至权威DNS服务器。
- 获取IP地址后返回给用户设备。
8.3 查看主机名与IP地址的方法
1.在Windows系统中
- 使用命令提示符执行
hostname查看主机名。 - 执行
ipconfig查看本地IP地址。
2.在Linux/macOS系统中
- 终端输入
hostname显示主机名。 - 输入
ifconfig或ip addr查看IP地址配置。
8.4 静态与动态主机名解析
1.静态解析
通过本地hosts文件(路径:/etc/hosts或C:\Windows\System32\drivers\etc\hosts)手动绑定主机名与IP地址。格式如下:
192.168.1.10 server.local2.动态解析
依赖DNS服务器自动管理主机名与IP地址的映射。适用于大规模网络,支持动态更新。
8.5 常见问题与解决方案
1.主机名无法解析
- 检查DNS服务器配置(如
/etc/resolv.conf或网络适配器设置)。 - 使用
nslookup或dig工具测试DNS查询是否正常。
2.IP冲突导致连接失败
- 局域网中确保IP地址唯一,可通过
arp -a检查冲突。 - 启用DHCP服务自动分配IP地址。
通过理解IP地址与主机名的关系及解析机制,可以更高效地管理网络连接和故障排查。
9.域名解析
9.1 域名解析的基本概念
域名解析(DNS解析)是将人类可读的域名(如example.com)转换为机器可读的IP地址(如192.0.2.1)的过程。DNS(Domain Name System)是互联网的核心服务,负责维护域名与IP地址的映射关系。
9.2 域名解析的步骤
本地DNS缓存查询
当用户在浏览器输入域名时,操作系统会先检查本地DNS缓存(如浏览器缓存、系统缓存)是否已有该域名的IP地址。若存在,则直接返回结果。递归DNS服务器查询
若本地缓存未命中,请求会发送至递归DNS服务器(通常由ISP或公共DNS服务如8.8.8.8提供)。递归服务器会代表用户向根DNS服务器发起查询。根DNS服务器与TLD服务器
根DNS服务器返回顶级域(TLD)服务器地址(如.com的TLD服务器)。TLD服务器再返回该域名的权威DNS服务器地址。权威DNS服务器响应
权威DNS服务器(如域名注册商提供的服务器)返回域名对应的IP地址,递归服务器将此结果缓存并返回给用户。
9.3 常见DNS记录类型
- A记录:将域名映射到IPv4地址。
example.com. IN A 192.0.2.1 - AAAA记录:将域名映射到IPv6地址。
example.com. IN AAAA 2001:db8::1 - CNAME记录:域名别名,指向另一个域名。
www.example.com. IN CNAME example.com. - MX记录:指定邮件服务器地址。
example.com. IN MX 10 mail.example.com. - TXT记录:存储文本信息(如SPF、DKIM配置)。
9.4 工具与命令
nslookup:查询DNS记录。nslookup example.comdig:更详细的DNS查询工具。dig example.com Aping:测试域名解析是否生效。ping example.com
9.5 注意事项
- TTL(Time to Live):DNS记录的缓存时间,单位为秒。修改记录后需等待TTL过期才能生效。
- DNSSEC:通过数字签名防止DNS欺骗攻击。
- CDN与DNS:内容分发网络(CDN)依赖DNS解析将用户路由至最近的服务器。