其他(Linux、Docker等)
Linux 用过哪些命令¶
ls
(列出目录内容)、cd
(切换目录)、mkdir
(创建目录)、rm
(删除文件或目录)、cp
(复制文件或目录)、mv
(移动或重命名文件或目录);文件内容查看类有 cat
(查看文件内容)、more
(分屏查看文件内容)、less
(与 more
类似,但功能更强大)、grep
(在文件中查找特定字符串);权限管理类有 chmod
(修改文件或目录的权限)、chown
(修改文件或目录的所有者);系统信息查看类有 uname
(显示系统信息)、top
(实时显示系统中各个进程的资源占用情况)、df
(显示磁盘使用情况)、du
(显示文件和目录的磁盘使用情况);网络相关类有 ping
(测试网络连接)、ifconfig
(查看和配置网络接口)、netstat
(显示网络连接、路由表等信息)。
如何查看 Linux 某个磁盘容量¶
可以使用 df
命令查看磁盘容量。例如,要查看所有挂载磁盘的使用情况,可执行 df -h
命令,其中 -h
选项会以人类可读的格式(如 KB、MB、GB)显示磁盘容量信息。若要查看特定挂载点的磁盘使用情况,可在命令后加上挂载点路径,如 df -h /mnt/data
。
如何查看 Linux 中的某个端口号¶
netstat
命令:可用于查看网络连接和端口监听情况。例如,要查看所有监听的 TCP 端口,可执行netstat -tulnp | grep :端口号
,其中-t
表示 TCP 协议,-u
表示 UDP 协议,-l
表示只显示监听状态的连接,-n
表示以数字形式显示地址和端口号,-p
表示显示进程信息。ss
命令:这是一个更高效的网络工具,能替代netstat
。例如,查看监听的 TCP 端口,可执行ss -tulnp | grep :端口号
。lsof
命令:用于列出当前系统打开的文件,也能查看端口占用情况。例如,查看占用 8080 端口的进程,可执行lsof -i :8080
。
Docker 相关¶
Docker 是用于开发、部署和运行应用程序的开源平台,以下是一些常用操作:
- 镜像操作:
docker pull
用于从 Docker Hub 或其他镜像仓库拉取镜像,如docker pull nginx
;docker images
用于列出本地的镜像;docker rmi
用于删除本地镜像,如docker rmi nginx
。 - 容器操作:
docker run
用于创建并启动一个新容器,如docker run -d -p 80:80 nginx
;docker ps
用于列出正在运行的容器,加上-a
选项可列出所有容器;docker stop
和docker start
分别用于停止和启动容器;docker rm
用于删除容器。 - 构建镜像:使用
Dockerfile
构建自定义镜像,通过docker build
命令,如docker build -t myimage:1.0 .
。
Linux top、chown、df 等命令¶
top
命令:实时显示系统中各个进程的资源占用情况,能帮助用户监控系统性能。启动top
命令后,会显示一个动态的界面,包含 CPU、内存、进程等信息。按q
键可退出该界面。chown
命令:用于修改文件或目录的所有者和所属组。语法为chown [所有者][:所属组] 文件或目录
,例如chown user1:group1 test.txt
会将test.txt
文件的所有者改为user1
,所属组改为group1
。df
命令:用于显示磁盘使用情况,如前面所述,df -h
可查看所有挂载磁盘的使用情况,以人类可读的格式输出。
Linux 用什么命令修改配置文件¶
vi
或vim
编辑器:这是 Linux 中最常用的文本编辑器,功能强大。例如,要编辑/etc/nginx/nginx.conf
文件,可执行vim /etc/nginx/nginx.conf
命令,进入编辑器后进行修改,按i
键进入插入模式,修改完成后按Esc
键退出插入模式,输入:wq
保存并退出。nano
编辑器:操作相对简单,适合初学者。例如,nano /etc/hosts
可打开/etc/hosts
文件进行编辑,编辑完成后按Ctrl + X
键,再按Y
键确认保存,最后按Enter
键退出。
异步任务超时的容错机制¶
- 设置超时时间:在代码中为异步任务设置一个合理的超时时间。例如,使用 Python 的
asyncio
库时,可通过asyncio.wait_for
函数为协程设置超时时间。若任务在规定时间内未完成,会抛出asyncio.TimeoutError
异常,可在异常处理中进行容错操作,如重试任务或返回默认值。 - 重试机制:当任务超时时,可进行多次重试。可以设置重试次数和重试间隔时间,例如使用指数退避算法,每次重试的间隔时间逐渐增加,以避免频繁重试对系统造成过大压力。
- 降级处理:若任务多次重试仍失败,可进行降级处理,如返回缓存数据或默认数据,以保证系统的基本可用性。
对字节码的了解¶
字节码是一种中间表示形式,介于高级编程语言和机器语言之间。在 Java、Python(如 CPython 中的 .pyc
文件)等编程语言中,源代码首先会被编译成字节码。以 Java 为例,Java 源代码(.java
文件)经过 javac
编译器编译后会生成字节码文件(.class
文件)。字节码不是直接在硬件上运行的机器码,而是在虚拟机(如 Java 虚拟机 JVM)上运行。虚拟机负责将字节码解释或编译成机器码并执行,这样做的好处是实现了平台无关性,即同一份字节码可以在不同的操作系统和硬件平台上运行,只要安装了相应的虚拟机。
CPU 飙高的排查过程¶
- 使用
top
命令:查看系统中占用 CPU 资源较高的进程,记录下进程的 PID(进程 ID)。 - 使用
ps
命令:结合 PID 查看进程的详细信息,如ps -ef | grep PID
,可了解进程的启动时间、所属用户等。 - 使用
strace
命令:对进程进行系统调用跟踪,如strace -p PID
,可查看进程正在执行的系统调用,分析是否存在异常的系统调用导致 CPU 占用过高。 - 使用
gdb
调试器:若进程是可调试的,可使用gdb
对其进行调试,查看进程的堆栈信息,找出可能导致 CPU 飙高的代码位置。 - 检查程序代码:查看相关程序的代码,分析是否存在死循环、高计算复杂度的算法等问题。
遇到 bug 怎么解决¶
- 复现 bug:尽可能详细地记录 bug 出现的环境和操作步骤,尝试复现 bug。只有能够复现的 bug 才能进行有效的排查和修复。
- 收集信息:收集相关的日志文件、错误信息、系统状态信息等,这些信息有助于定位问题所在。
- 分析问题:根据收集到的信息,分析 bug 可能产生的原因。可以使用调试工具(如 IDE 中的调试器)对代码进行单步调试,查看变量的值和程序的执行流程。
- 制定解决方案:根据分析结果,制定相应的解决方案。可以是修改代码、调整配置参数等。
- 测试验证:对修复后的代码进行测试,确保 bug 已经被解决,同时要进行回归测试,保证修复没有引入新的问题。
公司中的产品部的需求文档写的不清晰怎么处理¶
- 主动沟通:及时与产品部相关人员进行沟通,详细询问需求文档中不清晰的部分,要求他们提供更明确的解释和说明。可以组织面对面的会议或通过线上沟通工具进行交流。
- 案例和示例:要求产品部提供相关的案例或示例,以便更好地理解需求。例如,若需求是开发一个新的功能模块,可让他们提供类似功能的产品截图或操作流程。
- 明确验收标准:与产品部一起明确需求的验收标准,确保双方对最终的交付成果有一致的理解。
- 会议纪要和文档更新:在沟通后,整理会议纪要,记录达成的共识和明确的需求内容,并要求产品部更新需求文档,保证文档的准确性和完整性。