Linux 基础篇

1: 描述 Linux 运行级别 0-6 的各自含义

0:关机模式
1:单用户模式 <== 破解 root 密码
2:无网络支持的多用户模式
3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有网络支持的 X‐windows 支持多用户模式(桌面)
6: 重新引导系统,即重启

2: 描述 Linux 系统从开机到登陆界面的启动过程

1. 开机 BIOS 自检,加载硬盘。
2. 读取 MBR,MBR 引导。
3. grub 引导菜单 (Boot Loader)。
4. 加载内核 kernel。
5. 启动 init 进程,依据 inittab 文件设定运行级别
6. init 进程,执行 rc.sysinit 文件。
7. 启动内核模块,执行不同级别的脚本程序。
8. 执行 /etc/rc.d/rc.local
9. 启动 mingetty,进入系统登陆界面。

3: 描述 Linux 下软链接和硬链接的区别

在 Linux 系统中,链接分为两种,一种是硬链接 (Hard link),另一种称为符号链接或软链接 (Symbolic Link)。
1. 默认不带参数的情况下,ln 创建的是硬链接,带 ‐s 参数的 ln 命令创建的是软链接。
2. 硬链接文件与源文件的 inode 节点号相同,而软链接文件的 inode 节点号,与源文件不同,
3. ln 命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。
4. 删除软链接文件,对源文件和硬链接文件无任何影响。
5. 删除文件的硬链接文件,对源文件及软链接文件无任何影响。
6. 删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
7. 同时删除源文件及其硬链接文件,整个文件才会被真正的删除。
8. 很多硬件设备的快照功能,使用的就是类似硬链接的原理。
9. 软链接可以跨文件系统,硬链接不可以跨文件系统。

4: 如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?

1. 首先确定物理链路是否联通正常。
2. 查看本机 IP,路由,DNS 的设置情况是否达标。
3. telnet 检查服务器的 WEB 有没有开启以及防火墙是否阻拦。
4. ping 一下网关,进行最基础的检查,通了,表示能够到达服务器。
5. 测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。
6. 测试 ping 公网 ip 的通常情况(记住几个外部 IP),
7. 测试 DNS 的通畅,ping 对应 IP。
8. 通过以上检查后,还在网管的路由器上进行检查。

5: 网站打开慢,请给出排查方法,如是数据库慢导致,如何排查并解决,请分析并举例?

1. 可以使用 top free 等命令分析系统性能等方面的问题
2. 如是因为数据库的原因造成的,就需要查看慢查询日志去查找并分析问题所在

6: 如何选择 Linux 操作系统版本?

一般来讲,桌面用户首选 Ubuntu;服务器首选 RHEL 或 CentOS,两者中首选 CentOS。
根据具体要求:
1. 安全性要求较高,则选择 Debian 或者 FreeBSD。
2. 需要使用数据库高级服务和电子邮件网络应用的用户可以选择 SUSE。
3. 想要新技术新功能功能可以选择 Feddora,Feddora 是 RHEL 和 CentOS 的一个测试版和预发布版本。
4. 根据现有状况,绝大多数互联网公司选择 CentOS。现在比较常用的是 6 系列,现在市场占有大概一半左右。另外的原因是 CentOS 更侧重服务器领域,并且无版权约束。

7: 生产场景如何对 linux 系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:
1. 单机服务器:如 8G 内存,300G 硬盘
分区:/boot 100‐200M,swap 16G,内存大小 8G*2,/ 80G,/var 20G(也可不分),/data 180G(存放 web 及 db 数据)
优点:数据盘和系统盘分开,有利于出问题时维护。
RAID 方案:视数据及性能要求,一般可采用 raid5 折中。

2. 负载均衡器(如 LVS 等)
分区:/boot 100‐200M,swap 内存的 1‐2 倍,/
优点:简单方便,只做转发数据量很少。
RAID 方案:数据量小,重要性高,可采用 RAID1

3. 负载均衡下的 RS server
分区:/boot 100‐200M,swap 内存的 1‐2 倍,/
优点:简单方便,因为有多机,对数据要求低。
RAID 方案:数据量大,重要性不高,有性能要求,数据要求低,可采用 RAID0

4. 数据库服务器 mysql 及 oracle 如 16/32G 内存
分区:/boot 100‐200M,swap 16G,内存的 1 倍,/ 100G,/data 剩余(存放 db 数据)
优点:数据盘和系统盘分开,有利于出问题时维护,及保持数据完整。
RAID 方案:视数据及性能要求主库可采取 raid10/raid5,从库可采用 raid0 提高性能(读写分离的情况下。)

5. 存储服务器
分区:/boot 100‐200M,swap 内存的 1‐2 倍,/ 100G,/data (存放数据)
优点:此服务器不要分区太多。只做备份,性能要求低。容量要大。
RAID 方案:可采取 sata 盘,raid5

6. 共享存储服务器(如 NFS)
分区:/boot 100‐200M,swap 内存的 1‐2 倍,/ 100G,/data (存放数据)
优点:此服务器不要分区太多。NFS 共享比存储多的要求就是性能要求。
RAID 方案:视性能及访问要求可以 raid5,raid10 甚至 raid0 (要有高可用或双写方案)

7. 监控服务器cacti,nagios
分区:/boot 100‐200M,swap 内存的 1‐2 倍,/
优点:重要性一般,数据要求也一般。
RAID 方案:单盘或双盘 raid1 即可。三盘就 RAID5,看容量要求加盘即可。

8: 如何查看当前的 Linux 服务器的运行级别?

'who ‐r' 和 'runlevel' 命令可以用来查看当前的 Linux 服务器的运行级别。

9: 请简述如何查看 Linux 的系统版本

uname ‐a

10: 查看 Linux 运行多少时间

uptime

11: 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案

(1)在下午 4:50 删除 /abc 目录下的全部子目录和全部文件;
(2)从早 8:00 ~ 下午 6:00 每小时读取 /xyz 目录下 x1 文件中每行第一个域的全部数据加入到 /backup 目录下的 bak01.txt 文件内;
(3)每逢星期一下午 5:50 将 /data 目录下的所有目录和文件归档并压缩为 backup.tar.gz;
(1) crontab ‐e 50 16 * * * rm ‐rf /abc/
(2) * 8‐18/1 * * * awk '{print $1 > "/backup/bak01.txt"}' /xyz/x1
(3) 50 17 * * 1 tar ‐czf backup.tar.gz /data

12: 请在 3 月 23 号 21 点 18 分的时候,重启服务器

crontab ‐e 18 21 23 3 * init 6

13: 如何查看 Linux 的默认网关?

用 "route ‐n" 和 "netstat ‐nr" 命令,我们可以查看默认网关。
除了默认的网关信息,这两个命令还可以显示当前的路由表。

14: 如何查看一个文件夹 inode 数?

find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n

15: 写一个脚本查找最后创建时间是 3 天前,后缀是 *.log 的文件并删除

find / -name "*.log" -ctime +3 -exec rm -rf {} \;

16: 如果某文件夹下文件太多无法 ls 该如何解决?

ls ‐f

17: 如何用 tcpdump 嗅探 80 端口的访问看看谁最高?

tcpdump -i eth0 -tnn dst port 80 -c 100 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq

18: 如何查看 /var/log 目录下的文件数?

find /var/log/ -type f -print | wc -l

19: 如何查看 Linux 系统每个 ip 的连接数?

netstat -n | awk '/^tcp/ {print $5}' | awk -F':' '{print $1}' | sort | uniq -c | sort -rn

20: shell 下生成 32 位随机密码

cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

21: 统计出 apache 的 access.log 中访问量最多的 5 个 ip

cat access.log | awk '{print $1}' | sort | uniq -c | sort -n -r | head -5

22: 请用多种方式在 linux 系统中设置环境变量,并指出各种方式的区别。

1. 控制台中设置,不赞成这种方式,因为他只对当前的 shell 起作用,换一个 shell 设置就无效了:
PATH="PATH":/NEW_PATH  (关闭 shell Path 会还原为原来的 path)
2. 修改 /etc/profile 文件,如果你的计算机仅仅作为开发使用时推存使用这种方法,因为所有用户的 shell 都有权使用这个环境变量,可能会给系统带来安全性问题。这里是针对所有的用户的,所有的 shell 在 /etc/profile 的最下面添加: export PATH="$PATH:/NEW_PATH"
3. 修改 bashrc 文件,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一特定的用户,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的 .bashrc 文件就可以了。 在下面添加: Export PATH="$PATH:/NEW_PATH"

linuxbible运维宝典linux基础

我来吐槽

*

*