Java面试之Linux篇(offer 拿来吧你)

102 阅读8分钟

1、Linux介绍

linux是一种自由和开放源码的类Unix操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目(c/c++/php/python/java/go)都会部署到Linux/unix系统上。

常见的操作系统(windows、IOS、Android、 MacOS, Linux, Unix)

2、Unix和Linux有什么区别?

开源性: Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
跨平台性: Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。
可视化界面: Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。
硬件环境: Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。
用户群体:Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。
相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!

3、什么是 Linux 内核?

Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
系统内存管理
应用程序管理
硬件设备管理
文件系统管理

4、Linux的目录结构

linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。

常用的目录
/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。

5、Linux 系统启动过程

linux系统启动过程主要分为5个阶段:内核的引导、运行 init、系统初始化、建立终端 、用户登录系统。

内核的引导 :当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入/boot 目录下的内核文件。

运行init: init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab

运行级别 : Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

系统初始化 : 它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
建立终端:init接下来会打开6个终端,以便用户登录系统。
用户登录系统 :(1)命令行登录(2)ssh登录(3)图形界面登录

6、常用的Linux命令

6.1 文件基本属性命令

使用以下两个命令来修改文件或目录的所属用户与权限:

chown (change owner) : 修改所属用户与组。
-c 显示更改的部分的信息 chown -c :mail t.log 改变文件群组
-R 处理指定目录及子目录 chown -cR mail: test/ 改变文件夹及子文件目录属主及属组为 mail

chmod (change mode) : 修改用户的权限。
常用参数
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件
权限范围
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
-:删除权限,用数字0表示
s :特殊权限

chmod 实例: chmod a+x t.log 所有用户可执行权限:a+x
chmod u=r t.log 撤销所有的权限 +赋予可读权限:u=r

6.2 文件与目录管理

ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:makedirectory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 删除文件或目录
mv(英文全拼:movefile): 移动文件与目录,或修改文件与目录的名称

6.3 Linux 用户和用户组管理

Linux系统用户账号的管理:

useradd 选项 用户名 添加新的用户账号使用useradd命令
userdel 选项 用户名 userdel 选项 用户名
usermod 选项 用户名 修改已有用户的信息使用usermod命令
passwd 选项 用户名 指定和修改用户口令的Shell命令是passwd
Linux系统用户组的管理

groupadd 选项 用户组 增加一个新的用户组使用groupadd命令
groupdel 用户组 如果要删除一个已有的用户组,使用groupdel命令
groupmod 选项 用户组 修改用户组的属性使用groupmod命令
Linux 磁盘管理

df(英文全称:disk free):列出文件系统的整体磁盘使用量
du(英文全称:disk used):检查磁盘空间使用量
fdisk:用于磁盘分区
文档编辑命令

grep 命令:强大的文本搜索命令 grep [option] pattern file|dir
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹

还有很多常用命令,就简单的列举一下,其他命令,可以直接查询这个链接 Linux 命令大全

find 命令 : 用于在文件树中查找文件,并作出相应的处理。
head 命令 : head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行
less 命令 : 使用 less 可以随意浏览文件,在查看之前不会加载整个文件
locate 命令 : locate 与 find 命令相似,可以使用如 *、? 等进行正则匹配查找
more 命令 : more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示
vim 命令 : 文本编辑器

7、软链接与硬链接的区别

软链接
1.以路径的形式存在。类似于Windows操作系统中的快捷方式
2.可以 跨文件系统 ,硬链接不可以
3.可以对一个不存在的文件名进行链接
4.可以对目录进行链接

硬链接
1.以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.只有在同一个文件系统中才能创建

8、用户进程间通信主要哪几种方式?
1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
2、信号(signal) 。
3、消息队列。
4、共享内存。
5、信号量。
6、套接字(socket) 。