1. 什么是 Linux 及其基本组件?
Linux 就像是电脑的“大脑”,控制着所有的硬件和软件。它主要用于服务器、开发人员的电脑,还有智能设备比如手机和电视。
Linux 有四个基本部件:
- 内核 (Kernel):这是核心部分,就像电脑的大脑,负责管理和协调硬件资源。
- Shell:这是用户和内核之间的翻译器。用户输入命令后,Shell 把这些命令翻译成电脑能懂的指令。
- 系统库 (System Libraries):这些是特殊的程序,提供操作系统的大部分功能,不需要直接访问内核。
- 系统工具 (System Utilities):这些是特定的程序,比如 LibreOffice(办公软件),用来执行某些任务。
2. 什么是 Linux 内核?
Linux 内核 是 Linux 系统的核心部分,它连接了底层硬件和操作系统,确保硬件和软件能协同工作。
3. Linux 和 Unix 有什么区别?
Linux 是从 Unix 演变而来的一个克隆版本。Linux 是开源和免费的,而 Unix 通常是专有和收费的。
4. 什么是 Linux 中的 inode?如何找到与文件关联的 inode?
inode 就像是文件的身份证。在 Unix 风格的文件系统中,文件创建时会分配一个唯一的 inode 编号。这个编号包含了文件的元数据(比如权限、所有者、大小、位置等)。通过 ls -i
命令可以查看文件的 inode 编号。
5. 什么是 Linux shell?如何检查当前的 shell?
Linux shell 是一个命令解释器。要检查当前使用的 shell,可以运行 echo $0
命令。
6. 用什么命令查找内存和交换使用情况?
使用 free
命令可以查看内存和交换空间的使用情况。
7. 软链接和硬链接的区别?
- 硬链接:只能链接文件,删除原文件硬链接仍然存在。
- 软链接(符号链接):可以链接目录,删除原文件软链接失效。
8. 解释 Linux 中的文件权限?
文件权限有读(Read)、写(Write)和执行(Execute)。这些权限可以分配给文件的所有者、组和其他用户。
9. 如何在 Linux 中创建和删除目录?
使用 mkdir
创建目录,使用 rmdir
或 rm -r
删除目录。
10. 如何在 Linux 中创建文件?
使用 touch
命令创建文件,也可以使用 cat > filename
创建并编辑文件。
11. 如何在 Linux 中重命名文件和目录?
使用 mv
命令重命名文件或目录。
12. 如何在 Linux 中复制文件和目录?
使用 cp
命令复制文件或目录。
13. 如何在 Linux 中列出和挂载设备?
使用 df -aTh
或 findmnt
可以列出挂载点。
14. 如何在 Linux 中创建空文件?
使用 touch new_file
创建一个空文件。
15. 如何在 Linux 中调度任务?什么是 crontab 并解释 crontab 中的字段?
cron 是一个调度工具,用来在特定时间执行命令。crontab
是用来管理 cron 作业的表。格式如下:
* * * * * command
| | | | |
| | | | +-- 年 (可选)
| | | +---- 星期几 (0 - 7) (0 和 7 都是星期天)
| | +------ 月 (1 - 12)
| +-------- 日 (1 - 31)
+---------- 时 (0 - 23)
+---------- 分 (0 - 59)
16. 你知道哪些基本的 Vim 命令?
- 保存文件:
ESC
->:wq!
或:ZZ
- 退出文件:
ESC
->:q
- 跳到文件中特定行:
1G
跳到文件开头,G
跳到文件末尾
17. 如何将二进制文件添加到 $PATH 变量中?
使用 export PATH=$PATH:/path/to/the/binary/file
18. 解释 Grep 命令和正则表达式?
Grep 用于搜索文本中的匹配行,例如 ls | grep cron
会在 ls 命令输出中查找包含 "cron" 的行。
19. umask 和 ulimit 有什么区别?
umask 控制新文件和目录的默认权限,ulimit 控制用户进程的资源限制。
20. 解释 ls 命令在 Linux 中的输出?
ls
列出目录内容,可以显示文件权限、大小、修改时间等信息。
21. 解释 Linux 中 top 命令的输出?
top 是一个实时系统监控工具,显示系统负载、CPU 和内存使用情况等信息。
22. Linux 中的进程状态有哪些?
主要有四种状态:运行中、等待中、停止和僵尸。
23. 如何在 Linux 中备份或归档文件(tar 命令)?
使用 tar -cvf
备份目录,例如 tar -cvf backup.tar /path/to/directory
24. 如何停止 Linux 中正在运行的进程?
使用 kill
命令,后跟进程的 PID,例如 kill 3836
25. 如何在 Linux 中搜索文件?
使用 locate
或 find
命令
26. 如何检查某项服务是否在运行?
使用 systemctl status service_name
27. 如何在重启时启动服务?
使用 systemctl enable service_name
28. 如何启动和停止服务?
使用 systemctl start service_name
启动服务,systemctl stop service_name
停止服务。
29. 如何远程登录另一台 Linux 电脑?
可以使用 SSH 或 VNC 服务。
30. 如何查看磁盘使用情况?
使用 df
命令查看硬盘使用情况,使用 du
命令查看特定目录的使用情况。
31. 为什么要使用导出命令?
export
命令用于标记和导出环境变量,使其在子进程中可用。
32. 如何使用 bash 脚本从多个 Linux 服务器获取版本?
编写一个脚本,通过 SSH 登录到服务器并获取内核版本:
#!/bin/bash
serverlist='server_list.txt'
servers=`cat $serverlist`
result='result.txt'
echo -e "Servername \t\t kernel version"> $result
for server in $servers
do
kernel=`ssh root@${server} "uname -r"`
echo -e "$server \t\t $kernel" >> $result
done
33. Linux 安装的最低要求是什么?
典型要求:
- 25 GB 硬盘空间:你需要一个足够大的地方来安装和存储文件。
- 2 GB 内存:相当于你电脑的“短期记忆”需要足够大,才能运行系统和程序。
- 2 GHz 双核处理器:就像你的电脑大脑,需要足够快才能处理任务。
- 1024x768 屏幕分辨率:屏幕需要足够清晰,才能正常显示界面。
- CD/DVD ROM 或 USB 端口:用来安装系统的时候,需要有一个接口插入安装盘或U盘。
34. 如何设置 Linux 文件/目录权限?
使用 chmod 命令,例如 chmod 664 filename
设置文件权限。就像在你的门上设置不同的锁,控制谁能读、写、执行文件。
35. 如何设置文件/目录的所有权?
使用 chown 命令,例如 chown user:user filename
。就像把一本书的所有权从一个人转移给另一个人。
36. 如何在 Linux 中创建用户和组?
使用 adduser 命令,例如 adduser user_name
创建用户。就像在你的电脑里给一个新朋友创建一个专属账号。
37. 如何在 Linux 中查找内核/操作系统版本?
运行 uname -a 命令。就像你查找你手机的系统版本号一样,可以看到详细信息。
38. 如何查找接口 IP 地址?
使用 ifconfig 或 ip addr show 命令。就像你查看你家网络的IP地址,知道你的设备在网络上的位置。
39. 什么是 initrd 镜像?
initrd 是在实际根文件系统可用之前的初始根文件系统,帮助加载必要模块。就像你启动电脑时先要加载一些必要的东西,才能继续完成启动。
40. 解释 SUID、SGID 和粘滞位?
- SUID:执行文件时继承文件所有者的权限。就像别人拿着你的钥匙去做某事。
- SGID:执行文件时继承文件组的权限。就像在一个小组里,大家都能用组里的工具。
- 粘滞位:文件夹中的文件只能由所有者删除。就像公共冰箱里的食物,只有主人能拿走自己的东西。
41. Linux 中的运行级别是什么,如何更改它们?
运行级别定义系统的不同状态:
- 0:关机
- 1:单用户模式
- 3:多用户文本模式
- 5:多用户图形界面模式
- 6:重启
可以通过 init 命令更改运行级别,例如 init 3
切换到运行级别 3。就像你选择电脑是关机、重启还是进入不同的使用模式。
42. 什么是 SELinux?
SELinux 是一个安全功能,用于保护服务器免受错误配置和受损守护程序的影响。就像给你的电脑加了一个更强的防火墙。
43. 选择 5 个 Linux 中常用的网络命令?
- ping:检查网络连通性,就像打电话确认对方是否在线。
- netstat:查看网络状态,就像查看你家里有哪些设备连上了网络。
- ifconfig:查看和配置网络接口,就像配置你家路由器的连接信息。
- traceroute:跟踪数据包路径,就像追踪一个包裹的运输路线。
- nslookup:查询 DNS 记录,就像查询一个电话号码的归属地。
44. 基于名称的虚拟主机和基于IP的虚拟主机有什么区别?
虚拟主机是用来在一台服务器上托管多个网站的。这里有两种方式:
- 基于IP的虚拟主机:每个网站都有自己独立的IP地址。例如,网站A用IP地址1.2.3.4,网站B用IP地址5.6.7.8。
- 基于名称的虚拟主机:多个网站共享同一个IP地址,但通过不同的域名区分。例如,网站A和网站B都用IP地址1.2.3.4,但网站A用域名www.siteA.com,网站B用域名www.siteB.com。
打个比方:基于IP的虚拟主机就像一栋楼里每个住户都有自己的门牌号(IP地址),而基于名称的虚拟主机就像每个住户在同一个门牌号(IP地址)里,但有各自不同的名字(域名)。
45. 网络绑定有什么优势?
网络绑定是把多个网络接口捆绑在一起,形成一个虚拟接口。这样做有几个好处:
- 冗余和容错:如果一个网络接口坏了,另一个会自动接替,保证网络不中断。
- 负载平衡:多个接口一起工作,可以分担网络流量,提高整体网络速度。
打个比方:这就像把几条小溪合并成一条大河,不仅水流更稳定,而且流量更大。
46. /etc/passwd 和 /etc/shadow 文件有什么用?
- /etc/passwd 文件:保存了所有用户的基本信息,比如用户名、用户ID、组ID、主目录和默认shell。
- /etc/shadow 文件:保存了用户的加密密码和一些额外的密码相关信息,比如密码的有效期。
打个比方:/etc/passwd 文件就像一本地址簿,列出了每个用户的名字和住址;/etc/shadow 文件就像一本保险箱,里面锁着每个用户的密码。
47. 为什么要设置无密码的SSH登录?
为了提高安全性,很多组织使用基于密钥的身份验证来代替基于密码的身份验证。具体操作是:
- 公钥放在服务器上
- 私钥保存在客户端
这样,即使有人知道了你的用户名和密码,也无法登录,因为还需要对应的私钥。
打个比方:基于密码的登录就像用钥匙开门,基于密钥的登录就像需要指纹识别,即使别人有你的钥匙,也进不去。
48. 什么是 Linux 中的 swappiness?
swappiness 是一个参数,控制系统什么时候把内存中的内容移到交换空间(swap)。交换空间就是硬盘上的一部分,临时用来当内存用。
- swappiness=0:尽量不要用交换空间,把内容尽量留在物理内存里。
- swappiness=100:积极使用交换空间,把内容从内存移到交换空间。
打个比方:内存就像你的办公桌,交换空间就像档案柜。swappiness=0 就是尽量把文件放在桌上,方便取用;swappiness=100 就是把文件尽快移到档案柜里,腾出桌面空间。
49. 什么是内核空间和用户空间?
- 内核空间:操作系统内核运行的区域,有最高权限,可以访问所有硬件资源。
- 用户空间:普通程序运行的区域,权限有限,不能直接访问硬件资源。
打个比方:内核空间就像是政府高层,可以接触和操作所有国家资源;用户空间就像普通市民,只能使用政府公开的资源。
50. 如何在Linux中查看系统日志?
可以用命令 dmesg
查看内核日志,用 journalctl
查看系统日志。
打个比方:查看系统日志就像翻阅日记,能看到系统每天发生了什么事,哪些程序出错了。
51. 如何在 Linux 中查找文件?
使用 find
命令,例如 find /home -name filename
。就像在你的房子里搜索某个特定的东西。
52. 如何查看当前正在运行的进程?
使用 ps
或 top
命令。就像查看你电脑当前有哪些程序在运行。
53. 如何安装软件包?
使用 apt-get
或 yum
等包管理工具,例如 sudo apt-get install package_name
。就像从网上下载并安装一个应用程序。
54. 如何查看磁盘使用情况?
使用 df
命令,例如 df -h
。就像查看你电脑的硬盘剩余空间。
55. 如何创建和解压缩 tar.gz 文件?
- 创建:
tar -czvf filename.tar.gz /path/to/directory
- 解压缩:
tar -xzvf filename.tar.gz
就像把一堆文件打包成一个压缩包,或把压缩包解开。