linux 100个问答(持续更新)

1.常用命令

2.rsync常用命令

rsync 是⼀个强⼤的⽂件同步和复制⼯具,⽤于在本地和远程系统之间同步⽂件和目录。以下是⼀些常用的 rsync 命令和选项:

  1. 基本的rsync rsync 命令格式

    bashCopy code
    rsync [options] source destination

● source :源文件或目录的路径。
● destination :目标文件或目录的路径。
2. 常用选项
● -a 或 --archive :归档模式,用于递归复制文件和目录,并保留文件属性(权限、所有
者等)。
● -v 或 --verbose :显示详细输出,显示正在复制的⽂件列表。
● -z 或 --compress :启用压缩传输,减少数据传输量。
● -r 或 --recursive :递归复制子目录和⽂件。
● -u 或 --update :仅复制源中更新或新增的文件到目标。
● -n 或 --dry-run :模拟运行,显示将要执行的操作,但不实际执行复制。
● -h 或 --human-readable :以人类可读的格式显示文件大小。
● -P 或 --progress :显示复制进度信息。
3.示例:

这些命令和选项只是 rsync 的⼀部分, rsync 还有许多其他功能和选项,可以根据具体需求
进⾏定制化。要查看更多详细信息和其他选项,可以使⽤ man rsync 命令查看 rsync 的⼿
册页。

3.tar 用法

tar 是⼀个⽤于打包和解压⽂件的命令⾏⼯具,通常在 Linux 和 Unix 系统上使⽤。它的名称来⾃于
"tape archive",最初是⽤于在磁带上创建归档备份的⼯具。以下是⼀些常⻅的 tar 命令⽤法示例:




这些是 tar 命令的⼀些常见用法。 tar 还有其他选项和用法,可以根据需要进⾏进⼀步定制化。要
查看更多详细信息和选项,可以使⽤ man tar 命令查看 tar 的⼿册页。

4.iostat用法

iostat 是⼀个⽤于监视系统磁盘输⼊/输出(I/O)性能的命令⾏⼯具。它通常包含在 sysstat软件包中,可以在⼤多数 Linux 发⾏版上找到。 iostat 提供了有关磁盘活动、磁盘性能和负载的详细信息。以下是 iostat 命令的⽤法示例:
基本⽤法
默认情况下, iostat 显示的是平均值,显示的是⾃系统启动以来的平均值。要查看当前的瞬时值,可以使⽤ -t 选项。

5.运维工作的日常内容描述

运维(运维⼯作)是指对计算机系统、服务器、⽹络和应⽤程序等进⾏监控、维护、管理和优化的⼀系列⼯作,旨在确保系统的稳定性、可靠性和⾼性能运⾏。以下是运维⼯作的日常描述:

  1. 监控系统状态
    每天开始⼯作时,运维⼈员通常会⾸先检查各种监控⼯具,以确保系统运⾏正常。这包括检查服
    务器的负载、内存、磁盘使⽤率以及⽹络流量等指标。
  2. 处理报警
    如果监控系统检测到任何异常或超过阈值的情况,运维⼈员会⽴即收到报警通知。他们需要快速
    响应并解决问题,以防⽌系统故障或性能下降。
  3. ⽇常维护
    运维⼈员会执⾏各种⽇常维护任务,如系统升级、补丁管理、备份和恢复操作。这有助于确保系
    统的安全性和稳定性。
  4. 故障排除
    如果⽤户或监控系统报告了问题,运维⼈员将进⾏故障排除。他们会分析⽇志⽂件、检查错误消
    息并追踪问题的根本原因,然后采取措施解决问题。
  5. 性能优化
    运维⼈员努⼒确保系统的⾼性能。他们可以调整系统参数、优化数据库查询、缓存设置和负载均
    衡配置,以提⾼系统的响应速度。
  6. 安全管理
    运维⼈员负责保护系统免受安全威胁。他们会定期更新防⽕墙规则、监控⽹络流量以检测异常⾏
    为,并实施访问控制策略来保护敏感数据。
  7. 容量规划
    随着业务的增⻓,运维⼈员需要监控系统资源的使⽤情况,并进⾏容量规划。他们会预测未来资
    源需求,确保系统可以满⾜业务需求。
  8. ⽂档和记录
    运维⼈员会记录系统配置、变更、故障排除过程和维护活动。这有助于建⽴历史记录和知识库,
    以便未来的引⽤和培训。
  9. 应急响应
    在系统遇到紧急问题时,运维⼈员需要迅速响应,并采取必要的措施以最⼩化停机时间。这可能
    包括修复硬件故障、恢复备份或实施紧急安全措施。
  10. 通信与合作
    运维人员需要与其他团队(如开发、安全和⽹络团队)进⾏协作,确保系统的整体健康和性能。
    总之,运维⼯作涵盖了⼴泛的任务和责任,旨在确保系统的稳定性、可⽤性和安全性。这需要不断学习和适应新技术,以满⾜不断变化的业务需求。

6.你之前运维做过哪些工作

●看监控中⼼,处理警告问题:⽐如磁盘分区超过80%、某台机器负载⻓时间偏⾼(超过20)、某 台nginx服务器偶尔出现502状态码。
●编写数据库备份脚本、监控脚本(web服务、系统状态)、系统安全检测脚本、日志收集脚本、 ⽇常代码发布的脚本。
●根据开发或者运营同事的需求,部署或者配置环境。
●故障的处理:⽹站访问慢或访问不了、服务器宕机、某个服务宕掉、ddos攻击、cc攻击、磁盘损 坏、存储损坏、磁盘空间撑满、mysql主从不同步、mysql查询慢等。
●关注⼀线资讯,学习新技能:开源中国、51cto、CSDN、博客园、www.yuchaoit.cn

7.谈谈你对运维工程师的理解以及对工作的认识

运维⼯程师在公司当中责任重⼤,需要保证时刻为公司及客户提供最快、最稳定、最安全的服务。在日常工作中,需要做好监控和事故预案,在平时,运维不仅仅要给研发、测试提供协助,还要⾃发性地去研究和分析服务器上的⼀些性能指标和日志,从而给研发同事提供⼀些数据和线索来优化业务。
运维⼯程师(Operations Engineer)是IT领域中不可或缺的⼀部分,他们在确保系统和服务的可靠性、稳定性和安全性⽅⾯扮演着关键⻆⾊。以下是我对运维⼯程师的理解以及对⼯作的认识:

  1. 系统稳定性的守护者:运维⼯程师的主要职责之⼀是确保整个系统在正常运⾏时保持⾼度稳定。他们通过监控、故障排除和预防措施,致⼒于降低系统中断和故障的⻛险。
  2. ⾃动化与脚本编写:现代运维⼯作越来越强调⾃动化。运维⼯程师编写脚本和⼯具,以⾃动执⾏⽇常任务、配置管理和问题响应,从⽽提⾼效率并减少⼈为错误。
  3. 安全性维护:运维⼯程师在系统和应⽤程序的安全性⽅⾯发挥关键作⽤。他们负责定期更新和维护安全补丁,监测潜在的安全漏洞,并采取措施防⽌未经授权的访问。
  4. 持续学习与适应:IT⾏业变化迅速,运维⼯程师需要不断学习新的技术和⼯具,以适应新的挑战。他们可能需要了解云计算、容器化、⾃动化部署等新兴技术。
  5. 团队协作:运维⼯程师通常需要与开发团队、⽹络团队和安全团队等其他部⻔紧密合作。有效的团队协作对于解决问题和实现项⽬⾄关重要。
  6. 突发事件处理:运维⼯程师必须迅速应对突发事件,如服务器宕机、数据丢失或安全攻击。他们需要冷静、有组织地处理这些问题,以最⼩化影响。
  7. ⼯作的变化性:运维⼯程师的⼯作往往具有⼀定的变化性,每天可能会⾯临不同的挑战。这使得⼯作充满活力和刺激。
    总的来说,运维⼯程师是确保IT基础设施正常运行和安全的关键⻆⾊。他们的⼯作需要技术深度、不断学习和适应新技术的能⼒,同时也需要具备协作和问题解决的技能。运维⼯程师的⼯作对于维持业务的连续性和用户满意度⾄关重要。

8.linux上进程有5中状态

你提到的Linux上进程的5种状态是经典的进程状态分类,它们对于理解进程在操作系统中的运⾏状态⾮常重要。这5种状态是:
1. 运行(Running :进程当前正在CPU上执⾏,或者在运⾏队列中等待执⾏。这是进程处于活跃状态的时候。
2. 中断(Interruptible Sleep :进程处于等待状态,通常在等待某些条件的形成或者等待信号的到来时会进⼊这个状态。这种状态是可被中断的,当条件满⾜或者收到信号时,进程会被唤醒。
3. 不可中断(Uninterruptible Sleep :与中断状态类似,但进程在这种状态下是不可被中断的,通常是在等待硬件资源或者⽂件系统操作完成时进⼊。这种状态下的进程只能等待,⽆法被强制中断。
4. 僵死(Zombie :僵⼫进程是已经终⽌但其⽗进程尚未调⽤ wait() 或 waitpid() 系统调⽤
来获取其退出状态的进程。这种状态下,进程的资源描述符还未完全释放,但进程已经不再执⾏。
5. 停止(Stopped :进程处于停⽌状态,通常是因为收到了 SIGSTOP 、 SIGSTP 、 SIGTI
N 、 SIGTOU 等信号⽽停⽌运⾏。这种状态下的进程不会消耗CPU时间,可以通过 SIGCONT 信
号来唤醒。
了解这些进程状态对于诊断和管理系统中的进程⾮常重要,可以帮助管理员追踪问题和优化系统性能。

9.描述Linux运行级别0-6的各自含义

在Linux系统中,运⾏级别是指不同的系统运⾏模式或状态,每个级别对应着⼀组特定的服务和功能。以下是常建的Linux运⾏级别0到6的含义:
1. 运行级别0 :关机状态。在这个级别下,系统会关闭所有服务,并安全地关闭电源,将计算机关闭。
2. 运行级别1 :单⽤户模式。也称为救援模式或维护模式。在这个级别下,系统启动到⼀个最⼩的环境,只有⼀个超级⽤户可以登录,⽤于系统故障修复和维护。
3. 运行级别2 :多⽤户模式,没有NFS(Network File System)。在这个级别下,系统启动到多⽤户模式,但不挂载⽹络⽂件系统(NFS)。
4. 运行级别3 :多⽤户模式。这是⼀个标准的多⽤户运⾏级别,系统启动后,所有正常服务都会运⾏,通常⽤于服务器环境。
5. 运行级别4 :保留级别。这个级别通常没有特殊⽤途,由系统管理员⾃⾏定义。
6. 运行级别5 :图形⽤户界⾯(GUI)模式。在这个级别下,系统启动到具有图形⽤户界⾯的多⽤户模式,通常是桌⾯Linux发⾏版的默认模式。
7. 运行级别6 :重新启动。在这个级别下,系统会重新启动,类似于运⾏级别0,但不会关闭源。

10.描述Linux系统从开机到登录界面的启动过程

Linux系统的启动过程可以⼤致分为以下几个阶段:
1. BIOS/UEFI 阶段:当计算机启动时,⾸先会执⾏计算机的基本输⼊/输出系统(BIOS)或统⼀的扩展固件接⼝(UEFI)。在这个阶段,计算机会执⾏⾃检(POST)、初始化硬件设备,并且尝试引导操作系统。BIOS会加载引导设备上的引导程序(通常是GRUB),而UEFI则会直接加载引导程序。
2. 引导加载程序(Boot Loader )阶段:引导加载程序是⼀个⼩型的程序,其主要任务是加载操作系统的内核(Kernel)。在Linux系统中,GRUB(GRand Unified Bootloader)是常⽤的引导加载程序。GRUB会读取其配置⽂件,确定要加载的内核和启动选项,然后将内核加载到内存中。
3. 内核初始化阶段:⼀旦内核被加载到内存中,它会开始初始化系统的核心功能,包括文件系统、进程管理、内存管理等。内核还会检测和初始化硬件设备,并设置系统的运行环境。这个阶段的输出通常会显示在屏幕上,包括内核的启动消息。
4. Init系统(SysV Init或systemd )阶段:在过去,Linux系统使⽤SysV Init作为初始化进程,现在许多系统已经转向了systemd。这个初始化进程负责启动系统中的各种服务和进程。它会根据运行级别(或目标)来启动不同的服务,例如网络服务、文件系统挂载、日志记录等。在这个阶段,也会启动登录管理器(如GDM、LightDM等)以显示登录界面。
5. 登录界⾯(Login Screen )阶段:一旦登录管理器启动,它会显示⼀个登录界面,等待用户输入用户名和密码。用户在此登录并进入桌面环境。

11.解释缓存雪崩、击穿、穿透

1. 缓存雪崩(Cache Avalanche
描述:缓存雪崩是指在某个时间点上,⼤量缓存中的数据同时失效或过期,导致所有相关请求都
需要从后端数据源重新加载,引发短时间内的⼤规模请求。这可能导致数据库或后端系统负载剧
增,甚至崩溃。
原因:通常由于缓存数据的失效时间相近或相同,或者缓存服务器重启等原因导致。
2. 缓存击穿(Cache Miss):
描述:缓存击穿是指某个请求需要访问缓存中不存在的数据,而这些数据同时被大量请求访问,
导致缓存无法起到应有的性能优化作用。
原因:通常由于缓存中没有请求的数据,而该数据又在数据库或后端数据源中存在,并且同时有
多个请求访问这个不存在的数据。
3. 缓存穿透(Cache Penetration):
描述:缓存穿透是指恶意请求或者⾮常频繁的请求访问不存在于缓存和后端数据源的数据,导致
这些请求都直接访问后端数据源,给系统带来不必要的负载。
原因:通常由于缓存中没有请求的数据,并且请求的数据本身不存在于后端数据源中,但是请求
频繁,导致多次无效访问。
解决这些问题的方法包括:
●对缓存数据的失效时间进行随机化,以避免缓存雪崩。
●使用互斥锁或分布式锁来避免缓存击穿,只允许⼀个请求加载数据。
●对于缓存穿透,可以使用布隆过滤器等方法在请求到达前快速检查数据是否有效。
总之,了解这些缓存问题并采取相应的预防措施对于维护系统的性能和稳定性非常重要。

12.说出系统里用于维护系统的命令

  1. 系统信息和状态
    uname :显示系统信息。
    top :实时查看系统状态和进程信息。
    free :显示内存使⽤情况。
    df :查看磁盘空间使⽤情况。
    du :查看⽂件或⽬录的磁盘使⽤情况。
  2. 进程管理
    ps :显示进程信息。
    kill :终⽌进程。
    pkill :根据进程名终⽌进程。
    pgrep :根据进程名查找进程ID。
    3. ⽇志查看:
    tail :查看⽂件尾部内容,常⽤于查看⽇志⽂件。
    cat :查看⽂件内容。
    grep :搜索⽂本⽂件。
    4. 用户和权限:
    useradd :添加⽤户。
    passwd :修改⽤户密码。
    userdel :删除⽤户。
    chown :更改⽂件或⽬录的所有者。
    chmod :更改⽂件或⽬录的权限。
  3. ⽹络管理
    ifconfig :显示和配置⽹络接⼝信息。
    netstat :查看⽹络状态。
    ping :测试⽹络连接。
    ssh :远程登录和管理服务器。
    iptables :配置防⽕墙规则。
  4. 软件包管理
    apt-get (Debian/Ubuntu)或 yum (Red Hat/CentOS):安装、更新和删除软件包。
    dpkg (Debian/Ubuntu)或 rpm (Red Hat/CentOS):管理软件包。
    wget :下载⽂件和资源。
    tar :解压和打包⽂件。
  5. 定时任务
    cron :⽤于执⾏定时任务,编辑任务可以使⽤ crontab 命令。
  6. ⽂件操作
    mv :移动或重命名⽂件。
    cp :复制⽂件。
    rm :删除⽂件。
    find :搜索⽂件和⽬录。
    ln :创建链接。
  7. 硬件信息
    lscpu :查看 CPU 信息。
    lshw :查看硬件信息。
    lsblk :查看块设备信息。
    lspci :查看 PCI 设备信息。
  8. 服务管理
    systemctl (systemd)或 service (SysV init):管理系统服务。
    systemctl start/stop/restart/service_name :启动/停止/重启服务。

13.shell脚本通常用在什么地方

Shell 脚本是⼀种⽤于⾃动化和批量执⾏任务的脚本语⾔,通常在以下地⽅得到⼴泛应⽤:

  1. 系统管理和自动化:管理员可以编写 Shell 脚本来⾃动执⾏常⻅的系统管理任务,如备份数据、清理日志、定期维护等。
  2. 服务器配置和部署:在服务器部署和配置过程中,Shell 脚本可以⽤来安装软件、配置环境变量、创建用户等。
  3. 常任务自动化:Shell 脚本可以⽤于定期执⾏任务,如⽣成报告、发送邮件通知、定时备份数据等。
    4. 监控和日志分析 :Shell 脚本可⽤于监控服务器性能、分析⽇志⽂件,以及触发警报和通知。
  4. 数据处理和转换:在数据处理领域,Shell 脚本可以⽤来处理⽂本⽂件、CSV ⽂件、⽇志⽂件等,提取所需信息或进⾏数据转换。
  5. 动化测试:开发⼈员可以编写 Shell 脚本来⾃动运⾏测试⽤例,检查应⽤程序的正确性。
  6. 户和权限管理:Shell 脚本可以⽤于创建、修改、删除⽤户账户,以及管理⽂件和⽬录的权限。
  7. 定时任务:Shell 脚本通常⽤于通过 crontab 或类似的⼯具执⾏定时任务,如每⽇备份数据库、定期清理临时⽂件等。
  8. 部署和配置⼯具:Shell 脚本在⼀些部署和配置⼯具中被⼴泛使⽤,如 Ansible、Chef 和 Puppet。
  9. 快速原型开发:Shell 脚本是⼀种快速原型开发⼯具,可⽤于测试概念、快速编写⼩⼯具和实⽤程序。
  10. ⽇常维护:在⽇常维护任务中,Shell 脚本可⽤于检查系统健康状况、查找和解决问题,以及执⾏紧急修复。
    总之,Shell 脚本是⼀个强⼤的⼯具,可以在各种环境中⽤于⾃动化、管理、分析和监控任务。它是系统管理员、开发⼈员和运维⼈员的重要⼯具之⼀,可以显著提⾼⼯作效率和系统可管理性。

14.nginx优化的地方有哪些

Nginx 是⼀款⾼性能的反向代理服务器和 Web 服务器,可以从多个⽅⾯进⾏优化,以提⾼性能、可靠性和安全性。以下是⼀些可以优化 Nginx 的方面:

  1. 配置优化
    精简配置文件:删除不必要的配置项,保持配置⽂件简洁。
    使⽤ include:将配置信息拆分成多个⽂件,便于管理。
    合理的 worker_processes 设置:根据服务器的 CPU 核⼼数量来设置⼯作进程数。
    调整 worker_connections:根据并发连接数来设置。
    启⽤ keepalive 连接:减少客户端和服务器之间的连接建⽴开销。
  2. 性能优化
    启⽤缓存:使⽤代理缓存或者 FastCGI 缓存来加速⻚⾯加载。
    启⽤ Gzip 压缩:压缩响应内容,减少带宽消耗。
    开启 HTTP/2:提供更⾼的性能和并发连接。
    启⽤ SSL 加速:使⽤ HTTPS 加速,可以使⽤缓存和更快的传输协议。
    负载均衡:使用Nginx 的负载均衡模块分发流量到多个后端服务器。
  3. 安全优化
    配置防⽕墙规则:限制对 Nginx 的访问,只允许特定 IP 或 IP 段。
    防止 DDoS 攻击:使⽤ rate limiting 模块来限制请求速率。
    启⽤安全头部:添加安全头部如X-Content-Type-Options、X-Frame-Options和Content-Security-Policy。
    定期更新 Nginx 版本:确保安全漏洞得到及时修复。
  4. 志和监控优化
    合理配置日志:控制⽇志级别和格式,避免过多的日志记录。
    使用监控⼯具:集成监控⼯具如Prometheus、Grafana或ELK Stack来实时监控 Nginx 性能。
  5. 静态资源优化
    使⽤ CDN:将静态资源如图⽚、CSS 和 JavaScript ⽂件放在 CDN 上,减轻服务器负载。
    配置浏览器缓存:通过响应头部控制浏览器缓存,减少资源加载时间。
  6. 容错和可用性优化
    使⽤备份服务器:配置备份服务器,以备主服务器故障时切换流量。
    配置健康检查:使⽤健康检查来监控后端服务器状态,⾃动排除不可⽤的服务器。
    使⽤错误页面:自定义友好的错误⻚⾯,提供更好的⽤户体验。7. 限制资源消耗
    限制请求大小:通过配置 client_max_body_size 限制请求体⼤⼩,避免恶意请求。
    限制请求速率:使⽤ limit_req 模块限制请求速率,防⽌过多的请求。
    这些是⼀些常见的 Nginx 优化方案,具体的优化策略应根据你的应⽤需求和服务器性能来选择和调整。在优化之前,建议先进行性能测试和监测,以了解瓶颈所在,然后有针对性地进行优化。

15.tomcat的优化点有哪些

Tomcat 是⼀个⼴泛使⽤的 Java Web 应⽤服务器,⽤于托管 Java Web 应⽤程序。为了获得更好的性能和可用性,以下是⼀些 Tomcat 优化点:

  1. 调整线程池参数
    调整连接器(Connector)的线程池参数,包括最⼤线程数、最⼩线程数和超时时间,以适应服务
    器的负载。
    使⽤ NIO 连接器:NIO 连接器相对于传统的连接器(如 HTTP/1.1 连接器)具有更好的性能,尤
    其是在⾼并发场景下。
  2. 启⽤连接器****Keep-Alive
    启⽤ HTTP Keep-Alive,允许多个 HTTP 请求共享⼀个 TCP 连接,减少连接的建⽴和关闭开销。
  3. 使⽤连接池
    对数据库连接、JMS 连接等资源使⽤连接池,减少资源的创建和销毁开销。
  4. 启⽤压缩
    启⽤压缩(如 Gzip)来减小传输数据的大小,提高页面加载速度。
  5. 静态资源缓存
    对静态资源(如图片、CSS 和 JavaScript 文件)启⽤浏览器缓存,减少不必要的请求。
  6. **启⽤**HTTPS
    如果需要安全性,考虑启⽤ HTTPS,但请确保正确配置 SSL/TLS,以减少性能损耗。
  7. 应⽤程序优化
    优化应⽤程序代码,减少不必要的数据库查询和计算。
    使⽤缓存机制,减少对后端服务的请求。
    使⽤⾼性能的第三方库和框架。
  8. 定期清理⽇志和临时⽂件
    定期清理 Tomcat 的⽇志和临时⽂件,以防⽌磁盘空间耗尽。
  9. 监控和性能测试
    安装监控⼯具,如 JConsole、VisualVM 或专业的应⽤性能监控⼯具,以实时监测 Tomcat 的性
    能。
    定期进行性能测试,以了解应⽤程序的性能瓶颈。
  10. 配置适当的JVM参数
    调整堆⼤⼩、垃圾回收策略和线程数等 JVM 参数,以适应应⽤程序的需求。
  11. 负载均衡
    如果有多个 Tomcat 实例,考虑使⽤负载均衡器来分发流量,提⾼可⽤性和性能。
  12. 容错和故障恢复
    配置 Tomcat 集群,以实现容错和故障恢复。
  13. 升级和优化Tomcat版本
    定期升级 Tomcat 到最新版本,以获取性能改进和安全修复。
  14. ⽹络优化
    确保服务器的⽹络连接稳定,避免⽹络延迟和丢包。
  15. 资源限制
    针对恶意请求或 DDoS 攻击,使⽤防⽕墙或反向代理服务器进⾏流量控制。
    这些优化点可以帮助提高Tomcat 服务器的性能和可⽤性,但需要根据具体的应⽤和环境来选择和调整。在进行优化之前,建议进⾏性能测试和监测,以了解性能瓶颈和改进的⽅向。