日积月累
1、解释Linux进程的5种状态及其含义
运行态(R)、就绪态(S)、睡眠态(D)、僵尸态(Z)、停止态(T)
2、如何统计当前系统活跃的TCP连接数?
netstat -nta | grep ':80' | wc -l或ss -nta | grep ':80'
3、 nohup 和 screen 的区别是什么?
nohup 忽略挂起信号,输出到 nohup.out
screen 支持多窗口会话管理
4、如何检测网络丢包率?请写出两种方法
ping -c 100 target.com 统计丢包率
mtr target.com 实时追踪路径损耗
5、 vmstat 分析系统I/O瓶颈,需说明关键指标
关注bi(块输入)、bo(块输出)和wa(等待I/O)值,高wa可能需优化磁盘或使用SSD
6、 systemd 服务单元文件的关键字段
[Unit](描述)、[Service](执行命令)、[Install](安装行为
7、 sed 和 awk 的区别及典型应用场景
sed用于流编辑(如替换文本) awk用于复杂文本处理(如数据提取)
1、什么是 inode?为什么它对 Linux 系统很重要?
1、Inode 是文件系统中的一个数据结构,存储文件的元数据(如权限、所有者、大小、修改时间等) 2、每个文件/目录对应一个 inode,系统通过 inode 管理文件资源
2、如果服务器突然变得非常慢,你会如何排查?
1、检查 CPU 使用率(top/htop) 2、检查内存使用(free -m/vmstat) 3、查看磁盘 I/O(iostat/iotop) 4、检查网络状况(ping/netstat) 5、分析日志(journalctl//var/log/)
3、如何防止 SSH 攻击?
1、修改默认端口 2、禁用 root 登录 3、使用密钥认证代替密码
4、如何重置忘记的 root 密码?
重启进入单用户模式,修改 /etc/shadow 文件中的密码字段
5、某网站突然无法访问,经排查是 DNS 解析失败,但 ping 域名正常。如何解决?
1、检查 /etc/resolv.conf 配置的 DNS 服务器是否可达 2、使用 nslookup 或 dig 测试 DNS 解析,确认是否 DNS 缓存污染(rndc flush)
6、如何配置 Linux 服务器作为路由器,实现 NAT 转发?
启用 IP 转发:echo 1 > /proc/sys/net/ip_forward
7、如何禁用 SSH 密码登录,仅允许密钥认证?
修改 /etc/ssh/sshd_config PasswordAuthentication no PubkeyAuthentication yes 重启 SSH 服务
8、解释 ssh-agent 的作用及如何配置免密登录
ssh-agent:缓存私钥,避免每次连接都输入密码。 配置步骤:启动代理、添加私钥、设置环境变量
1、shell中,= 和 有什么区别
= :用于为变量赋值:用于字符串比较
2、如何找到未知进程的执行程序文件路径
ls -l /proc/$PID/exe
3、描述四次挥手的过程
1. 一端主动关闭连接。向另一端发送FIN包。
2. 接收到FIN包的另一端回应一个ACK数据包。
3. 另一端发送一个FIN包。
4. 接收到FIN包的原发送方发送ACK对它进行确认。
4、出于安全考虑,如何实现让别人ping不通你的在线的服务 器
在服务器上修改内核参数:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
5、生产一主多从从库宕机,如何手工恢复?
处理方法:重做slave
1. 停止slave
2. 导入备份数据
3. 配置master.info信息4. 启动slave
5. 检查从库状态
6、什么是Nginx?
Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议
7、请问什么是C10K问题?
C10K问题是指无法同时处理大量客户端(10,000)的网络套接字
1、检查服务器是否正常工作
1. ping 服务器ip
2. ss -antul|grep 服务端口3. ps aux|grep 服务名
4. systemctl status 服务名
2、MySQL数据库版本不一致怎么解决?
1. 强制同步
2. 如果数据不一致,比较少的时候可以插入数据使一致3. 如果数据库比较小,可以将数据库导出并重新导入一次
3、如何让一个命令在后台运行?
# nohup your_command > /dev/null 2>&1 &
your_command 是要在后台运行的命令,&符号表示后台执行
执行上述命令后,会立即返回命令行提这里,示符,输出会被重定向到 nohup.out 文件中。如果不想生成这个文件加上 > /dev/null 2>&1
4、什么是SSH?它在Linux安全中的作用是什么?
SSH是一种安全、加密的远程访问协议,它在Linux安全中扮演了重要的角色。使用SSH,用户可以安全地登录远程主机并执行命令。
SSH可以防止未经授权的访问和数据泄露,并确保数据的完整性。
5、服务器有哪些组件?
CPU、内存、硬盘、主板、电源、⻛扇、RAID卡等
6、⽹线568B线序是什么?
橙⽩-橙-绿⽩-蓝-蓝⽩-绿-棕⽩-棕
7、⽹线568A线序是什么?
绿⽩-绿-橙⽩-蓝-蓝⽩-橙-棕⽩-棕
8、⼆层交换机和三层交换机有什么区别
⼆层交换机主要在数据链路层进⾏数据帧的转发,通过MAC地址表实现局域⽹内设备的快速通信;三层交换机除了具备⼆层交换功能外,还能在⽹络层进⾏路由选择,根据IP地址实现不同⼦⽹或⽹络之间的数据传输。⼆层交换机适⽤于简单的局域⽹,⽽三层交换机适合复杂⽹络环境,能处理跨⼦⽹或跨⽹络的数据传输。
1、Linux 网络丢包怎么排查?
1、检查硬件和物理连接:
检查网线、交换机、路由器等硬件设备是否正常工作。 检查网卡指示灯是否正常闪烁,以判断是否有数据传输。
2、查看系统日志:
使用dmesg或journalctl命令查看内核日志,检查是否有关于网络或网卡的错误信息。
3、检查网络接口状态:
使用ifconfig或ip addr命令查看网络接口的状态,确保没有错误包(errors)和丢弃包(dropped)。
4、使用ping命令测试连通性:
ping命令可以用来测试与目标主机之间的连通性。如果ping过程中出现丢包,可能是网络不稳定或路径中某个设备出现问题。
5、使用traceroute命令检查路由:
traceroute(Linux)或tracert(Windows)命令可以显示数据包从源主机到目标主机之间经过的路由节点。这有助于确定丢包发生在哪个节点。
6、检查网络配置:
检查/etc/network/interfaces(Debian/Ubuntu)或/etc/sysconfig/network-scripts/ifcfg-*(RHEL/CentOS)文件,确保网络配置正确。
7、检查驱动程序和内核模块:
使用lspci或lsusb命令查看网卡是否被正确识别。 使用modinfo命令检查网卡驱动程序的详细信息。 检查是否有驱动程序的更新或补丁。
8、使用抓包工具分析:
使用tcpdump或wireshark等抓包工具捕获网络数据包,分析丢包的原因。
9、监控网络流量:
使用iftop、nethogs或bmon等工具监控网络接口的实时流量,以确定是否存在异常流量导致丢包。
10、检查系统资源:
使用top、htop或vmstat等命令检查系统资源使用情况,如CPU、内存等,以确定是否因资源不足导致丢包。
2、僵尸进程是什么?
僵尸进程是指已经完成了执行(终止),但由于其父进程还没有调用wait()或waitpid()系统调用获取其终止状态信息,而仍然保留在进程表中的进程。它只占用进程表中的一个位置(进程ID等少量资源),不再占用其他系统资源(如内存、文件描述符等)。
3、LVM 怎么划分?
1、准备磁盘或分区
2、创建物理卷(PV)3、创建卷组(VG)4、创建逻辑卷(LV)5、格式化逻辑卷
6、挂载逻辑卷
4、请简要描述常见的MySQL数据库集群架构(如主从复制、主主复制)及其特点,分别适用于哪些场景?
1、主从复制:
一个主库负责写操作,多个从库从主库同步数据,可用于读写分离,分担读压力,适用于读多写少的场景
2、主主复制:
两个或多个主库都可以进行读写操作,数据相互同步,可实现高可用性和负载均衡,但对数据一致性要求较高,配置和管理相对复杂,适用于对写操作也有较高并发需求的场景
5、如何将一个MySQL集群中的数据迁移到另一个MySQL集群中?请描述具体的迁移步骤和可能遇到的问题及解决方法
1、备份源集群数据:可以使用mysqldump等工具对源集群的数据进行备份,确保数据的一致性和完整性
2、准备目标集群:在目标集群上创建好相应的数据库和表结构,确保与源集群的结构一致
3、恢复数据到目标集群:将备份的数据恢复到目标集群中,可以使用mysql命令行工具或其他数据导入工具4、验证数据一致性:在数据迁移完成后,对源集群和目标集群的数据进行一致性校验,确保数据的准确性
可能遇到的问题及解决方法:
数据丢失或不一致:在备份和恢复过程中,可能会出现数据丢失或不一致的情况
可以通过多次备份和校验来确保数据的完整性;在恢复数据时,注意检查是否有错误提示,并及时处理
6、在Linux系统中,如何在当前目录及其子目录下查找所有包含特定字符串(例如 "error")的文件,并将这些文件中的 "error" 替换为 "success"?
方法一
find. -type f -exec sed -i 's/error/success/g' {} \;
方法二
grep -rl "error" . | xargs sed -i 's/error/success/g'
-r(递归搜索)
-l(只显示文件名)
7、在Linux系统中,常见的系统日志文件有哪些?如果要查找某个时间段内与某个服务(如 nginx)相关的错误日志,应该如何操作?
常见的系统日志文件:
/var/log/messages:系统整体日志,记录各种系统事件和消息。
/var/log/syslog:系统日志,类似于 messages ,在一些系统中用于记录更详细的系统信息。
/var/log/nginx/access.log 和 /var/log/nginx/error.log :分别是 nginx 服务的访问日志和错误日志。
查找某个时间段内与 nginx 相关的错误日志(假设错误日志为 /var/log/nginx/error.log)
使用 grep 和 awk 结合:例如查找2024年10月1日10:00到12:00之间的错误日志,可以使用命令
awk '/^2024-10-01 10/,/^2024-10-01 12/' /var/log/nginx/error.log | grep "error"
1、主从复制(Master-Slave)
1、单层结构:主库直接向所有从库同步数据,所有从库均直连主库
2、适用场景:适用于中小规模读写分离场景,主库压力较小且从库数量较少(如10个以下)
3、主从复制的瓶颈:
主库需为每个从库单独维护一个Binlog Dump线程,当从库数量过多时,主库的CPU和网络资源消耗显著增加,可能导致复制延迟
2、级联复制(Master-Slave-Slaves)
1、多层结构:主库仅同步到一级从库(中间节点),再由中间节点将数据分发给二级从库,形成树状层级
2、适用场景:解决主库因从库过多导致的I/O和网络压力问题,适合大规模读扩展(如超过10个从库)
3、级联复制的优化:
中间节点(一级从库)承担数据分发角色,主库仅需连接少量中间节点,大幅降低主库压力。
中间节点需开启log_slave_updates参数,使接收的主库数据变更写入自身的Binlog,供下一级从库同步
3、无法通过SSH连接到远程服务器,如何解决?
1、检查本地网络连通性:
ping remote_host # 确认IP可达
traceroute remote_host # 查看路由路径
2、检查目标服务器SSH服务状态:
nmap -p 22 remote_host # 确认22端口开放systemctl status sshd # 确认服务运行
3、检查防火墙规则:
iptables -L -n # 查看iptables是否阻止SSH端口
4、文件系统损坏导致无法读写文件
操作文件时提示 "Input/output error"
1、卸载文件系统并修复:
umount /dev/sda1
fsck -y /dev/sda1 # 自动修复错误
2、若无法卸载(如根分区),重启进入救援模式执行修复
5、du和df统计不一致原因
1、文件被删除但仍有进程占用(如日志文件)
2、文件逻辑大小 > 实际磁盘占用(如虚拟磁盘文件)
3、文件系统日志(如ext4的Journal)、inode表等元数据占用空间(`df`统计,`du`忽略)4、某目录挂载了新文件系统(如NFS),du递归统计,df仅统计当前挂载点
6、lsof命令使用场景
1、 定位占用文件的进程
lsof /path/to/file # 查看谁在访问指定文件
2、查找已删除但未释放的文件
lsof +L1 # 列出所有已删除但被进程占用的文件
3、查看端口占用情况
lsof -i :8080 # 查看占用8080端口的进程
lsof -i TCP:22 # 查看所有使用TCP 22端口的连接
4、分析用户或进程活动
lsof -u username # 列出某用户打开的所有文件lsof -p PID # 查看指定进程打开的文件
5、排查设备或挂载点占用
lsof /dev/sda1 # 检查谁在使用磁盘设备lsof /mnt/disk # 查看挂载点的文件访问
6、网络连接分析
bash
lsof -i # 显示所有网络连接(IPv4/IPv6)
7、Linux中的进程间通信的方式及其使用场景
1、新建服务文件
vim /etc/systemd/system/myapp.service
2、内容模板•(关键字段):
[Unit]
Description=My Custom Application # 服务描述
After=network.target # 依赖的其他服务
[Service]
Type=simple # 类型:simple(默认)、forking(后台进程)User=myuser # 运行用户(可选)
ExecStart=/usr/bin/myapp start # 启动命令(必须使用绝对路径)
Restart=on-failure # 失败时自动重启
Environment="KEY=value" # 环境变量(可选)
[Install]
WantedBy=multi-user.target # 开机自启目标
1、Linux系统启动流程
BIOS/UEFI自检 → 加载引导程序(GRUB) → 加载内核(vmlinuz)和initramfs → systemd初始化 → 启动用户级服务
2、如何快速查找并删除/logs目录下超过100MB的日志文件?
find /logs -type f -size +100M -exec rm -f {} \;
# 或先备份再删除
find /logs -type f -size +100M -exec mv {} /backup/ \;
3、服务器无法开机,如何逐步排查?
1、检查电源和硬件连接
2、进入GRUB引导菜单修复启动项
3、使用Live CD检查文件系统(fsck)
4、查看日志:/var/log/boot.log和dmesg38
4、新安装MySQL后,如何提升安全性?
执行mysql_secure_installation脚本,包括:1、删除匿名用户
2、禁止root远程登录
3、删除测试数据库
4、重载权限表
5、如何重置MySQL root密码?
1、停止MySQL服务,启动时跳过权限验证:mysqld_safe
2、登录后更新密码:
UPDATE mysql.user SET authentication_string=PASSWORD('new_pass') WHERE User='root';
FLUSH PRIVILEGES;
3、重启服务
6、如何实时监控TCP 80端口的网络流量?
tcpdump -i eth0 tcp port 80 -nn -vv
7、MySQL主从复制工作原理
MySQL主从复制的实现原理基于二进制日志(binlog),主库(Master)将数据变更记录到binlog
中,从库(Slave)通过I/O线程拉取这些日志并写入本地中继日志(Relay Log),再由SQL线程解析并执行日志中的操作,从而实现数据同步。具体流程如下:
1、主库写入日志
主库在处理写操作(如INSERT/UPDATE/DELETE)时,将操作记录到binlog中,并维护日志的索引和位置点
2、从库请求与传输
从库的I/O线程连接到主库,请求增量binlog。主库的Binlog Dump线程响应请求,发送binlog事件到从库
3、日志中继与执行
从库将接收的binlog写入中继日志(Relay Log),SQL线程读取中继日志,按顺序执行其中的SQL操作,使从库数据与主库一致
4、状态同步
从库通过master.info和relay-log.info文件记录同步的日志文件名和位置点,确保下次连接时能继续同步
1、MySQL安装方式介绍
1、源代码:编译安装
2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用3、程序包管理器管理的程序包:yum安装,apt安装
2、数据库安全初始化脚本:
mysql_secure_installation功能有哪些
1、设置数据库管理员root口令 2、禁止root远程登录
3、删除anonymous用户帐号
4、删除test数据库
3、MySQL客户端程序有哪些
1、mysql:交互式的CLI工具,连接数据库
2、mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中
3、mysqladmin:基于mysql协议管理mysqld
4、mysqlimport:数据导入工具
4、MySQL服务端程序有哪些
1、mysqld:数据库MySQL主进程
2、mysqld_safe:数据库救援模式
3、mysqld_multi 多实例 ,示例:mysqld_multi
5、MySQL多实例的作用
1、有效的利用服务器资源
当单个服务器资源有剩余的时候,可以充分利用剩余的资源提供更多的服务,且可以实现资源的逻辑隔离。
2、节约服务器资源
当公司资金紧张,但是数据库又需要各自尽量独立提供服务,而且,需要主从复制等多实例就再好不过
了。但是 mysql多实例也有弊端,当某个数据库实例并发很高或者SQL满查询时,会存在资源相互抢占的问题。
6、MySQL的多实例特点
这些Mysql共用一套MySQL的安装程序,使用不用的配置文件(my.cnf)启动程序和数据文件。在提供服务时,多实例Mysql在逻辑上看起来是各自独立的,它们根据配置文件的对应设定值,获得服务器响应数量的硬件资源
ext4和xfs文件系统的区别,并分别
7、请说明Linux中列举它们的适用场景
ext4:
1、传统默认文件系统,稳定成熟
2、支持事务日志(journaling),数据恢复能力强3、适用场景:中小型服务器、桌面环境
xfs:
1、支持更大的单文件和分区(最大支持1EB文件/16EB分区)
2、基于日志的写时复制(COW),适合大文件和高吞吐场景
3、适用场景:数据库服务器、虚拟化存储(如VMware)、大型日志文件
8、如何快速定位消耗CPU最高的进程?
按CPU占用排序:# top -o %CPU
图形化交互界面,支持批量操作:# htop
按CPU排序前10个进程:
# ps -eo pid,ppid,cmd,%cpu,%mem
PID PPID CMD %CPU %MEM 991 1 /usr/libexec/platform-pytho 0.2 1.4 888 1 /usr/bin/vmtoolsd 0.1 0.6 1 0 /usr/lib/systemd/systemd
1、如何实时查看⽹卡流量为多少?如何查看历史⽹卡流量?
1、安装sysstat包,获得sar命令# yum install -y sysstat
2、查看⽹卡流量,默认10分钟更新⼀次# sar -n DEV
3、⼀秒显示⼀次,⼀共显示10次# sar -n DEV 1 10
4、查看指定⽇期的流量⽇志
# sar -n DEV -f /var/log/sa/sa22
2、如何备份某个⽤户的任务计划?
将/var/spool/cron/⽬录下指定⽤户的任务计划拷⻉到备份⽬录cron_bak/下即可:# cp /var/spool/cron/rachy /tmp/bak/cron_bak/
3、如何可以把系统中不⽤的服务关掉?
(1)使⽤可视化⼯具:ntsysv
(2)使⽤命令:chkconfig servicename off
4、某个账号登陆linux后,系统会在哪些⽇志⽂件中记录相关信息?
⽤户身份验证过程记录在 /var/log/secure中登录成功的信息记录在 /var/log/wtmp
5、分别使⽤xargs和exec实现这样的需求,把当前⽬录下所 有后缀名为.txt的⽂件的权限 修改为777
1、使⽤xargs
# find ./ -type f -name "*.txt" |xargs chmod 777
2、使⽤exec
# find ./ -type f -name "*.txt" -exec chmod 777 {} \;
6、有⼀天你突然发现公司⽹站访问速度变的很慢很慢,你该怎么办呢?
可以从系统负载和⽹卡流量⽅⾯⼊⼿分析。分析系统负载,使⽤w命令或者uptime命令查看系统负载,如果负载很⾼,则使⽤top命令查看CPU,MEM等占⽤情况,要么是CPU繁忙,要么是内存不够,如果这⼆者都正常,再去使⽤sar命令分析⽹卡流量,分析是不是遭到了攻击。⼀旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死⼀些进程,或者禁⽌⼀些访问等。
7、给您⼀台最⼩化安装的linux机器,如何进⾏基础优化?
(1)更新yum官⽅源
(2)关闭不需要的服务
(3)关闭不需要的TTY
(4)对TCP/IP⽹络参数进⾏调整。例如:优化Linux下的内核TCP参数以提⾼系统性能、禁ping(5)设置时间同步
(6)优化最⼤⽂件数限制
(7)关闭SELINUX
(8)修改SSH登录配置
(9)清理登陆的时候显示的系统及内核版本
(10)删除不必要的系统⽤户和群组
(11)关闭重启ctl-alt-delete组合键
(12)设置⼀些全局变量
(13)设置history历史记录
(14)最⼩化安装后启动⽹卡
(15)添加普通⽤户,设置sudo权限
(16)禁⽌root远程⽤户登录
(17)sed修改远程端⼝
(18)防⽕墙iptables配置。
(19)修改默认DNS
(20)安装必要软件,更新yum源 [epel源]
(21)更新内核和软件到最新版本
(22)去除上次登录的信息
8、如何保存当前磁盘分区的分区表?
dd 命令是以个强⼤的命令,在复制的同时进⾏转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512
1、实现实时同步的方法
- inotify + rsync 方式实现数据同步
- sersync :在 inotify 软件基础上进行开发的,功能更加强大
2、实现实时同步的工作原理
- 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化- 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上
3、inotify+rsync使用方式
- inotify 对同步数据目录信息的监控- rsync 完成对数据的同步
- 利用脚本进行结合
4、使用ssh来远程连接主机口令验证的过程
1、客户端发送连接请求
2、服务器收到请求后,服务器发送一个回执,这个回执中包含服务器端的公钥3、客户端使用公钥将密码加密,并发送到服务器
4、服务器使用密钥解密并验证信息是否正确,如果正确则建立正常的连接
5、通过密钥认证实现sshd认证的过程
1、首先需要在客户端端上创建一对密钥,并将公钥放在需要访问的服务器上
2、当客户端需要连接服务器时,客户端的软件会向服务端发起登录请求,请求使用密钥对中的公钥来进行安全验证
3、服务器收到请求之后,会在该用户的家目录下查询公钥文件,拿客户端发送过来的公钥和自己家目录下的公钥进行对比
4、如果两个公钥一致,服务器就使用公钥加密"challenge",并把它发送给客户端软件,客户端软件收到加密内容之后,使用本地的私钥进行解密,并把解密的结果发送给服务端,服务端验证成功后,允许登录。
1、访问一个网站的流程
用户输入网站按回车, 查找本地缓存,如果有就打开页面,如果没有,利用DNS做域名解析,递归查询,一级一级的向上提交查询请求,知道查询到为止
HOSTS表本地DNS 上层DNS(包括根DNS)
经过了DNS解析,知道了网站的IP地址,然后建立tcp三次握手; 建立请求后,发送请求报文,默认请求的是index.html
传送完毕,断开连接
2、Linux 开机启动过程?
1. 主机加电⾃检,加载 BIOS 硬件信息
2. 读取 MBR 的引导⽂件(GRUB、LILO)
3. 引导 Linux 内核
4. 运⾏第⼀个进程 init (进程号永远为 1 )5. 进⼊相应的运⾏级别
6. 运⾏终端,输⼊⽤户名和密码
3、如何检查某项服务是否在运⾏?
systemctl status service_name
4、什么是initrd镜像?
初始 RAM 磁盘 (initrd) 是在真正的根⽂件系统可⽤之前安装的初始根⽂件系统。initrd 绑定到内核并作为内核引导过程的⼀部分加载。然后内核将这个 initrd 挂载为两阶段引导过程的⼀部分,以加载模块以使真实⽂件系统可⽤并获得真实的根⽂件系统。因此 initrd 映像在linux 启动过程中起着⾄关重要的作⽤。
5、解释suid、sgid和sticky bit这⼏个术语?
除了 Linux 中的基本⽂件权限外,可执⾏⽂件和⽬录还有⼀些特殊权限。
SUID:如果设置了setuid位,当⽤户执⾏⽂件时,进程将拥有与正在执⾏的⽂件的所有者相同的权限。SGID:同上,但在执⾏时继承⽂件的组权限,⽽不是⽤户权限。类似地,当您在⽬录中创建⽂件时,它将继承⽬录的组所有权。
粘滞位:粘滞位⽤于 linux 中的可执⾏⽂件,以便在初始执⾏后它们会在内存中保留更⻓时间,希望在不久的将来会需要它们。但主要是在⽂件夹上,这意味着在启⽤ Stickybit 的⽂件夹中创建的⽂件或⽂件夹只能由所有者删除。粘性位的⼀个很好的实现是 /tmp ,每个⽤户都有写权限,但只有拥有⽂件的⽤户才能删除它们。
6、Linux系统软件安装和卸载的常⻅⽅法
A. rpm包卸载:rpm -e XXX.rpm (如果想忽略依赖,可加上–nodeps)
B. yumremove xxx.rpm这种⽅法⾮常不建议使⽤,卸载过程会将待卸载的软件包所依赖的软件包⼀并卸载掉,很容易造成系统缺少某些包⽽崩溃等问题
C. 源码包卸载:cd命令进⼊编译后的软件⽬录,即安装时的⽬录,执⾏makeuninstall命令即可;或者直接删除安装⽬录
7、什么叫CDN?
即内容分发⽹络,其⽬的是通过在现有的Internet中增加⼀层新的⽹络架构,将⽹站的内容发布到最接近⽤户的⽹络边缘,使⽤户可就近取得所需的内容,提⾼⽤户访问⽹站的速度。
1、对于linux主机的cpu负载使用,什么情况下user的比例升高,什么情况下system的比例升高,请联系实际举例。
使用top命令可以查看cpu的负载使用
-us:用户进程消耗的CPU时间百分比 us的值比较高时,说明用户进程消耗的CPU资源多,如果长期超
50%的使用,那么我们就该考虑优化程序算法或者进行加速(比如PHP/PERL)
-sy:内核进程消耗的CPU时间百分比(sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表
现,我们应该检查原因)
-wa:IO等待消耗的CPU时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量随机访问造成,也有可能磁盘出现瓶颈(块操作)
-id:CPU处于空闲状态时间百分比,如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺
2、在不umount的情况下,如何重新设置mount的参数。
mount -o remount,rw /
3、ps aux 中的 VSZ 代表什么意思, RSS 代表什么意思
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间
4、并行与并发
串行:一次只能取得一个任务并执行这一个任务
并行:可以同时通过多进程/多线程的方式取得多个任务,并以多进程或多线程的方式同时执行这些任务并发:并发是一种现象:同时运行多个程序或多个任务需要被处理的现象;这些任务可能是并行执行的,也可能是串行执行的,和CPU核心数无关,是操作系统进程调度和CPU上下文切换达到的结果
5、对称加密与非对称加密
对称密钥加密,又称私钥加密,即信息的发送方和接收方用同一个密钥去加密和解密数据。
它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难且较为不安全。进行一对一的双向保密通信。
常见的对称加密算法:DES,AES等。
非对称密钥加密,又称公钥加密,它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。
从功能角度而言非对称加密比对称加密功能强大且较为安全,但加密和解密速度却比对称密钥加密慢得多。
多对一的单向保密通信。
最常用的非对称加密算法:RSA
6、添加路由表并查看
route add -net 203.208.39.104 netmask 255.255.255.255 gw 192.168.1.1netstat –r
7、让作业运行于后台(剥离终端)
nohup COMMAND &>/dev/null &screen;COMMAND
tmux;COMMAND
公司的内⽹某台 linux 服务器流量莫名其妙的剧增,⽤iftop 查看有连接外⽹的情况,针对这种情况⼀般重点查看netstat 连接的外⽹ ip 和端⼝。
⽤ lsof -p pid 可以查看到具体是那些进程,哪些⽂件经查勘发现/root 下有相关的配置conf.n hhe 两个可疑⽂件,rm -rf 后不到⼀分钟就⾃动⽣成了,由此推断是某个父进程产⽣的这些⽂件。所以找到父进程就是找到罪魁祸⾸
查杀病毒最好断掉外⽹访问,还好是内⽹服务器,可以通过内⽹访问,断了内⽹,病毒就失去外联的能⼒,杀掉它就容易的多,怎么找到呢,找了半天也没有看到蛛丝⻢迹,没办法只有 ps axu ⼀个个排查,⽅法是查看可以的⽤户和和系统相似⽽⼜不是的冒牌货,果然,看到了如下进程可疑,看不到图⽚就是/usr/bin/.sshd,于是我杀掉所有.sshd 相关的进程,然后直接删掉.sshd 这个可执⾏⽂件,然后才删掉了⽂章开头提到的⾃动复活的⽂件
总结⼀下,遇到这种问题,如果不是太严重,尽量不要重装系统
⼀般就是先断外⽹,然后利⽤iftop,ps,netstat,chattr,lsof,pstree 这些⼯具顺藤摸⽠⼀般都能找到元凶。
5、rsync 同步命令中,下⾯两种⽅式有什么不同呢?
(1) rsync -av /dira/ ip:/dirb/
(2) rsync -av /dira/ ip::dirb
其中(1)是通过ssh⽅式同步的,(2)后者是通过rsync服务的⽅式同步的
6、某个账号登陆linux后,系统会在哪些⽇志⽂件中记录相关信息?
⽤户身份验证过程记录在/var/log/secure中,登录成功的信息记录在/var/log/wtmp
7、有⼀个脚本运⾏时间可能超过2天,如何做才能使其不间断 的运⾏,⽽且还可以随时观察脚本运⾏时的输出信息?
使⽤screen或者tmux⼯具实现会话与窗口的"解绑"
8、⾃定义解析域名的时候,我们可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个域名对应多个ip?
编辑 /etc/hosts ⽂件,可以⼀个ip对应多个域名,不可以⼀个域名对多个ip
9、在Linux下如何指定dns服务器,来解析某个域名?
使⽤dig命令,例如使⽤⾕歌DNS解析百度dig @8.8.8.8 www.baidu.com
10、有⼀天你突然发现公司⽹站访问速度变的很慢很慢,你该 怎么办呢?
可以从系统负载和⽹卡流量⽅⾯⼊⼿分析。分析系统负载,使⽤w命令或者uptime命令查看系统负载,如果负载很⾼,则使⽤top命令查看CPU,MEM等占⽤情况,要么是CPU繁忙,要么是内存不够,如果这⼆者都正常,再去使⽤sar命令分析⽹卡流量,分析是不是遭到了攻击。⼀旦分析出问题的原因,采取对应的措施解决,如决定要不
要杀死⼀些进程,或者禁⽌⼀些访问等。
1. top 页面中怎么排序能快速看到进程使用 cpu
默认就是 cpu 使用率排序P 按照 cpu 使用率排序
2.怎么知道运行的进程和端口
ss -lntup →端口对应的进程 pid,然后通过 ps aux 根据 pid 过滤出对应的进程
3. Raid 的种类及区别
4. cpu、内存、网络流量等查询命令
cpu: lscpu,top,ps aux
内存: free,top,ps ,iotop(swap)流量: iftop,nstat,mtr
连接数: ss -ant 并发
5. 查看进程打开文件
lsof 显示所有被打开的文件
6. 请问PV、UV、VV,CV是什么?
播放类指标:
VV(Video View,播放数): 是指在一个统计周期内,视频被打开的次数之和
CV(Content Views,内容播放数): 是指在一个统计周期内,视频被打开,且视频正片内容(除广告)被成功播放的次数之和
浏览类指:
PV(Page View,浏览量): 是指在一个统计周期内,浏览页面的数之和
UV(Unique Visitor,访客数): 是指在一个统计周期内,访问网站的人数之和
7. 服务器监控体系
8. 请求流程
1. CDN相关术语概念
计费方式: 按流量 带宽1天10MB峰值 流量20GB6元/天 4.8元/天
源站: 就是 "源头的站点",也就是CDN上面的资源,最初来自哪里。
回源: 指CDN节点向源站抓取数据以返回给网民的过程称为回源。
使用 CDN 和不使用 CDN 的两种网络结构:
使用会向本地节点访问,在向源站访问
不使用则会直接向源站访问
2. nas /oss
3. 故障案例
4. java程序 故障 导致大量占用swap 而不占用物理内存
# echo 'vm.swappiness=10' 控制系统是否优先使用swap
# 数字越大越优先使用swap
# 越小越优先使用物理内存
5. 如何测试Linux系统到另一个远程主机的连通性(例如检查端口是否开放)?
使用
telnet命令。例如要测试到example.com主机的80端口是否开放,可以执行telnet
example.com 80。如果连接成功,会进入一个空白屏幕;如果连接失败,会显示连接被拒绝或超时等信息
更推荐使用
nc(Netcat)命令,它更加灵活。例如描端口,不发送数据,-v表示显示详细信息
nc -zv example.com 80,
-z表示只扫
nmap example.com可以扫描目标主机开放的端口
还可以使用情况
nmap工具进行更全面的端口扫描,如
6. 如何在Linux系统中设置DNS服务器地址?
对于基于Red Hat的系统,编辑
/etc/resolv.conf文件,添加或修改DNS服务器为8.8.8.8和8.8.4.4,则在文件中添加:
nameserver行。例如,要设置
nameserver 8.8.8.8nameserver 8.8.4.4
7. 如果Linux系统中的网络连接突然中断,你会按照怎样的步骤进行排查? 首先检查网络接口状态:
使用
ifconfig或ip addr show查看网络接口是否正常启动,是否有错误包(如errors或TX errors)
RX
然后检查路由表:
使用
route - n(在较旧系统中)或者目标网络的路由
ip route show查看路由是否正确配置,是否存在到
再检查DNS解析:
使用
nslookup或最后查看系统日志:
dig命令尝试解析目标主机的域名,看是否能正确解析
在Red Hat系中查看
/var/log/messages或/var/log/syslog(在一些较新系统中),在Debian系中查看/var/log/syslog,查找与网络相关的错误信息
8. 如何排查Linux系统中某个端口被占用的问题?
使用
netstat -tlnp命令。其中-t表示TCP协议,-l表示监听状态,-n表示以数字形式显示地址和端口,-p表示显示进程ID和名称。它会列出所有正在监听的TCP端口以及对应的进程信息
也可以使用
netstat的替代命令,在一些新系统中性能更好
ss -tlnp命令,它是
如果发现端口被占用且需要释放,可以根据进程ID使用进程不是关键进程
kill命令杀死相应进程,但要谨慎操作,确保该
1. 如何使用
grep命令查找包含特定字符串的行,并忽略大小写?
grep -i "特定字符串" 文件名
-i 选项用于忽略大小写。
2. 统计当前目录下所有
.txt文件的行数总和。
total=0
for file in *.txt; do
if [ -f "$file" ]; then
lines=$(wc -l < "$file") total=$((total + lines)) fi
done
echo "总行数: $total"
3. 使用
awk命令提取文件中第二列和第四列,并以逗号分隔输出。awk '{print $2","$4}' 文件名
4. 如何使用
sed命令将文件中的所有foo替换为
sed -i.bak 's/foo/bar/g' 文件名
-i.bak 表示直接修改文件并创建一个.bak备份文件。
bar,并备份原文件?
5. 查找并列出当前目录及其子目录中所有大于1MB的文件。
find . -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
6. 使用
sort和uniq命令统计文件中每个单词出现的次数。cat 文件名 | tr ' ' '\n' | sort | uniq -c | sort -nr
tr ' ' '\n' 将空格转换为换行符,便于uniq -c 统计每个单词的出现次数。
sort处理。
1. 如何使用
grep命令查找包含特定字符串的行,并忽略大小写?
grep -i "特定字符串" 文件名
-i 选项用于忽略大小写。
2. 统计当前目录下所有
.txt文件的行数总和。
total=0
for file in *.txt; do
if [ -f "$file" ]; then
lines=$(wc -l < "$file") total=$((total + lines)) fi
done
echo "总行数: $total"
3. 使用
awk命令提取文件中第二列和第四列,并以逗号分隔输出。awk '{print $2","$4}' 文件名
4. 如何使用
sed命令将文件中的所有foo替换为
sed -i.bak 's/foo/bar/g' 文件名
-i.bak 表示直接修改文件并创建一个.bak备份文件。
bar,并备份原文件?
5. 查找并列出当前目录及其子目录中所有大于1MB的文件。
find . -type f -size +1M -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'
6. 使用
sort和uniq命令统计文件中每个单词出现的次数。cat 文件名 | tr ' ' '\n' | sort | uniq -c | sort -nr
tr ' ' '\n' 将空格转换为换行符,便于uniq -c 统计每个单词的出现次数。
sort处理。
uniq -c命令统计文件中每个用户登录次数的前
10. 使用5名。
tr、
sort和
cat logfile.log | tr ' ' '\n' | grep '^user:' | cut -d':' -f2 | sort | uniq -c | sort -nr | head -5
tr ' ' '\n' 将空格转换为换行符。
grep '^user:' 筛选出以"user:"开头的行。
cut -d':' -f2 提取用户名。
sort | uniq -c 统计每个用户的出现次数。
sort -nr | head -5 按数字逆序排序并显示前5名。
1、Linux 系统缺省的运行级别?
关机。
单机⽤户模式。
字符界⾯的多⽤户模式(不⽀持⽹络)。字符界⾯的多⽤户模式。
未分配使⽤。
图形界⾯的多⽤户模式。
重启。
2、Linux 有哪些系统日志文件?
⽐较重要的是 /var/log/messages 日志⽂件。
该日志⽂件是许多进程⽇志⽂件的汇总,从该⽂件可以看出任何入侵企图或成功的⼊侵。
3、什么是交换空间?
交换空间是 Linux 使用的⼀定空间,⽤于临时保存⼀些并发运行的程序。当 RAM 没有足够的内存来容纳正在执行的所有程序时,就会发⽣这种情况。
4、如何将⼆进制⽂件添加到 $PATH 变量中?
$ export PATH=$PATH:/path/to/the/binary/file
5、如何停⽌Linux中正在运⾏的进程?
要停⽌正在运⾏的进程,请使用 kill 命令,后跟进程的 PID。例如,要停⽌ PID 为 3836 的进程,请运行命令
kill 3836
6、简述raid0 raid1 raid5 三种⼯作模式的⼯作原理及特 点
RAID,可以把硬盘整合成⼀个⼤磁盘,还可以在⼤磁盘上再分区,放数据还有⼀个⼤功能,多块盘放在⼀起可以有冗余(备份)
RAID整合⽅式有很多,常⽤的:0 1 5 10
RAID 0,可以是⼀块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,⼀块坏了数据就全没有了
RAID 1,只能2块盘,盘的⼤⼩可以不⼀样,以⼩的为准
10G+10G只有10G,另⼀个做备份。它有100%的冗余,缺点:浪费资源,成本⾼
RAID 5,3块盘,容量计算10*(n-1),损失⼀块盘特点,读写性能⼀般,读还好⼀点,写不好
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0性能从好到坏:RAID0 RAID10 RAID5 RAID1成本从低到⾼:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库RAID5\RAID0(为了维护成本,RAID10)WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应⽤服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别
7、如何看当前Linux系统有⼏颗物理CPU和每颗CPU的核数?
查看物理cup:
cat /proc/cpuinfo|grep -c 'physical id'
查看每颗cup核数:
cat /proc/cpuinfo|grep -c ‘processor’
8、在Linux系统下如何按照下⾯要求抓包:只过滤出访问http服务的,⽬标ip为192.168.0.111,⼀共抓1000个包,并且保存到1.cap⽂件中?
tcpdump -nn -s0 host 192.168.0.111 and port 80 -c 1000 -w 1.cap
1、& 和 有什么区别
& - 希望脚本在后台运行的时候使用它
当前一个脚本成功完成才执行后面的命令/脚本的时候使用它
2、什么是进程
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
3、 如何查询系统负载
使用uptime命令
其中系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)
4、四次挥手
1. 一端主动关闭连接。向另一端发送FIN包。
2. 接收到FIN包的另一端回应一个ACK数据包。
3. 另一端发送一个FIN包。
4. 接收到FIN包的原发送方发送ACK对它进行确认。
5、什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不经常变化的网络。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动 学习 网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。
6、常见HTTP状态码
200请求已成功,请求所希望的响应头或数据体将随此响应返回301被请求的资源已永久移动到新位置
302请求的资源临时从不同的 URI响应请求
401当前请求需要用户验证
403服务器已经理解请求,但是拒绝执行
404请求的网页不存在
500服务器内部错误
503服务器暂时不可用
7、简述网络文件系统NFS,并说明其作用
网络文件系统是应用层的一种应用服务,它主要应用于Linux 和Linux 系统、Linux 和Unix系统之间的文件或目录的共享。对于用户而言可以通过 NFS 方便的访问远地的文件系统,使之成为本地文件系统的一部分。采用NFS 之后省去了登录的过程,方便了用户访问系统资源。
8、ftp服务有几种模式,有什么区别?
分为主动模式与被动模式。主动为服务器发起21端口去访问客户端的随机端口,并通过服 务器的20端口来传数据•被动模式正好相反,由客户端发起连接服务器的21端口,然后服 务器随机开启一个数据连接端口来传数据。
1、Shell 脚本中 continue 命令的作用
continue 命令不同于 break 命令,它只跳出当前循环的迭代,而不是整个循环
2、如何将标准输出和错误输出同时重定向到同一位置
方法一:2>&1 (如方法二:&> (如
3、集线器与交换机的比较
1. 交换机属于数据链路层设备,而集线器属于物理层设备
2. 集线器在转发帧时,不对传输介质进行检测,交换机在转发帧之前必须执行 CSMA/CD 算法。若在发送过程中出现碰撞,就必须停止发送和进行退避。所以交换机能隔离冲突,而集线器却只能增加冲突
3. 交换机的每个端口可提供专用的带宽,而集线器的所有端口只能共享带宽4. 集线器只能实现半双工传送,而交换机可支持全双工传送
5. 集线器和交换机都无法隔离广播域
4、如何查看网络连接状况?
[root@centos7 ~ ]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.147.130:22 192.168.147.1:23893 ESTABLISHED
tcp 0 0
udp 0 0 0.0.0.0:68 0.0.0.0:*
……
5、任务计划格式中,前面5个数字分表表示什么含义
依次表示:分、时、日、月、周
6、有一天你突然发现公司网站访问速度变的很慢很慢,如何处理?
( 服务器可以登陆,提示:你可以从系统负载和网卡流量入手 )
可以从两个方面入手分析:分析系统负载,使用w命令或者uptime命令查看系统负载,如果负载很高,则使用top命令查看CPU,MEM等占用情况,要么是CPU繁忙,要么是内存不够,如果这二者都正常,再去使用sar命令分析网卡流量,分析是不是遭到了攻击。一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
7、linux系统里,buffer和cache的区别
buffer和cache都是内存中的一块区域,当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。
8、TCP 和 UDP 的区别是什么
TCP传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个 TCP 连接,之后才能传输数据。TCP 提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP用户数据报协议,是一个简单的面向数据报的运输层协议。UDP 不提供可靠性,它只是把应用程序传给 IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
9、简述预定义变量$$、$?、$0、$#、$*、$!的作用
$$ 保存当前运行进程的(PID)号
$? 保存命令执行结果的(返回状态)
$0 保存当前运行的(进程名)或(脚本名)$# 保存位置变量的(个数)
$* 保存所有位置变量的(值)
$! 保存后台(最后一个进程)的 PID 号
10、常见的整数值比较操作,说明各自作用
-eq 等于(Equal)
-ne 不等于(Not Equal)
-ge 大于或等于(Greater or Equal)-le 小于或等于(Lesser or Equal)-gt 大于(Greater Than)
-lt 小于(Lesser Than)
1. OSI 7 层协议分别是什么?
第7层 应用层
应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、MySQL等
第6层 表示层
主条目:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式
第5层 会话层
会话层(Session Layer)负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。
第4层 传输层
传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。
第3层 网络层
网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。
第2层 数据链接层
数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access
control,MAC)子层
第1层 物理层
物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。
2. 请描述 http 及 https 分别是什么协议、作用及端口号?
HTTP:超文本传输协议,用于传输 Internet 浏览器使用的普通文本、超文本、音频和视频等数据,端口号为 TCP的 80。
HTTPS:安全超文本传输协议,基于 HTTP 开发,提供加密,可以确保消息的私有性和完整性,端口号为443 工作区子系统。
3. OpenSSH 服务器使用的协议、默认端口、主配置文件分别是什么?SSH 与Telnet 应用的区别在哪里?
OpenSSH 使用 TCP 协议,默认端口是 22,主配置文件/etc/ssh/sshd_config。SSH 的英文全称是
Secure SHell,即安全外壳。SSH 会把传输过程中的数据加密,且支持压缩以提高传输速度;而Telnet 在网络上以明文传送口令和数据,安全级别低,容易受到攻击。
4. Linux 常见的系统日志文件都有哪些,各自的用途?
/var/log/messages 内核及公共消息日志
/var/log/cron 计划任务日志
/var/log/dmesg 系统引导日志
/var/log/maillog 邮件系统日志
/var/log/secure 记录与访问限制相关日志
5. 访问一个网站的流程
用户输入网站按回车, 查找本地缓存,如果有就打开页面,如果没有,利用DNS做域名解析,递归查询,一级一级的向上提交查询请求,知道查询到为止。
HOSTS表本地DNS 上层DNS(包括根DNS)经过了DNS解析,知道了网站的IP地址,然后建立tcp三次握手; 建立请求后,发送请求报文,默认请求的是index.html。
传送完毕,断开连接。
6. 软链接和硬链接的区别
1. 软链接可以跨分区链接,软链接支持目录同时也支持文件的链接。软链接源文件与目标文件 Inode 不相同,从某种意义上来,会消耗省 inode 空间。
2. 硬链接不能跨分区链接,硬链接只能对文件生效,对目录无效,也即是目录不能创建硬链接。硬链接源文件与目标文件共用一个inode 值,从某种意义上来,节省 inode 空间。
7. 企业服务器硬盘常见的 RAID 种类及每种 RAID 特点原 理
RAID 0:无差错控制的带区组,将一个数据分为两份分别放在两块硬盘上。不需要计算校验码。RAID 1:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。
RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。
RAID10:高可靠性与高效磁盘结构,一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,主要用于容量不大,但要求速度和差错控制的数据库中。
8. 编译源码包过程介绍
采用源码包编译的方式安装软件包时,有哪些基本过程、各自的作用是什么?tar 解包:解压、释放安装包内的文件
./configure 配置:针对当前系统环境指定安装目录、选择功能等设置。make 编译:将源代码编译成二进制的可执行程序、库文件等数据。
make install:将编译好的程序文件、配置文档等复制到对应的安装目录。
9. Linux 目录结构介绍
Linux 系统的根目录下主要包括哪些文件夹,各自的作用是什么?
/boot:存放 Linux 内核、引导配置等启动文件。
/bin:存放最基本的用户命令,普通用户有权限执行。
/dev:存放硬盘、键盘、鼠标、光驱等各种设备文件。
/etc:存放各种配置文件、配置目录。
/home:存放普通用户的默认工作文件夹(即宿主目录、家目录)。
/root:Linux 系统管理员(超级用户)root 的宿主目录。
/sbin:存放最基本的管理命令,一般管理员用户才有权限执行。
/usr:存放额外安装的应用程序、源码编译文件、文档等各种用户资料。/var:存放日志文件、用户邮箱目录、进程运行数据等变化的文档。
/tmp:存放系统运行过程中使用的一些临时文件。
10. 简述 TCP 三次握手的过程
第一次握手,建立连接,客户端収送 SYN 包到服务器,幵迚入 SYN_SEND 状态,等待服务器确认;
第二次握手,服务器收到 SYN,同时自己也収送一个 SYN 包和一个 ACK 包来确认客户端的 SYN,并进入 SYN_RECV;
第三次握手,客户端收到服务器収来的 SYN+ACK 后,回复服务器端一个 ACK 确认,収送完毕后,双方进入 ESTABLISHED 状态。
三次握手成功后,开始传输数据。