Linux和Shell 常见面试题

参考博客:linux的命令行操作和shell的区别

linux系统下可以在命令行进行操作,而shell是linux命令集的概称,是属于命令行的人机界面。
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。通常我们说的Shell都是Shell Script也就是Shell脚本(.sh文件)。
Shell相当于经过装饰的命令行,和命令行一样,都能操作linux。但是shell是面向过程的,相当于有了一定的逻辑和过程,而命令行只是单一的操作


Linux常用命令:

cd:切换目录
ls:显示指定工作目录下的内容,列出文件系统中的所有文件和目录
rm:删除
mv:移动文件
pwd:查看当前工作目录的完整路径
ps:显示命令运行的进程,并显示进程ID和其他一些相关数据
top:来查看系统进程,top也能显示系统内存。
free:查看系统内存
kill:终止进程
sudo:已其他身份来执行,预设的身份是root
vi/vim:使用vi编辑器
touch: 如果文件不存在的话,将会创建一个 0KB 的空文件
mkdir xxx:创建一个名为xxx的文件夹
cat:连接文件或标准输入并打印
grep:是一个过滤器,用于全局搜索正则表达式(在文件中查找字符串)
find:查找位置 文件名或目录名
env: 允许用户设置或打印环境变量


常见面试题:

1.什么是BASH?
回答: Bash是Unix shell和命令处理器。它是免费软件,可以代替Bourne Shell。这是一个解释后的未编译过程,也可以在终端窗口中运行。这使用户可以编写命令并引起动作。Bash能够从Shell脚本读取命令。

2.什么是Shell?
回答: Shell是一个命令解释器,充当用户和内核之间的接口。用户可以通过在Shell上编写程序,命令和脚本来与内核进行通信。它接受人类可读的命令,并将其转换为内核可理解的语言。

3. Linux中有几种类型的Shell?
回答:Shell脚本语言是弱类型语言(无需定义变量即可使用),Linux中主要有两大类shell:
一类是Bourne shell,另一类是C shell:

  1. Bourne shell包括Bourne shell(sh)、Korn shell(ksh)、Bourne Again Shell三种类型
  2. C shell包括csh、tcsh两种类型

补充:
查看系统默认的shell:echo $SHELL
查看系统支持的shell:cat/etc/shells

一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:#!/bin/bash#! /bin/sh
bash 与 sh 的区别 :sh 为 bash的软连接,大多数情况下,脚本使用#!/bin/bash#!/bin/sh是没有区别的,但更规范的写法是在脚本的开头使用 #!/bin/bash
2、在shell脚本中,跟在 # 后面的内容表示注释

4.发出命令时如何打开命令提示符?
回答:通过按CTRL + ALT + T或在菜单搜索栏中提供终端来启动终端。

5.解释Linux中的文件权限类型?
回答:每个文件或目录都具有3个权限:

  • Read 只可以读取该文件。
  • Write 可以写入文件或修改目录的文件。
  • Execute 影响用户执行文件或查看目录文件的能力。

6. Linux中的进程状态是什么?

回答: Linux中的五个过程状态。

新建/就绪:已创建一个新进程并准备运行。
正在运行:正在执行该进程。
阻止/等待:进程正在等待用户输入。
终止/完成:进程已完成执行或被操作系统终止。
僵尸:进程已删除,但仍在进程表中存在有关该进程的信息。

7. 解释Linux中的流程管理系统调用吗?

回答: Linux中的流程管理系统调用:

fork():用于创建新进程。
exec():执行新进程。
wait():等到进程执行。
exit():退出进程。
系统调用以获取进程ID:

getpid():查找唯一的进程ID。
getppid():查找唯一的父进程ID。

8为什么我们使用LINUX?
回答:

  • 高稳定性:非常稳定,不会导致崩溃,它可以像首次安装时一样快速运行。
  • 安全性:这是一台可靠的服务器,可以为用户提供高安全性。在系统上使用Linux很容易避免病毒和恶意软件。攻击者无法更改系统中的任何更改,除非该用户以root用户身份登录。
  • 易于操作: Linux易于操作,并且我们可以轻松地安装到系统上,因为Linux的所有变体都有自己的软件存储库。您可以单击几次以定期更新系统,也可以设置自动更新。
  • 硬件兼容性: Linux可以在任何硬件上使用,它没有任何硬件限制。它有效地使用了所有系统资源。
  • 开源:源代码可用,因为它位于免费和开源软件(FOSS)下。

9. 描述父子进程如何相互通信?
回答: 父进程通过使用管道,套接字,消息队列等与子进程进行通信。

10.什么是僵尸进程?
回答: 这是一个执行已完成但进程表中甚至存在信息的进程。由于子进程需要读取子进程的状态,因此发生在子进程中。一旦使用wait系统调用完成了该任务,则僵尸进程将从进程表中删除。这被称为僵尸进程。

11.什么是Linux中的top命令?
回答: top命令显示和更新排序的过程信息。使用此top命令来确定正在运行的进程以及它们消耗了多少内存和CPU。

12. Linux中的netstat命令是什么?
回答: Linux中的netstat命令显示网络状态。此netstat命令显示正在使用的网络端口及其传入连接。

13.在Linux中,lsof命令是什么?
回答:命令ls列出了与您的应用程序关联的打开文件。

14.在Linux中df命令是什么?
回答: 用户可以使用df命令对磁盘空间问题进行故障排除。此处df表示显示可用磁盘空间。

df命令示例:

df -h

15.在Linux中du命令是什么?
Linux中的Ans: du命令用于检索有关哪些文件使用目录中磁盘空间的更多详细信息。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程简介随着技术的飞速发展,经过多年的数据积累,各互联网公司已保存了海量的原始数据和各种业务数据,所以数据仓库技术是各大公司目前都需要着重发展投入的技术领域。数据仓库是面向分析的集成化数据环境,为企业所有决策制定过程,提供系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。二、课程内容本次精心打造的数仓项目的课程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,让你在掌握实战经验的同时能够打下坚实的理论基础。三、课程目标本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化率及漏斗分析,品牌复购率分析、订单表拉链表的设计等,让学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。四、课程亮点本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。
Linux Shell脚本是一种在Unix/Linux操作系统中编写的脚本语言,主要用于实现自动化任务和日常工作的脚本编写。以下是一些常见面试题: 1. 什么是Shell?它的作用是什么? Shell是一个命令行解释器,主要作用是与用户交互,接受用户输入的命令,并将其解释为计算机程序能够理解的语言,然后执行相应的操作。Shell还可以编写脚本程序,实现自动化的任务。 2. Shell脚本中的变量有哪些?如何进行赋值? 在Shell脚本中,我们可以使用以下三种类型的变量:系统变量、环境变量和自定义变量。进行赋值时,使用“=”号,比如name="Tom"。 3. 如何判断一个文件是否存在?如果不存在,如何创建一个空文件? 使用if语句来判断一个文件是否存在,如果不存在则使用touch命令来创建一个空文件,示例代码如下: ``` if [ ! -f filename ]; then touch filename fi ``` 4. 如何在Shell脚本中使用循环? Shell脚本中可以使用for和while循环,示例代码如下: ``` # for循环 for file in $(ls *.txt); do echo $file done # while循环 count=0 while [ $count -lt 10 ]; do echo $count count=$((count+1)) done ``` 5. 如何从Shell脚本中读取命令行参数? 通过$1、$2、$3...来读取命令行参数,示例代码如下: ``` #!/bin/bash echo "The first argument is $1" echo "The second argument is $2" echo "The third argument is $3" ``` 6. 如何调试Shell脚本? 可以使用set -x命令开启调试模式,在执行脚本时输出每一条命令和执行结果,示例代码如下: ``` #!/bin/bash set -x echo "Hello, World!" set +x ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值