一、磁盘空间不足是因为什么原因?
分为两种情况,一种是inode数量耗尽,一种是block占满了。block占满举例:500G硬盘存放了600G的影片,直接耗尽所有block;inode耗尽举例:每创建一个文件便会占用一个inode,当文件足够多并且小的时候,inode先于block耗尽,导致磁盘看起来空间充足,但是却提示磁盘空间不够。
二、请描述软硬链接的区别?
用下列图片做简要说明
硬链接是与源文件拥有同一个inode节点号,删除其中一个并不会影响另一个文件,软链接是指向源文件,若源文件不存在,软链接就失效了。
三、为什么要使用软链接?
1、安装软件:/application/nginx-1.10
过半年:/application/nginx-1.20
导致一个问题,工作中,开发等引用/application/nginx-1.10路径
安装件:/application/nginx1.10====》/application/nginx(让开发用)
/application/nginx-1.20==》/application/nginx(让开发用)
2、/etc/对应的分区满了,没办法放很多文件,但是程序还想通过/etc/目录访问文件,此时我们可以把文件放入/opt/test下,然后做一个到/etc/test的软链接 ,代码如下
1. mkdir /opt/test
2. touch /opt/test/{1..3}.txt
3. ln -s /opt/test /etc/test
4. ls /etc/test
1.txt 2.txt 3.txt
四、请描述linux系统删除文件的原理?
1、静态文件:没有进程或程序正在访问的文件
文件名与硬链接断开,即硬链接数为0
2、动态文件:有程序或进程访问的文件
满足两个原理:
a、所有的硬链接删除,即为i link为0
b、所有的进程调度都要停止,即为i count为0
五、简述程序,进程,守护进程之间的区别
程序:存储在磁盘上,静态
进程:电脑中运行着的程序,存储在内存里,动态
守护进程:为处理某一项任务,持续不断运行着的程序
六、简述GNU,GPL名词含义
GNU:自由,免费,源代码开放,开发了很多项目组件:gcc,bash,gawk,emacs
GPL:通用公共许可,所有人有权取得,修改,发布,传播软件的自由,但必须要把修改的源代码发布出来
七、在定时任务中No space left on device出现的原因是什么?
这是磁盘满的报错,原因是inode占满了。
因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件,邮件服务器postfix服务默认不开,这些系统发的邮件就会堆在临时目录(大量小文件存在),Centos 6是在/var/spool/clientmqueue/中,Centos 7是在/var/spool/postfix/maildrop/中
预防方法:
- 在脚本中的命令结尾加上&>/dev/null
- 加入定时清理任务,find /var/spool/clientmqueue/ -type f -mtime +30|xargs rm -rf加入定时任务,每周处理一次,若是Centos 7,则处理的路径为/var/spool/postfix/maildrop/。
八、为什么程序通过手动可以执行,但是放在定时任务里不执行?
定时任务在执行脚本的时候,多数情况没办法加载环境变量,特别是/etc/profile。登录后怎么操作都对,但是放到定时任务不行。例如写tomcat重启的时候,是因为环境变量没有重新定义导致的,因为定时任务是非登录shell,一般不会加载/etc/profile这样的文件,所以环境变量加载不了,在脚本中重新定义就可以,使用export重新声明下该变量。
九、书写定时任务的规范
十、为什么默认shell就是/bin.bash,为什么默认的家目录就在home下,为什么默认的家目录/home/用户名下面有很多隐藏文件,从哪里来的?
以上都与/etc/default/useradd文件配置有关,这是useradd命令的配置文件,下为/etc/default/useradd文件的内容。可以用useradd -D 修改,例如修改shell解释器,useradd -D -s /bin/sh,也可以用vim直接进去修改。
十一、请描述Centos6和Centos7的启动过程
下图为Centos6的启动过程:
下图为Centos7的启动过程:
1、BIOS自检
BIOS(Basic Input / Output System),又称基本输入输出系统,是操作系统输入输出管理系统的一部分。
BIOS两个阶段所做的详细工作如下:
步骤1:上电自检POST(Power-on self test),主要负责检测系统外围关键设备(如:CPU、存、显卡、I/O、键盘鼠标等)是否正常。例如,最常见的是内存松动的情况,BIOS自检阶段会报错,系统就无法启动起来;
步骤2:步骤1成功后,便会执行一段小程序用来枚举本地设备并对其初始化。这一步主要是根据我们在BIOS中设置的系统启动顺序来搜索用于启动系统的驱动器,如硬盘、光盘、U盘、软盘和网络等。我们以硬盘启动为例,BIOS此时去读取硬盘驱动器的第一个扇区(MBR,512字节),然后执行里面的代码。实际上这里BIOS并不关心启动设备第一个扇区中是什么内容,它只是负责读取该扇区内容、并执行。
至此,BIOS的任务就完成了,此后将系统启动的控制权移交到MBR部分的代码。