乐闻世界logo
搜索文章和话题

面试题手册

Linux 系统启动流程包括哪些阶段,从 BIOS/UEFI 到用户登录的详细过程是什么?

Linux 系统启动流程是理解系统工作原理的重要知识,掌握启动流程有助于故障排查和系统优化。BIOS/UEFI 启动阶段:BIOS(Basic Input/Output System):传统固件接口执行 POST(Power-On Self-Test)自检检测硬件设备查找可启动设备加载 MBR(Master Boot Record)UEFI(Unified Extensible Firmware Interface):现代固件接口支持 GPT 分区表启动速度更快支持安全启动加载 EFI 应用程序引导加载程序阶段:GRUB(Grand Unified Bootloader):最常用的 Linux 引导加载程序支持 GRUB Legacy(0.97)和 GRUB 2配置文件:/boot/grub/grub.cfg(GRUB 2)、/boot/grub/menu.lst(GRUB Legacy)支持 Linux、Windows 等多系统引导提供命令行界面进行故障恢复LILO(Linux Loader):传统的 Linux 引导加载程序配置文件:/etc/lilo.conf已被 GRUB 取代systemd-boot:简单的 UEFI 引导加载程序配置文件:/boot/loader/entries/*.conf适合简单的启动场景内核加载阶段:加载内核镜像:/boot/vmlinuz-*加载 initramfs(初始 RAM 文件系统):/boot/initrd.img-*内核解压缩并初始化检测和初始化硬件设备挂载根文件系统启动 init 进程(PID 1)init 进程阶段:SysVinit(传统 init 系统):配置文件:/etc/inittab运行级别(runlevel):0-60:关机1:单用户模式2:多用户模式(无网络)3:多用户模式(有网络)4:未使用5:图形界面模式6:重启启动脚本:/etc/rc.d/rc.d/ 或 /etc/rc.d/使用 chkconfig 管理服务systemd(现代 init 系统):配置文件:/etc/systemd/system/目标(target):类似于运行级别poweroff.target:关机rescue.target:救援模式multi-user.target:多用户模式graphical.target:图形界面模式reboot.target:重启使用 systemctl 管理服务支持并行启动,启动速度更快更好的日志集成(journalctl)系统服务启动阶段:SysVinit:按 runlevel 顺序启动服务执行 /etc/rc.d/rcN.d/ 目录下的脚本S 开头的脚本表示启动(Start)K 开头的脚本表示停止(Kill)systemd:并行启动服务根据依赖关系确定启动顺序执行 .service 文件定义的服务登录阶段:显示登录提示符用户输入用户名和密码验证用户凭据启动用户 shell执行用户配置文件:~/.bash_profile、~/.bashrc启动过程的关键文件:/boot/grub/grub.cfg:GRUB 2 配置文件/boot/grub/menu.lst:GRUB Legacy 配置文件/etc/inittab:SysVinit 配置文件/etc/systemd/system/default.target:systemd 默认启动目标/etc/fstab:文件系统挂载配置/etc/hostname:主机名配置/etc/hosts:主机名到 IP 映射启动故障排查:GRUB 故障:修复 GRUB:grub-install /dev/sda重建 GRUB 配置:update-grub 或 grub2-mkconfig -o /boot/grub2/grub.cfg进入 GRUB 命令行:按 'c' 键内核故障:查看内核日志:dmesg、journalctl -k尝试恢复模式:在 GRUB 菜单选择 recovery mode使用旧内核启动文件系统故障:修复文件系统:fsck /dev/sda1检查 /etc/fstab 配置服务启动故障:查看服务状态:systemctl status service查看服务日志:journalctl -u service禁用故障服务:systemctl disable service启动优化:减少 GRUB 等待时间:修改 /etc/default/grub 中的 GRUB_TIMEOUT禁用不必要的启动服务:systemctl disable service使用 systemd-analyze 分析启动时间:systemd-analyze:查看总启动时间systemd-analyze blame:查看各服务启动时间systemd-analyze critical-chain:查看关键启动链使用并行启动:systemd 默认支持优化内核参数:修改 /etc/default/grub 中的 GRUBCMDLINELINUX
阅读 0·2月17日 23:36

Linux 系统安全加固措施有哪些,包括用户管理、SSH 配置和防火墙设置?

Linux 系统安全是运维和开发人员必须掌握的重要知识,涉及用户管理、权限控制、防火墙配置等多个方面。用户和组管理:useradd:创建用户,如 useradd -m -s /bin/bash username(创建用户并设置家目录和 shell)userdel:删除用户,如 userdel -r username(删除用户及其家目录)usermod:修改用户属性,如 usermod -aG group username(将用户添加到组)passwd:修改用户密码,如 passwd usernamegroupadd:创建组,如 groupadd groupnamegroupdel:删除组,如 groupdel groupnamegpasswd:管理组,如 gpasswd -a username groupname(将用户添加到组)id:查看用户 ID 和组信息whoami:查看当前用户w:查看当前登录用户SSH 安全配置:配置文件:/etc/ssh/sshd_config禁用 root 登录:PermitRootLogin no禁用密码登录:PasswordAuthentication no(使用密钥认证)修改默认端口:Port 2222限制登录用户:AllowUsers user1 user2密钥认证:ssh-keygen 生成密钥对,将公钥复制到服务器的 ~/.ssh/authorized_keys使用 ssh-copy-id:ssh-copy-id user@host防火墙配置:iptables:传统防火墙工具查看规则:iptables -L -n添加规则:iptables -A INPUT -p tcp --dport 22 -j ACCEPT删除规则:iptables -D INPUT 1保存规则:iptables-save > /etc/iptables/rules.v4firewalld:动态防火墙管理查看规则:firewall-cmd --list-all开放端口:firewall-cmd --add-port=80/tcp --permanent重载配置:firewall-cmd --reloadufw:简化防火墙配置(Ubuntu)启用防火墙:ufw enable开放端口:ufw allow 22查看状态:ufw status文件权限和 SELinux:chmod:修改文件权限chown:修改文件所有者chgrp:修改文件所属组SELinux:安全增强型 Linux查看状态:getenforce临时禁用:setenforce 0永久禁用:修改 /etc/selinux/config查看上下文:ls -Z系统加固:禁用不必要的服务:systemctl disable service更新系统:apt update && apt upgrade(Debian/Ubuntu)或 yum update(CentOS/RHEL)配置自动更新:unattended-upgrades(Debian/Ubuntu)安装安全工具:fail2ban(防止暴力破解)、rkhunter(检测 rootkit)配置日志审计:auditd限制 sudo 权限:编辑 /etc/sudoers,使用 visudo 命令安全审计:查看登录日志:last、lastlog查看认证日志:/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS/RHEL)查看系统日志:/var/log/messages、journalctl查看进程:ps aux、top查看网络连接:ss -tulnp、netstat -tulnp查看开放端口:nmap localhost应急响应:检查异常进程:ps aux | grep -v grep | grep -E "bash|sh|python|perl"检查异常网络连接:ss -tulnp | grep ESTABLISHED检查异常文件:find / -perm -4000 -o -perm -2000(查找 SUID/SGID 文件)检查用户登录:last、lastlog隔离受感染系统:断开网络连接备份重要数据:在清理前备份关键数据
阅读 0·2月17日 23:36

Linux 系统性能监控有哪些常用工具,如何分析 CPU、内存、磁盘和网络的使用情况?

Linux 系统性能监控是运维工程师的重要技能,需要掌握多种工具来诊断系统瓶颈。CPU 监控:top/htop:实时查看 CPU 使用率、进程信息vmstat:报告虚拟内存统计信息,如 vmstat 1 5(每秒更新一次,共5次)mpstat:显示各个 CPU 核心的使用情况,如 mpstat -P ALL 1sar:系统活动报告,如 sar -u 1 10(每秒采集一次,共10次)内存监控:free:显示内存使用情况,free -h 以人类可读格式显示vmstat:查看内存交换、缓存等信息ps aux:查看进程的内存占用(VSZ、RSS)pmap:查看进程的内存映射磁盘监控:df:查看磁盘空间使用情况,df -h 以人类可读格式显示du:查看目录或文件的大小,du -sh directoryiostat:查看磁盘 I/O 统计信息,如 iostat -x 1iotop:实时查看磁盘 I/O 使用情况(需要 root 权限)网络监控:ifconfig/ip:查看网络接口配置netstat/ss:查看网络连接和端口监听,如 netstat -tulnp 或 ss -tulnpnethogs:按进程查看网络带宽使用tcpdump:抓包分析网络流量,如 tcpdump -i eth0 port 80日志分析:/var/log/messages:系统主日志/var/log/syslog:系统日志(Debian/Ubuntu)/var/log/dmesg:内核启动日志journalctl:systemd 日志查看工具,如 journalctl -f(实时查看)综合监控工具:dstat:集成了 vmstat、iostat、netstat 等功能glances:基于 Web 的系统监控工具prometheus + grafana:企业级监控解决方案性能优化建议:CPU:优化算法、减少不必要的计算、使用多进程/多线程内存:减少内存泄漏、优化数据结构、使用缓存磁盘:使用 SSD、优化文件系统、减少 I/O 操作网络:使用 CDN、优化 TCP 参数、减少网络请求
阅读 0·2月17日 23:36

Linux 系统日志管理中如何查看、分析和轮转日志文件?

Linux 系统日志管理是故障排查和安全审计的重要环节,掌握日志分析技能可以快速定位问题。日志文件位置:/var/log/messages:系统主日志(CentOS/RHEL)/var/log/syslog:系统日志(Debian/Ubuntu)/var/log/auth.log:认证日志(Debian/Ubuntu)/var/log/secure:安全日志(CentOS/RHEL)/var/log/kern.log:内核日志/var/log/boot.log:系统启动日志/var/log/dmesg:内核启动消息/var/log/cron:定时任务日志/var/log/maillog:邮件日志/var/log/nginx/:Nginx 日志目录/var/log/apache2/:Apache 日志目录/var/log/mysql/:MySQL 日志目录日志查看工具:cat:查看整个文件内容less:分页查看,支持上下滚动和搜索tail:查看文件末尾,tail -f 实时查看head:查看文件开头grep:搜索特定内容zcat:查看压缩的日志文件(.gz)zgrep:搜索压缩的日志文件journalctl:systemd 日志查看工具journalctl 常用命令:journalctl:查看所有日志journalctl -f:实时查看日志journalctl -u service:查看特定服务的日志journalctl -u service -f:实时查看服务日志journalctl --since today:查看今天的日志journalctl --since "2024-01-01" --until "2024-01-02":查看指定时间段的日志journalctl -p err:查看错误级别的日志journalctl -p warning:查看警告级别的日志journalctl -b:查看当前启动的日志journalctl -b -1:查看上一次启动的日志journalctl --disk-usage:查看日志磁盘占用journalctl --vacuum-size=1G:限制日志大小为 1GB日志级别:emerg:紧急alert:警报crit:严重err:错误warning:警告notice:通知info:信息debug:调试日志轮转(logrotate):配置文件:/etc/logrotate.conf 和 /etc/logrotate.d/配置示例: /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript }手动执行:logrotate -f /etc/logrotate.conf测试配置:logrotate -d /etc/logrotate.conf日志分析技巧:统计错误数量:grep -i error /var/log/syslog | wc -l查找特定时间段的日志:grep "2024-01-01" /var/log/syslog查找特定 IP 的访问:grep "192.168.1.1" /var/log/nginx/access.log统计访问量最高的 IP:awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10查找失败的登录尝试:grep "Failed password" /var/log/auth.log查找系统重启记录:last reboot日志管理最佳实践:定期清理旧日志:使用 logrotate 自动轮转监控日志大小:设置告警阈值集中日志管理:使用 ELK(Elasticsearch、Logstash、Kibana)或 Graylog日志备份:定期备份重要日志日志权限:确保日志文件权限正确,防止未授权访问结构化日志:使用 JSON 格式便于解析和分析远程日志收集:rsyslog:系统日志服务,支持远程日志收集syslog-ng:功能强大的日志管理工具fluentd:统一日志收集层filebeat:轻量级日志收集器故障排查流程:确认问题发生时间查看系统主日志(/var/log/messages 或 /var/log/syslog)查看相关服务日志使用 grep 搜索错误信息分析日志上下文结合其他监控工具(top、vmstat、iostat)综合判断
阅读 0·2月17日 23:35

Linux 系统服务管理中如何使用 systemctl 和 service 命令管理服务?

Linux 系统服务管理是运维工程师的核心技能,主要涉及 systemd 和传统的 init 系统。systemd 服务管理:systemctl start service:启动服务systemctl stop service:停止服务systemctl restart service:重启服务systemctl reload service:重新加载配置(不中断服务)systemctl status service:查看服务状态systemctl enable service:设置服务开机自启systemctl disable service:取消服务开机自启systemctl is-enabled service:检查服务是否开机自启systemctl list-units --type=service:列出所有服务systemctl list-unit-files --type=service:列出所有服务文件systemctl daemon-reload:重新加载 systemd 配置服务配置文件:位置:/etc/systemd/system/ 或 /usr/lib/systemd/system/示例:/etc/systemd/system/nginx.service服务配置文件格式:[Unit]Description=nginx serviceAfter=network.target[Service]Type=forkingExecStart=/usr/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPIDRestart=on-failure[Install]WantedBy=multi-user.target传统 init 服务管理(SysVinit):service service start:启动服务service service stop:停止服务service service restart:重启服务service service status:查看服务状态chkconfig --list:列出所有服务chkconfig service on:设置服务开机自启chkconfig service off:取消服务开机自启服务日志管理:journalctl -u service:查看特定服务的日志journalctl -u service -f:实时查看服务日志journalctl -u service --since today:查看今天的日志journalctl -u service --since "2024-01-01" --until "2024-01-02":查看指定时间段的日志journalctl -p err:查看错误级别的日志/var/log/messages:系统主日志/var/log/syslog:系统日志(Debian/Ubuntu)服务故障排查:检查服务状态:systemctl status service查看服务日志:journalctl -u service检查配置文件:cat /etc/systemd/system/service.service检查端口监听:ss -tulnp | grep service检查进程:ps aux | grep service手动启动测试:直接运行服务的可执行文件服务优化:调整启动顺序:使用 After 和 Wants 指令设置资源限制:使用 LimitCPU、LimitMEM 等指令配置自动重启:Restart=on-failure、RestartSec=10s优化启动时间:使用 Type=simple 或 Type=notify
阅读 0·2月17日 23:35

Linux 系统监控和告警的常用工具、配置方法和最佳实践有哪些?

Linux 系统监控和告警是保障系统稳定运行的重要手段,需要掌握各种监控工具和告警机制。系统监控工具:CPU 监控:top:实时查看 CPU 使用率和进程信息htop:交互式进程查看器,功能更强大mpstat:显示各个 CPU 核心的使用情况sar:系统活动报告,可记录历史数据vmstat:报告虚拟内存统计信息内存监控:free:显示内存使用情况vmstat:查看内存交换、缓存等信息ps aux:查看进程的内存占用pmap:查看进程的内存映射磁盘监控:df:查看磁盘空间使用情况du:查看目录或文件的大小iostat:查看磁盘 I/O 统计信息iotop:实时查看磁盘 I/O 使用情况网络监控:ifconfig/ip:查看网络接口配置netstat/ss:查看网络连接和端口监听nethogs:按进程查看网络带宽使用tcpdump:抓包分析网络流量iftop:实时显示网络带宽使用进程监控:ps:查看进程状态top/htop:实时监控进程pgrep:查找进程 IDpidstat:监控进程资源使用性能分析工具:strace:跟踪系统调用和信号ltrace:跟踪库函数调用perf:性能分析工具sysdig:系统级监控和故障排查eBPF:扩展伯克利数据包过滤器日志监控:/var/log/messages:系统主日志/var/log/syslog:系统日志(Debian/Ubuntu)/var/log/auth.log:认证日志/var/log/secure:安全日志(CentOS/RHEL)journalctl:systemd 日志查看工具logrotate:日志轮转工具监控告警系统:Nagios:企业级监控系统Zabbix:分布式监控系统Prometheus:时序数据库和监控系统Grafana:数据可视化平台ELK Stack(Elasticsearch、Logstash、Kibana):日志分析和可视化Datadog:云监控平台New Relic:应用性能监控Prometheus 监控:数据采集:使用 Exporter 采集指标常用 Exporter:node_exporter:系统指标mysqld_exporter:MySQL 指标nginx_exporter:Nginx 指标redis_exporter:Redis 指标配置文件:/etc/prometheus/prometheus.yml告警规则:使用 PromQL 定义告警条件告警管理:Alertmanager 处理告警通知Grafana 可视化:数据源配置:支持 Prometheus、Elasticsearch 等仪表板:创建自定义监控面板告警:基于可视化图表设置告警模板:使用变量创建动态仪表板告警通知方式:邮件:SMTP 邮件通知短信:短信网关即时通讯:Slack、钉钉、企业微信电话:语音通知Webhook:自定义 Web 回调告警策略:告警级别:Critical、Warning、Info告警阈值:根据业务需求设置合理阈值告警抑制:避免告警风暴告警聚合:相关告警合并通知告警升级:长时间未处理自动升级自定义监控脚本:编写 Shell/Python 脚本采集指标使用 cron 定时执行输出格式:支持 Nagios、Prometheus 等格式示例: #!/bin/bash # 检查磁盘使用率 DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 80 ]; then echo "CRITICAL: Disk usage is ${DISK_USAGE}%" exit 2 fi echo "OK: Disk usage is ${DISK_USAGE}%" exit 0监控最佳实践:全面监控:覆盖 CPU、内存、磁盘、网络等关键指标合理采样:避免监控数据量过大告警分级:区分紧急和一般告警告警收敛:避免重复告警定期维护:清理过期数据,更新监控规则文档记录:维护监控配置文档测试验证:定期测试告警机制常见监控指标:系统指标:CPU 使用率、内存使用率、磁盘使用率、网络流量应用指标:请求数、响应时间、错误率、并发数业务指标:订单量、用户数、交易额故障排查流程:确认告警信息查看系统监控数据检查相关服务状态分析日志文件定位问题根因实施修复措施验证修复效果总结经验教训
阅读 0·2月17日 23:35

Linux 系统资源限制 ulimit 的作用、配置方法和常见应用场景有哪些?

Linux 系统资源限制(ulimit)是控制进程资源使用的重要机制,可以防止进程占用过多系统资源。ulimit 基本概念:ulimit 是 shell 内置命令,用于控制 shell 进程及其子进程的资源限制限制分为软限制(soft limit)和硬限制(hard limit)软限制可以由用户调整,但不能超过硬限制硬限制只能由 root 用户提高配置文件:/etc/security/limits.conf、/etc/security/limits.d/常用 ulimit 命令:ulimit -a:显示所有当前资源限制ulimit -n:查看/设置最大打开文件数ulimit -u:查看/设置最大用户进程数ulimit -s:查看/设置栈大小ulimit -v:查看/设置最大虚拟内存ulimit -m:查看/设置最大常驻内存ulimit -c:查看/设置 core 文件大小ulimit -t:查看/设置最大 CPU 时间ulimit -f:查看/设置最大文件大小ulimit -l:查看/设置最大锁定内存ulimit -p:查看/设置管道缓冲区大小ulimit -e:查看/设置最大调度优先级ulimit -r:查看/设置最大实时优先级资源限制类型:文件描述符限制:open files:最大打开文件数(-n)max locked memory:最大锁定内存(-l)进程限制:max user processes:最大用户进程数(-u)max pending signals:最大挂起信号内存限制:max memory size:最大常驻内存(-m)virtual memory:最大虚拟内存(-v)stack size:栈大小(-s)CPU 限制:cpu time:最大 CPU 时间(-t)max nice priority:最大 nice 优先级(-e)max realtime priority:最大实时优先级(-r)其他限制:file size:最大文件大小(-f)pipe size:管道缓冲区大小(-p)core file size:core 文件大小(-c)limits.conf 配置格式:格式: domain:可以是用户、组、*(所有用户)、%组名type:soft(软限制)、hard(硬限制)、-(同时设置软硬限制)item:资源类型,如 nofile、nproc、memlock 等value:限制值,unlimited 表示无限制配置示例:# 限制所有用户的最大打开文件数* soft nofile 65535* hard nofile 65535# 限制特定用户的最大进程数username soft nproc 4096username hard nproc 8192# 限制特定组的最大内存@groupname soft memlock 1048576@groupname hard memlock 2097152# 启用 core 文件* soft core unlimited* hard core unlimited临时修改限制:在当前 shell 中修改:ulimit -n 65535仅对当前 shell 及其子进程有效退出 shell 后失效永久修改限制:编辑 /etc/security/limits.conf 文件编辑 /etc/security/limits.d/ 目录下的配置文件修改后需要重新登录才能生效对于服务进程,需要重启服务systemd 服务限制:在服务配置文件中设置限制配置项:LimitNOFILE=65535:最大打开文件数LimitNPROC=4096:最大进程数LimitMEMLOCK=infinity:最大锁定内存LimitCORE=infinity:core 文件大小示例: [Service] LimitNOFILE=65535 LimitNPROC=4096常见应用场景:Web 服务器(Nginx、Apache):增加最大打开文件数:ulimit -n 65535增加最大进程数:ulimit -u 4096数据库服务器(MySQL、PostgreSQL):增加最大打开文件数:ulimit -n 65535增加 core 文件大小:ulimit -c unlimited高并发应用:增加最大打开文件数:ulimit -n 65535增加最大进程数:ulimit -u 8192开发环境:启用 core 文件:ulimit -c unlimited增加 core 文件大小:ulimit -c unlimited查看进程限制:查看 PID 的限制:cat /proc/PID/limits查看进程打开的文件数:ls /proc/PID/fd | wc -l查看进程线程数:ps -eLf | grep PID | wc -l故障排查:"Too many open files" 错误:增加 ulimit -n"Cannot allocate memory" 错误:检查内存限制进程无法启动:检查进程数限制core 文件未生成:检查 core 文件限制最佳实践:根据应用需求设置合理的限制值不要设置过高的限制值,避免资源耗尽监控资源使用情况,及时调整限制在生产环境应用前先在测试环境验证定期检查和更新限制配置
阅读 0·2月17日 23:35

Linux 网络配置和管理中常用的命令有哪些,如何配置网络接口、DNS 和防火墙?

Linux 网络配置和管理是系统管理员的核心技能之一。网络配置文件:/etc/network/interfaces(Debian/Ubuntu):网络接口配置文件/etc/sysconfig/network-scripts/ifcfg-*(CentOS/RHEL):网络接口配置文件/etc/resolv.conf:DNS 解析配置文件/etc/hosts:主机名到 IP 地址的映射/etc/hostname:主机名配置网络配置命令:ifconfig:配置和显示网络接口(已废弃,推荐使用 ip 命令)ip:新一代网络配置工具,如 ip addr show(显示 IP 地址)、ip link show(显示网络接口)、ip route show(显示路由表)route:显示和操作 IP 路由表,如 route -n(显示路由表)、route add default gw 192.168.1.1(添加默认网关)netstat:网络统计工具,如 netstat -tulnp(显示 TCP/UDP 监听端口)、netstat -an(显示所有连接)ss:netstat 的替代工具,性能更好,如 ss -tulnpping:测试网络连通性,如 ping -c 4 google.comtraceroute:跟踪数据包路由,如 traceroute google.comnslookup/dig:DNS 查询工具,如 dig google.comcurl/wget:下载工具,curl -I http://example.com(查看响应头)telnet:测试端口连通性,如 telnet host portnc(netcat):网络工具,如 nc -zv host port(测试端口)网络服务管理:systemctl:管理网络服务,如 systemctl restart network(重启网络服务)service:传统服务管理命令,如 service network restart防火墙配置:iptables:传统的防火墙工具,如 iptables -L(列出规则)、iptables -A INPUT -p tcp --dport 80 -j ACCEPT(添加规则)firewalld:动态防火墙管理守护进程,如 firewall-cmd --list-all(查看规则)、firewall-cmd --add-port=80/tcp(开放端口)ufw:简化防火墙配置工具(Ubuntu),如 ufw allow 80(开放端口)网络故障排查:检查网络接口:ip addr show 或 ifconfig检查路由表:ip route show 或 route -n检查 DNS:cat /etc/resolv.conf、dig domain.com检查端口监听:ss -tulnp 或 netstat -tulnp检查网络连通性:ping、traceroute抓包分析:tcpdump -i eth0 port 80查看网络统计:sar -n DEV 1网络性能优化:调整 TCP 参数:修改 /etc/sysctl.conf,如 net.ipv4.tcptwreuse=1增加连接数:net.core.somaxconn、net.ipv4.tcpmaxsyn_backlog优化网络缓冲区:net.core.rmemmax、net.core.wmemmax
阅读 0·2月17日 23:35

Linux 虚拟化技术(KVM、Docker、Kubernetes)的特点和使用场景有哪些?

Linux 虚拟化技术是现代云计算和容器化部署的基础,掌握虚拟化技术对于系统架构和运维至关重要。虚拟化类型:全虚拟化(Full Virtualization):通过 hypervisor 模拟完整的硬件环境,客户操作系统无需修改半虚拟化(Para-virtualization):客户操作系统需要修改以配合 hypervisor操作系统级虚拟化(OS-level Virtualization):在同一个操作系统内核上运行多个隔离的用户空间实例KVM(Kernel-based Virtual Machine):Linux 内核的虚拟化模块将 Linux 内核转变为 hypervisor需要 CPU 支持硬件虚拟化(Intel VT-x 或 AMD-V)使用 QEMU 作为设备模拟器命令示例:安装 KVM:apt install qemu-kvm libvirt-daemon-system libvirt-clients检查 KVM 支持:kvm-ok 或 lsmod | grep kvm创建虚拟机:virt-install --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --cdrom /path/to/isoXen:开源 hypervisor支持 paravirtualization 和 full virtualizationDomain 0(Dom0):特权域,负责硬件访问和管理Domain U(DomU):非特权域,运行客户操作系统命令示例:xl create vm.cfg、xl listVMware:商业虚拟化解决方案VMware ESXi:企业级 hypervisorVMware Workstation:桌面虚拟化软件VMware vSphere:虚拟化管理平台Docker 容器:轻量级虚拟化技术共享主机内核,隔离用户空间镜像(Image):只读的文件系统模板容器(Container):镜像的运行实例常用命令:docker run:运行容器docker ps:查看运行中的容器docker images:查看镜像docker build:构建镜像docker exec:在容器中执行命令docker logs:查看容器日志docker stop/start:停止/启动容器Kubernetes(K8s):容器编排平台管理容器化应用的部署、扩展和管理核心概念:Pod:最小的部署单元Service:为 Pod 提供稳定的网络访问Deployment:管理 Pod 的副本和更新ConfigMap:配置数据Secret:敏感数据常用命令:kubectl get pods:查看 Podkubectl get services:查看服务kubectl apply -f yaml:应用配置kubectl logs pod:查看日志LXC(Linux Containers):操作系统级虚拟化共享内核,隔离进程和网络比 Docker 更接近传统虚拟机命令示例:lxc-create:创建容器lxc-start:启动容器lxc-stop:停止容器lxc-ls:列出容器libvirt:虚拟化管理 API 和工具集支持 KVM、QEMU、Xen、LXC 等多种虚拟化技术提供统一的虚拟化管理接口命令示例:virsh list:列出虚拟机virsh start vm:启动虚拟机virsh shutdown vm:关闭虚拟机virsh dumpxml vm:查看虚拟机配置虚拟化网络:Bridge(网桥):将虚拟机连接到物理网络NAT(网络地址转换):虚拟机通过主机访问外部网络Host-only:仅主机和虚拟机之间的网络VLAN:虚拟局域网虚拟化存储:镜像格式:qcow2、raw、vmdk、vdi存储池:libvirt 存储池管理共享存储:NFS、iSCSI、Ceph性能优化:CPU 亲和性:绑定虚拟机到特定 CPU 核心内存 ballooning:动态调整虚拟机内存巨页(Huge Pages):提高内存性能virtio:半虚拟化 I/O 驱动虚拟化安全:SELinux/AppArmor:强制访问控制资源限制:cgroups 限制 CPU、内存、磁盘 I/O网络隔离:VLAN、防火墙规则镜像安全:定期更新、扫描漏洞
阅读 0·2月17日 23:34

Linux 进程管理中常用的命令有哪些,如何查看、终止和管理后台进程?

Linux 进程管理是系统运维和开发的核心技能。每个进程都有唯一的进程 ID(PID),父进程 ID(PPID),以及运行状态。常用进程管理命令:ps:查看当前进程状态,常用选项包括 ps aux(显示所有进程)、ps -ef(完整格式显示)、ps -l(长格式显示)top/htop:实时监控系统进程和资源使用情况,htop 提供更友好的交互界面kill:终止进程,如 kill PID(发送 SIGTERM 信号)、kill -9 PID(强制终止,发送 SIGKILL 信号)killall:按进程名终止进程,如 killall nginxpkill:按模式匹配终止进程,如 pkill -f "python script.py"pgrep:查找进程 ID,如 pgrep nginxnohup:让命令在后台持续运行,如 nohup command &&:在后台运行命令,如 command &jobs:查看当前 shell 的后台任务bg/fg:将任务切换到后台/前台运行进程状态包括:R(Running):正在运行或在运行队列中等待S(Sleeping):可中断睡眠D(Uninterruptible Sleep):不可中断睡眠T(Stopped):已停止Z(Zombie):僵尸进程僵尸进程是已完成但父进程尚未读取其退出状态的进程,需要父进程调用 wait() 或 waitpid() 来回收。孤儿进程是父进程已终止但仍在运行的进程,会被 init 进程(PID 1)收养。进程间通信(IPC)方式包括管道、消息队列、共享内存、信号量、套接字等。
阅读 0·2月17日 23:34