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 为例。
启动流程比较复杂,以下简要描述,详细看下图
- UEFI 或 BIOS 初始化,运行 POST 开机加电自检;
- 加载 BIOS 的硬件信息,获取第一个启动设备;
- 读取第一个启动设备 MBR 的引导加载程序 (grub) 的启动信息;
- 引导装载程序,centos 7 是 grub2,加载装载程序的配置文件:
- /etc/grub.d/
- /etc/default/grub
- /boot/grub2/grub.cfg
- 加载 initramfs 驱动模块;
- 加载内核选项;
- 内核初始化,centos7使用systemd代替init;
- 执行 initrd.target 所有单元,包括挂载 /etc/fstab;
- 从 initramfs 根文件系统切换到磁盘根目录;
- systemd 执行默认 target 配置,配置文件 /etc/systemd/system/default.target;
- systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统;
- systemd 启动 multi-user.target 下的本机与服务器服务;
- systemd 执行 multi-user.target 下的 /etc/rc.d/rc.local;
- systemd 执行 multi-user.target 下的 getty.target 及登录服务;
- systemd 执行 graphical 需要的服务。
图片来自互联网,略有错误,仅供参考
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参数指定) 太少。
- 应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。
使用的解决办法:
- 限制 java 进程的 max heap,并且降低 java 程序的 worker 数量,从而降低内存使用
- 给系统增加 swap 空间
8 进程、线程和协程的区别
定义:
(1) 进程是系统进行资源分配和调度的独立单位;
(2) 线程是进程的实体,是CPU调度和分配的基本单位;
(3) 协程,又称微线程,自带CUP上下文,是比线程更小的执行单元,占用资源小,效率高。
区别:
(1) 一个程序至少有一个进程,一个进程至少有一个线程;
(2) 线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高;
(3) 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率;
(4) 线程不能够独立执行,必须依存在进程中。
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运维工程师面试题(1).
Linux运维工程师面试题(1)相关推荐
- Linux运维工程师笔试题系列6(30题)
Linux运维工程师笔试题系列6(30题) 如果您对问题有疑问,或者认为答案不准确的,欢迎留言交流. 问题如下: 1. cat -n file1file2 命令的意思是? A 只会把文件file1的内 ...
- linux运维工程师面试题收集
面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...
- Linux运维工程师面试题第三套
1.linux如何挂在windows下的共享目录? mount -t cifs -o username=windows登陆账号,password="windows账号对应的密码"/ ...
- Linux运维工程师面试题
1.什么是运维? 运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,在他运转的过程中,对他进行维护,他集合了网络.系统.数据库.开发.安全.监控于一身的技术,运维又包括很 ...
- Linux运维工程师面试题整理
1.Nginx反向代理,负载均衡,动静分离,工作原理及优化 nginx配置反向代理. vim Nginx.conf Server模块中配置 Listen 80 Server_name ip; 在ser ...
- Linux运维工程师面试题第二套
python 1.python是强类型还是弱类型的语言? 强类型 [评析]这种问题其实面试出来很没意思,因为太过理论,而且业界对于这个东西的定义没有一个统一的说法.所以这个题问出来挺无语的.记住,目前 ...
- linux运维工程师面试题和笔试题大全(*大学生必看)
文章目录 选择题 简答题 选择题 cat -n file1file2 命令的意思是? A 只会把文件file1的内容输出到屏幕上. B 把文件file1和file2连在一起,然后输出到屏幕上. C 创 ...
- Linux运维工程师笔试题
一.基本知识题(共10题,每题3分) 1.用什么命令查询指定IP地址的服务器端口? 1 yuminstall-y nmap 2.用什么命令定义某个程序执行的优先级别? 1 nice renice 3. ...
- Linux运维工程师面试题及答案
填空题 在Linux系统中,以 文件 方式访问设备 . Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统. Linux文件系统中每个文件用 i节点 来标识. 全部磁盘块由四个 ...
最新文章
- 美军认知技术发展态势
- 编程语言python培训-Python是什么样的编程语言?
- 仿链家地图找房_我在深圳的第一个家 是在有着6000套房的工业区里
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E. Half-consecutive Numbers
- 3 Django视图层
- 大厂用的分库分表方案和demo源码,都在这里了!
- 室内声场计算机模拟的声线跟踪法和虚声源法,计算机声场模拟软件ODEON及其应用lowbar;彭庆 - 范文中心...
- 官网Tomcat下载方法
- MacBook Air 2013全新安装Win7
- oa系统需要的服务器配置,oa办公系统需要服务器配置
- java编写程序上机实验,《Java程序设计》上机实验
- 辐射强度和辐射亮度_如何在“辐射4”中隐藏“创意俱乐部新闻”垃圾邮件
- 寄语十周年:“我与CCF BDCI”大赛十周年寄语火热征集中
- 【语音从零之五】用科大讯飞语音包实现语音打开已安装应用程序
- 华为nova青春版是html手机吗,华为Nova青春版这款手机作为新青年良品:麒麟935+4G+64GB+18W快充...
- TP6 TP5 Db‘ not found
- matlab 蒙特卡洛法书籍,[转载]matlab的蒙特卡洛算法
- 详细的Python炸金花游戏代码
- xp usb android,windowsxp系统设置usb手机网络分享的方法
- PS技巧---撕纸效果