26 Linux中开放某个端口
在Linux中开放某个端口,通常需要配置防火墙规则来允许通过指定的端口号的网络流量。这里提供两种常用的防火墙管理工具的命令:
使用iptables(内核空间防火墙)
临时打开端口(重启后失效):
Bash
sudo iptables -A INPUT -p tcp --dport <端口号> -j ACCEPT
这里的 <端口号>
替换为你想要开放的具体端口号,例如要开放80端口:
Bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
永久生效(针对系统重启后仍保持规则): 首先执行临时打开端口的命令,然后保存规则到配置文件,不同Linux发行版可能有不同的持久化方法,对于那些没有内置服务直接管理iptables规则的系统,可以使用以下方式:
Bash
# 将规则保存至 /etc/iptables/rules.v4 (对于IPv4)
sudo iptables-save > /etc/iptables/rules.v4# 或者创建一个自启动脚本来加载规则
# 在一些系统上,你可能需要编辑 /etc/rc.local 文件或其他启动脚本# 然后重新加载规则
sudo iptables-restore < /etc/iptables/rules.v4
使用firewalld(动态防火墙管理工具,常见于RHEL/CentOS等)
临时开放端口(重启后失效):
Bash
sudo firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent
例如,开放80端口的TCP流量:
Bash
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
使更改立即生效并永久保存:
Bash
sudo firewall-cmd --reload
请注意,--permanent
标志意味着更改将被写入到配置文件中,并在下次重启firewalld时自动加载。
根据你的Linux发行版和所使用的防火墙管理工具,请选择对应的方法进行操作。
27 Linux操作系统启动顺序
28 Linux中/var/log/下日志详解
29 Linux怎么批量杀死进程
kill -9 $(ps -ef | grep '关键词' | grep -v grep | awk '{print $2}')
这条命令的作用是在Linux环境下批量杀死包含特定关键词的进程。命令解析如下:
-
ps -ef
: 列出当前系统中所有的进程信息,包括进程ID、用户、CPU时间以及命令行参数等详细内容。 -
grep '关键词'
: 对上述进程列表进一步筛选,找出命令行参数中含有特定关键词的进程行。 -
grep -v grep
: 排除掉由于第一个grep
命令本身产生的进程行,防止误杀包含关键词 "grep" 的命令行工具自身。 -
awk '{print $2}'
: 使用awk命令提取出每行的第二列数据,即进程ID(PID)。 -
kill -9 $(...)
: 使用反引号$(...)
执行括号内的命令并获取其输出作为参数传递给kill -9
命令。kill -9
表示向对应的进程发送SIGKILL信号,这是一种强制终止进程的信号,会导致进程立即停止运行且不能清理资源
30 查看僵尸进程
如果父进程对SIGTERM无响应,可尝试更强硬的SIGKILL信号:
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs -r kill -9
31 vim中有那三种模式
命令,输入,编辑模式
32 查看资源有哪些?
33 常见的Linux版本有哪些?你最擅长哪一种?说明你擅长哪一块?
34
34 Linux的标准分区是什么?(内存32G,硬盘1T)
/boot 分200M,/分50G,swap 分16G,其余分到 /data 下。
35 突然发现一台Linux系统只读,应该怎么处理,请写出详细步骤。
36 构建简单网站架构模型
37 你用过或测试过哪些 linux/unix文件系统?
38 怎样用命令查看3天前的CPU分核的负载数据?
39 某命令CPU负载显示以下各段,分别是什么10.6%us,6.6%sy, 0.0%ni 74.4%id 0.0%wa
这段CPU负载数据显示了CPU的不同使用情况,具体解读如下:
-
10.6%us: 用户态(User)CPU使用率。这是指CPU在处理非内核线程(应用程序代码)所花费的时间百分比。
-
6.6%sy: 系统态(System)CPU使用率。这部分时间表示CPU用于处理内核态任务(操作系统内部任务,如系统调用、设备驱动程序、硬件中断处理等)所占用的时间。
-
0.0%ni: 就绪队列(Nice)CPU使用率。这是指被调整过优先级(nice值)的用户进程消耗的CPU时间,这里的0.0%表示没有进程在nice级别下运行或者运行的nice进程消耗的CPU资源极小。
-
74.4%id: 空闲(Idle)CPU使用率。这是指CPU在采样周期内空闲等待新任务的时间百分比,表明在这段时间内,CPU没有被任何任务有效利用。
-
0.0%wa: 等待I/O(Wait)CPU使用率。这表示CPU在等待I/O操作(如磁盘读写)完成的时间百分比。这里的0.0%表示没有进程因I/O操作阻塞而导致CPU等待。
总结起来,这段数据显示在采样时刻,系统大部分时间(74.4%)CPU是空闲的,用户态进程占用了约10.6%的CPU资源,系统态进程占用了约6.6%的CPU资源,且没有进程在nice优先级下运行,也没有进程因I/O等待而消耗CPU资源。
40 列举你知道的linux下的压力测试程序
41 描述linux系统下创建软RAID5的命令和步骤
42 如何查找某一文件被哪个进程打开?
43 查看系统端口是否打开
在Linux系统中,你可以使用netstat
或ss
命令来查看系统端口是否打开。以下是两种方法:
方法1: 使用netstat
命令(较老版本的Linux常用)
# 显示所有正在监听(打开)的TCP端口
netstat -tuln# 解析:
# -t 指定显示TCP连接
# -u 指定显示UDP连接(如果不关注UDP,可以省略此选项)
# -l 显示监听状态的套接字(即打开的端口)
# -n 使用数字形式展示地址和端口,而不是主机名和服务名
方法2: 使用ss
命令(较新版本的Linux推荐,性能更好)
# 显示所有正在监听(打开)的TCP端口
ss -tuln# 解析:
# -t 指定显示TCP套接字
# -u 指定显示UDP套接字(如果不关注UDP,可以省略此选项)
# -l 显示监听(listening)状态的套接字
# -n 不解析服务名,显示端口号
这两个命令都会列出系统当前打开并监听(处于监听状态)的所有端口及相关的进程信息。
44 请用iptables写一条规则(同时允许 443,80,1723,22,3306,11211,25,110,dns,ntp协议,并写出默认允许或者拒绝端口的作用)
44.1 写一条192.168.10.0网段从网关192.168.9.1出去的路由
44.2 写一条放行80端口的防火墙规则
44.3 开启ip段211.123.16.123/24端ip段的80口
45 网站HTTPS证书认证需要那几个文件?分别是什么?什么作用?
46 linux引导加载的先后顺序是BIOS kernel GRUB MBR RAID?
47 进程间通信方式主要有哪几种方式?
48 简要说明你对内核空间和用户空间的理解?
在现代操作系统中,尤其是类Unix操作系统(如Linux),内存空间通常被划分为内核空间(Kernel Space)和用户空间(User Space)。这两种空间的概念是为了实现更好的安全性、稳定性和效率。
内核空间(Kernel Space):
- 是操作系统的核心部分,拥有最高的权限,可以直接访问硬件资源,如CPU、内存、硬盘、网络接口等。
- 包含了操作系统内核的代码和数据结构,比如内核模块、驱动程序、系统调用接口、进程调度算法、内存管理和虚拟文件系统等核心功能。
- 内核空间的代码可以直接执行特权指令,对硬件进行底层控制,保证了系统的稳定性与安全性。
用户空间(User Space):
- 是应用程序运行的环境,每个用户进程都有自己的用户空间,只能访问分配给它的内存区域,不能直接操作硬件资源。
- 应用程序通过系统调用(syscall)请求内核提供的服务,如创建进程、读写文件、网络通信等,从而间接使用硬件资源。
- 用户空间的代码执行受到严格的限制,不能执行特权指令,以此防止应用程序错误操作导致系统崩溃。
通过这样的空间划分,操作系统能够有效地隔离和保护内核资源,同时提供了一个相对安全的环境供应用程序运行。只有经过内核严格检查和授权的操作才能涉及硬件层面,极大地提高了系统的稳定性和安全性。
49 当文件系统受到破坏时,如何检查和修复系统?
50 linux日志级别(由轻到重)
51 linux日志类型
52 ps 命令
三 Linux服务
1.简述DNS进行域名解析的过程?
2. DNS为什么选择UDP
3. yum仓库如何开启缓存,软件包保存在哪?
在Linux中,yum
(Yellowdog Updater, Modified)是一个用于RPM包管理系统的老式包管理工具,它已经被dnf
(Dandified Yum)取代,在某些较新版本的Linux发行版中(如Fedora 22及以后、RHEL 8及以后)。然而,在过去的 CentOS 和 RHEL 系统中,yum
支持在只使用缓存的情况下工作,这在离线或受限网络环境中特别有用。
要在只使用缓存模式下使用yum
,通常是指在没有网络连接时安装之前已经缓存好的软件包或依赖。要达到这一目的,你需要预先使用yum makecache
命令下载所有可用的软件包信息和头文件到本地缓存中。之后,即使断开网络连接,也可以尝试安装之前缓存过的软件包。
例如,先更新缓存:
sudo yum makecache fast
接着,如果有足够的缓存数据,尝试安装已缓存的软件包:
sudo yum install <package_name> --disablerepo=* --enablerepo=localmirror
在这个命令中:
--disablerepo=*
关闭所有在线软件仓库。--enablerepo=localmirror
启用一个名为localmirror
的本地镜像仓库,前提是已配置了本地镜像仓库并且其中包含了所需软件包的缓存。
需要注意的是,为了完全依赖缓存进行安装,你需要确保所有需要的软件包及其依赖项都已经存在于本地缓存目录 /var/cache/yum
中。此外,为了长期有效的本地安装,你可能还需要设置一个完整的本地YUM仓库,或者是手动将所需的软件包复制到缓存目录中。
4. cpu使用率过高,该怎么分析?
CPU使用率过高时,分析和解决问题通常涉及以下几个步骤:
-
实时监控与初步判断:
- 使用系统自带的工具,如Windows的任务管理器(Task Manager)或Linux的
top
、htop
、vmstat
、mpstat
、iostat
等命令来实时查看CPU使用率,并找出占用CPU资源最多的进程或线程。 - 在Linux中,还可以通过
ps -aux
或ps -eo %cpu,%mem,comm,lstart,etime,args
命令查看进程详细信息,包括启动时间和CPU占用率。
- 使用系统自带的工具,如Windows的任务管理器(Task Manager)或Linux的
-
确定高CPU使用的原因:
- 软件原因:检查是否有恶意软件、病毒或木马;排查是否有应用程序(如浏览器、数据库服务、后台服务、编程语言运行环境等)过度消耗CPU资源;检查是否存在循环计算、死锁、资源竞争等问题。
- 驱动程序问题:不合适的或过时的驱动程序可能导致CPU使用率异常升高,尤其是显卡驱动等关键硬件驱动。
- 系统服务或计划任务:检查是否有不必要的系统服务在后台运行,或者是否有定时任务突然占用大量CPU资源。
- 系统错误或bug:可能是操作系统内核错误或者应用程序自身的bug导致CPU使用率居高不下。
-
深入分析与诊断:
- 日志分析:查阅系统日志、应用程序日志或内核日志(如/var/log/messages、/var/log/syslog等),寻找与高CPU使用有关的线索。
- 堆栈跟踪:对于特定的高CPU消耗进程,可以使用
strace
(Linux)、gdb
(调试器)等工具追踪系统调用或进行代码级别的分析,查看进程是否陷入了无限循环或其他异常行为。 - 性能分析工具:使用像
perf
(Linux性能分析工具)、oprofile
、sysdig
、dtrace
等高级工具,对CPU热点函数进行深度剖析。
-
硬件检查与排除:
- 散热问题:检查CPU散热状况,如果散热不良可能导致CPU降频或持续高位运行以应对过热。
- 硬件故障:虽然不常见,但也可能是CPU本身的故障或其他硬件冲突引起的。
-
解决方案制定与实施:
- 关闭或限制进程:对于非必要的进程,可以手动停止或限制其资源占用。
- 更新或替换软件:更新到最新版本的应用程序或驱动程序,或寻找资源消耗较低的替代品。
- 优化配置:调整系统或应用程序的配置,减少不必要的功能或提高并发处理效率。
- 升级硬件:如果CPU使用率总是高企且经过优化后仍然无法改善,可能需要考虑升级硬件,特别是CPU性能不足以应对当前工作负载的时候。
通过以上步骤,可以较为全面地分析并着手解决CPU使用率过高的问题。在实际情况中,可能还需要结合具体的技术环境和业务场景来进行更为细致的排查和优化。