Linux运维工程师面试题(1)

这篇具有很好参考价值的文章主要介绍了Linux运维工程师面试题(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • Linux运维工程师面试题(1)
    • 1 别名、内部命令、外部命令的执行顺序
    • 2 linux 系统启动流程
    • 3 破解用户密码的方法
    • 4 忘记 grub 密码怎么解决
    • 5 硬盘空间满了怎么处理,怎么找到硬盘中的大文件
    • 6 硬盘明明有很多空间,为什么无法存储文件
    • 7 进程使用内存问题
      • 7.1 内存泄露:Memory Leak
      • 7.2 内存溢出:Memory Overflow
      • 7.3 内存不足:OOM
    • 8 进程、线程和协程的区别
    • 9 使用 find 命令找出/data目录下15天以上以log结尾的文件并删除
    • 10 su、su - 和 sudo 的区别

Linux运维工程师面试题(1)

祝各位小伙伴们早日找到自己心仪的工作。
持续学习才不会被淘汰。
地球不爆炸,我们不放假。
机会总是留给有有准备的人的。
加油,打工人!

1 别名、内部命令、外部命令的执行顺序

命令执行寻找顺序:别名 > 内部命令 > 外部命令;

即先寻找是否为别名,然后再找是否为内部命令,最后才找是否为外部命令。

拓展:什么是内部命令?什么是外部命令?

内部命令:由shell自带的,而且通过某命令形式提供
外部命令:在文件系统路径下有对应的可执行程序文件

# 使用type命令判断是外部命令还是内部命令

[root@waluna ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo	# echo 即为内部命令也为外部命令
[root@waluna ~]# type echo
echo is a shell builtin	# 内部命令显示结果
[root@waluna ~]# type vim
vim is /usr/bin/vim	# 外部命令会显示命令的路径

# 使用此命令后效果
[root@waluna ~]# vim 1.sh
[root@waluna ~]# type vim
vim is hashed (/usr/bin/vim) # 会显示为是hash,因为命令执行后会使用hash缓存在内存中,不会再次依次寻找环境变量的路径,可以直接执行,加速速度

2 linux 系统启动流程

不同操作系统及版本有所不同,以下以 centos 7 为例。

启动流程比较复杂,以下简要描述,详细看下图

  1. UEFI 或 BIOS 初始化,运行 POST 开机加电自检;
  2. 加载 BIOS 的硬件信息,获取第一个启动设备;
  3. 读取第一个启动设备 MBR 的引导加载程序 (grub) 的启动信息;
  4. 引导装载程序,centos 7 是 grub2,加载装载程序的配置文件:
  • /etc/grub.d/
    • /etc/default/grub
    • /boot/grub2/grub.cfg
  1. 加载 initramfs 驱动模块;
  2. 加载内核选项;
  3. 内核初始化,centos7使用systemd代替init;
  4. 执行 initrd.target 所有单元,包括挂载 /etc/fstab;
  5. 从 initramfs 根文件系统切换到磁盘根目录;
  6. systemd 执行默认 target 配置,配置文件 /etc/systemd/system/default.target;
  7. systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统;
  8. systemd 启动 multi-user.target 下的本机与服务器服务;
  9. systemd 执行 multi-user.target 下的 /etc/rc.d/rc.local;
  10. systemd 执行 multi-user.target 下的 getty.target 及登录服务;
  11. systemd 执行 graphical 需要的服务。

Linux运维工程师面试题(1)

图片来自互联网,略有错误,仅供参考

3 破解用户密码的方法

方法一:

启动时任意键暂停启动
选择内核按e键进入编辑模式
将光标移动linux开始的行,添加内核参数rd.break # rd.break为打断正常启动
按 ctrl-x 启动
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
# 如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot

方法二:

启动时任意键暂停启动
选择内核按e键进入编辑模式
将光标移动linux开始的行,改为将 ro 改为 rw init=/sysroot/bin/sh
按 ctrl-x 启动
chroot /sysroot
passwd root
# 如果SELinux是启用的,才需要执行下面操作,如查没有启动,不需要执行
touch /.autorelabel
exit
reboot

4 忘记 grub 密码怎么解决

如果 root 密码忘记了,grub 的密码也忘记了,可以进救援模式将 /mnt/sysimage/boot/grub/grub.conf 文件里密码那行删了即可,或者直接修改 shadow 文件,直接把 root 密码删了,即可以使用 root 进行空口令登录了。

物理安全是系统安全的前提

5 硬盘空间满了怎么处理,怎么找到硬盘中的大文件

首先使用 df -h 查看硬盘的使用情况,找到是哪个分区空间满了;

然后去对应分区使用 du -sh * 或者 du -a 查看哪个文件占空间比较大,一般是日志文件。

使用以上方法后没有发现大文件,该怎么处理?

特殊情况一:

挂载的时候将有数据的目录给覆盖掉了,需要使用df命令查看挂载情况,取消挂载后将原有目录的里大文件删除即可。

特殊情况二:

删除大量的文件没有被释放掉,使用 lsof -n | grep deleted 命令查看哪些被删除文件的pid,将对应的进程停止即可释放删除的文件进而释放硬盘空间。

正确释放大文件的方法:

cat /dev/null > /data/bigfile 或者 > /data/bigfile 但是后者不通用,有的shell不支持>,比如csh
释放后再删除 rm -f /data/bigfile

考察du、df、ls -l命令的区别:

ls -l查看的是文件的实际大小,du查看文件占硬盘空间的实际大小,df查看的是硬盘的实际大小,ext系列默认元数据占用比xfs文件系统的元数据要小很多。

一般情况下du显示的会比ls -l显示的大,这主要是因为du显示的是block的整数倍。

为什么生成文件前就有33M的数据,因为默认磁盘的元数据也会占用空间。

6 硬盘明明有很多空间,为什么无法存储文件

原因是所在分区的inode号满了,df -i 可以查看 inode 的使用情况。

一般是生成大量的小文件导致inode号耗尽,将这些小文件删除,释放inode号即可。

软链接过多也会导致inode耗尽。

7 进程使用内存问题

7.1 内存泄露:Memory Leak

指程序中用 malloc 或 new 申请了一块内存,但是没有用 free 或 delete 将内存释放,导致这块内存一直处于占用状态。

7.2 内存溢出:Memory Overflow

指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出。

7.3 内存不足:OOM

OOM 即 Out Of Memory,“内存用完了",在情况在java程序中比较常见。系统会选一个进程将之杀死,在日志messages中看到类似下面的提示:

Jul 10 10:20:30 kernel: Out of memory: Kill process 9527(java) score 88 or sacrifice child

当 JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error,因为这个问题已经严重到不足以被应用处理。

原因:

  • 给应用分配内存太少:比如虚拟机本身可使用的内存 (一般通过启动时的VM参数指定) 太少。
  • 应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。

使用的解决办法:

  1. 限制 java 进程的 max heap,并且降低 java 程序的 worker 数量,从而降低内存使用
  2. 给系统增加 swap 空间

8 进程、线程和协程的区别

定义:

(1) 进程是系统进行资源分配和调度的独立单位;

(2) 线程是进程的实体,是CPU调度和分配的基本单位;

(3) 协程,又称微线程,自带CUP上下文,是比线程更小的执行单元,占用资源小,效率高。

区别:

(1) 一个程序至少有一个进程,一个进程至少有一个线程;

(2) 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高;

(3) 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率;

(4) 线程不能够独立执行,必须依存在进程中。

Linux运维工程师面试题(1)

9 使用 find 命令找出/data目录下15天以上以log结尾的文件并删除

find /data -type f -iname "*.log" -mtime +15 -exec rm -rf {} \;

10 su、su - 和 sudo 的区别

su username:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - username:登录式切换,会读取目标用户的配置文件,切换至自己的家目录,即完全切换

sudo 是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令。格式:sudo -u USERNAME COMMAND

使用su切换用户时需要输入目标用户的密码,使用sudo执行命令的时候需要输入当前用户的密码。


关于我
全网可搜《阿贤Linux》
CSDN、知乎、哔哩哔哩、博客园、51CTO、掘金、思否、开源中国、阿里云、腾讯云、华为云、今日头条、GitHub、个人博客
公众号:阿贤Linux
个人博客:blog.waluna.top
https://blog.waluna.top/


原文链接: Linux运维工程师面试题(1).文章来源地址https://www.toymoban.com/news/detail-666729.html

到了这里,关于Linux运维工程师面试题(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux运维工程师面试题(9)

    目录 Linux运维工程师面试题(9) 1 pod 的生命周期 2 探针类型 3 探针方式 4 探针结果 5 Pod 重启策略 6 镜像获取策略 7 k8s 的服务类型 8 k8s中 service 和 ingress 的区别 9 有状态和无状态服务的区别 10 k8s 中 service 是做什么的? 祝各位小伙伴们早日找到自己心仪的工作。 持续学习才

    2024年02月09日
    浏览(51)
  • Linux运维工程师面试题(8)

    目录 Linux运维工程师面试题(8) 1 docker 的网络类型,使用场景 2 CMD 和 ENTRYPOINT 的区别 3 怎么减小 dokcer 镜像的大小 4 现有一个正在运行的容器,容器中没有 ps、top、netstat、ss、ip、lsof等命令,怎么查看容器内进程及pid和打开的端口 5 如何临时退出⼀个正在交互的容器的终端

    2024年02月09日
    浏览(37)
  • Linux运维工程师面试题(6)

    目录 Linux运维工程师面试题(6) 1 数据库事务的四个特性及含义 2 mysql 的 sql 语句怎么优化 3 varchar 与 char 的区别是什么?大小限制?utf8 字符集下 varchar 最多能存多少个字符? 4 索引有什么用? 5 sql 注入是怎么产生的,如何防止? 6 csrf 是什么?如何防范? 7 如何加强 MySQ

    2024年02月10日
    浏览(38)
  • Linux运维工程师面试题(2)

    目录 Linux运维工程师面试题(2) 1 访问一个网站的流程 2 TCP 三次握手,四次挥手 3 apache 和 nginx 有哪几种虚拟主机 4 TCP 和 UDP 的区别 5 nginx 和 apache 的区别 6 什么是反向代理,什么是正向代理,区别是什么? 7 cookie和session的区别 8 nginx 调优 9 系统出现大量的 time_wait 问题怎么

    2024年02月11日
    浏览(30)
  • Linux下安装Elasticsearch(1),面试字节跳动Linux运维工程师该怎么准备

    network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问 我们把data和logs目录修改指向了elasticsearch的安装目录。但是这两个目录并不存在,因此我们需要创建出来。 进入elasticsearch的根目录,然后创建: mkdir data mkdir logs 目前我们是做的单机安装,如果要做集群,只需要在这个配置

    2024年04月25日
    浏览(35)
  • 【良品】运维实施工程师面试题

    答:netstat –anpt | grep 8089 答:kill -9 4728/ 答:find . -name \\\"en* \\\" 答:chmod +x filename.sh 答:tar -xf .gz -C /usr/local unzip .zip 答:rpm -q smile ; rpm -e smile 答:vi /etc/profile  添加内容 JAVA_HOME=/usr/local/java/jdk1.8.0_221 PATH=JAVAHOME/bin:PATH CLASSPATH=.:JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar export JAVA_HOME expo

    2024年02月09日
    浏览(34)
  • 初级运维工程师面试题

    1、apache有几种工作模式,分别简述两种工作模式及其优缺点? apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候添加–with-mpm=worker选项) prefork的特点是:(预派生) 1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销 2.可以防

    2024年02月08日
    浏览(40)
  • 【运维工程师学习三】Linux中Shell脚本编写

    Shell程序有很多, 如 Korn shell(ksh)、Bourne Again shell(bash)、C shell(包括csh与tcsh) 等等, 各主要操作系统下缺省的shell: AIX下是 Korn Shell Solaris缺省的是 Bourne shell FreeBSD缺省的是 C shell HP-UX缺省的是 POSIX shell Linux缺省的是 Bourne Again shell 但这种在命令行中的命令是即时输出结果的,不

    2024年02月11日
    浏览(57)
  • 【Linux深造日志】运维工程师必会Linux常见命令以及周边知识!

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活!   哈喽各位宝子们好啊!我是博主鸽芷咕。日志这个东西我相信大家都不陌生,在 linxu/Windows 系统中每天运行都会产生各种系统日志。而咱们每天学习知识也是一

    2024年04月17日
    浏览(46)
  • 华为Linux系统开发工程师面试

    在Linux系统开发工程师的面试中,你可能会遇到以下一些问题: 在同一个网站中,当客户访问的时候,会出现有的页面访问的速度快而有的慢,系统和服务完全正常、网络带宽正常,你如何诊断这个问题? 你以前做过的项目中,单台服务器的最大并发量是多少?你硬件的配置

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包