• 面试:linux相关


    文章目录

    什么是 Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX和 Unix 的多用户、多任务、支持多线程和多 CPU的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议。它支持32 位和64 位硬件。Linux继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    Unix 和 Linux 有什么区别?

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

    什么是 Linux 内核?

    Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

    • 系统内存管理
    • 应用程序管理
    • 硬件设备管理
    • 文件系统管理

    Linux 的基本组件是什么?

    就像任何其他典型的操作系统一样,Linux 拥有所有这些组件:内核,shell 和 GUI,系统实用程序和应用程序。
    Linux 比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。

    Linux 的体系结构

    从大的方面讲,Linux 体系结构可以分为两块:

    • 用户空间(User Space):用户空间又包括用户的应用程序(User Applications)、C 库(C Library)。
    • 内核空间(Kernel Space):内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture - Dependent Kernel Code)。

    为什么 Linux 体系结构要分为用户空间和内核空间的原因?

    • 现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
    • Linux 从 CPU 的⻆度出发,为了保护内核的安全,把系统分成了两部分。用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:1)系统调用;2)硬件中断。

    BASH 和 DOS 之间的基本区别是什么?

    BASH和 DOS控制台之间的主要区别在于3 个方面:

    • BASH命令区分大小写,而 DOS命令则不区分;
    • 在 BASH下,/ character 是目录分隔符,\作为转义字符。在 DOS下,/用作命令参数分隔符,\是目录分隔符
    • DOS遵循命名文件中的约定,即8 个字符的文件名后跟一个点,扩展名为3 个字符。BASH没有遵循这样的惯例。

    Linux 开机启动过程?

    了解即可

    • 主机加电自检,加载 BIOS 硬件信息
    • 读取 MBR 的引导文件(GRUB、LILO)
    • 引导 Linux 内核
    • 运行第一个进程 init (进程号永远为1 )
    • 进入相应的运行级别
    • 运行终端,输入用户名和密码

    Linux 系统缺省的运行级别?

    • 关机
    • 单机用户模式
    • 字符界面的多用户模式(不支持网络)
    • 字符界面的多用户模式
    • 未分配使用
    • 图形界面的多用户模式
    • 重启

    Linux 使用的进程间通信方式?

    • 管道(pipe)、流管道(s_pipe)、有名管道(FIFO)
    • 信号(signal)
    • 消息队列
    • 共享内存
    • 信号量
    • 套接字(socket)

    Linux 有哪些系统日志文件?

    比较重要的是/var/log/messages 日志文件。
    该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。另外,如果胖友的系统里有 ELK 日志集中收集,它也会被收集进去。

    Linux 系统安装多个桌面环境有帮助吗?

    通常,一个桌面环境,如 KDE或 Gnome,足以在没有问题的情况下运行。尽管系统允许从一个环境切换到另一个环境,但这对用户来说都是优先考虑的问题。有些程序在一个环境中工作而在另一个环境中无法工作,因此它也可以被视为选择使用哪个环境的一个因素。

    什么是交换空间?

    交换空间是 Linux 使用的一定空间,用于临时保存一些并发运行的程序。当 RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况。

    什么是 Root 帐户

    root 帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装 Linux 时都是默认帐户。

    什么是 LILO?

    LILO是 Linux 的引导加载程序。它主要用于将 Linux 操作系统加载到主内存中,以便它可以开始运行。

    什么是 BASH?

    BASH是 Bourne Again SHell 的缩写。它由 Steve Bourne 编写,作为原始 Bourne Shell(由/ bin / sh 表示)的替代品。它结合了原始版本的 Bourne Shell 的所有功能,以及其他功能,使其更容易使用。从那以后,它已被改编为运行 Linux 的大多数系统的默认 shell。

    什么是 CLI?

    命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面CUI)。
    通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。

    什么是 GUI?

    图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。

    开源的优势是什么?

    开源允许你将软件(包括源代码)免费分发给任何感兴趣的人。然后,人们可以添加功能,甚至可以调试和更正源代码中的错误。它们甚至可以让它运行得更好,然后再次自由地重新分配这些增强的源代码。这最终使社区中的每个人受益。

    GNU 项目的重要性是什么?

    这种所谓的自由软件运动具有多种优势,例如可以自由地运行程序以及根据你的需要自由学习和修改程序。它还允许你将软件副本重新分发给其他人,以及自由改进软件并将其发布给公众。

    绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

    绝对路径:如/etc/init.d
    当前目录和上层目录:./ …/
    主目录:~/
    切换目录:cd

    怎么查看当前进程?怎么执行退出?怎么查看当前路径?

    查看当前进程:ps
    执行退出:exit
    查看当前路径:pwd

    怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查

    看指定帮助用什么命令?
    清屏:clear
    退出当前命令:ctrl+c 彻底退出
    执行睡眠 :ctrl+z 挂起当前进程fg 恢复后台
    查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名
    查看指定帮助:如 man adduser 这个很全 而且有例子;adduser --help 这个告诉你一些常用参数;info adduesr;

    Ls 命令执行什么功能?可以带哪些参数,有什么区别?

    ls 执行的功能:列出指定目录中的目录,以及文件
    哪些参数以及区别:a 所有文件l 详细信息,包括大小字节数,可读可写可执行的权限等

    建立软链接(快捷方式),以及硬链接的命令。

    软链接:ln -s slink source
    硬链接:ln link source

    目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?

    创建目录:mkdir
    创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
    复制文件:cp 7. 文件权限修改用什么命令?格式是怎么样的?
    文件权限修改:chmod
    格式如下:
    $ chmod u+x file 给 file 的属主增加执行权限
    $ chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
    $ chmod u=rwx,g=rx,o=x file 上例的另一种形式
    $ chmod =r file 为所有用户分配读权限
    $ chmod 444 file 同上例
    $ chmod a-wx,a+r file同上例
    $ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限

    查看文件内容有哪些命令可以使用?

    vi 文件名 #编辑方式查看,可修改
    cat 文件名 #显示全部文件内容
    more 文件名 #分⻚显示文件内容
    less 文件名 #与 more 相似,更好的是可以往前翻⻚
    tail 文件名 #仅查看尾部,还可以指定行数
    head 文件名 #仅查看头部,还可以指定行数

    随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?

    写文件命令:vi
    向屏幕输出带空格的字符串:echo hello world

    终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?

    终端 /dev/tty
    黑洞文件 /dev/null

    移动文件用哪个命令?改名用哪个命令?

    mv mv

    复制文件用哪个命令?如果需要连同文件夹一块复制呢?如果需要有提示功能呢?

    cp
    cp -r
    ????

    删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

    rm
    rm -r
    rmdir

    Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

    “?”可替代单个字符。
    “*”可替代任意多个字符。
    方括号“[charset]”可替代 charset 集中的任何单个字符,如[a-z],[abABC]

    用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)

    wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。

    Grep 命令有什么用?如何忽略大小写?如何查找不含该串的行?

    是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
    grep [stringSTRING] filename grep [^string] filename

    Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

    (1)、不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
    (2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;
    当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。
    “正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。
    (3)、就绪状态:在 run_queue 队列里的状态
    (4)、运行状态:在 run_queue 队列里的状态
    (5)、可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起
    (6)、zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉
    (7)、退出状态
    D 不可中断 Uninterruptible(usually IO)
    R 正在运行,或在队列中的进程
    S 处于休眠状态
    T 停止或被追踪
    Z 僵尸进程
    W 进入内存交换(从内核 2.6 开始无效)
    X 死掉的进程

    怎么使一个命令在后台运行?

    一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)

    利用 ps 怎么显示所有的进程? 怎么利用 ps 查看指定进程的信息?

    ps -ef (system v 输出)
    ps -aux bsd 格式输出
    ps -ef | grep pid

    哪个命令专⻔用来查看后台任务?

    job -l

    把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

    把后台任务调到前台执行 fg
    把停下的后台任务在后台执行起来 bg

    终止进程用什么命令? 带什么参数?

    kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
    kill-9 pid

    怎么查看系统支持的所有信号?

    kill -l

    搜索文件用什么命令? 格式是怎么样的?

    find <指定目录> <指定条件> <指定动作>
    whereis 加参数与文件名
    locate 只加文件名
    find 直接搜索磁盘,较慢。
    find / -name “string*”

    查看当前谁在使用该主机用什么命令? 查找自己所在的终端信息用什么命令?

    查找自己所在的终端信息:who am i
    查看当前谁在使用该主机:who

    使用什么命令查看用过的命令列表?

    history

    使用什么命令查看磁盘使用空间?空闲空间呢?

    df -hl
    文件系统 容量 已用 可用 已用% 挂载点
    Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
    /dev/hda1 494M 19M 450M 4% /boot

    使用什么命令查看网络是否连通?

    netstat

    使用什么命令查看 ip 地址及接口信息?

    ifconfig

    查看各类环境变量用什么命令?

    查看所有 env
    查看某个,如 home:env $HOME

    通过什么命令指定命令提示符?

    \u:显示当前用户账号
    \h:显示当前主机名
    \W:只显示当前路径最后一个目录
    \w:显示当前绝对路径(当前用户目录会以~代替)
    $PWD:显示当前全路径
    :显示命令行’ :显示命令行’ :显示命令行'或者’#'符号
    #:下达的第几个命令
    \d:代表日期,格式为week day month date,例如:“MonAug1”
    \t:显示时间为24小时格式,如:HH:MM:SS
    \T:显示时间为12小时格式
    \A:显示时间为24小时格式:HH:MM
    \v:BASH的版本信息 如export PS1=’[\u@\h\w#]$‘

    查找命令的可执行文件是去哪查找的? 怎么对其进行设置及添加?

    whereis [-bfmsu][-B <目录>…][-M <目录>…][-S <目录>…][文件…]
    补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码,二进制文件,或是帮助文件。
    -b 只查找二进制文件。
    -B<目录> 只在设置的目录下查找二进制文件。-f 不显示文件名前的路径名称。
    -m 只查找说明文件。
    -M<目录> 只在设置的目录下查找说明文件。-s 只查找原始代码文件。
    -S<目录> 只在设置的目录下查找原始代码文件。-u 查找不包含指定类型的文件。
    which 指令会在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
    -n 指定文件名⻓度,指定的⻓度必须大于或等于所有文件中最⻓的文件名。
    -p 与-n 参数相同,但此处的包括了文件的路径。-w 指定输出时栏位的宽度。
    -V 显示版本信息

    通过什么命令查找执行命令?

    which 只能查可执行文件
    whereis 只能查二进制文件、说明文档,源文件等

    怎么对命令进行取别名?

    alias la=‘ls -a’

    du 和 df 的定义,以及区别?

    du 显示目录或文件的大小
    df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可⻅的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。
    df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。

    awk 详解。

    awk ‘{pattern + action}’ {filenames}
    #cat /etc/passwd |awk -F ‘:’ ‘{print $1"\t"$7}’ //-F 的意思是以’:'分隔 root /bin/bash
    daemon /bin/sh 搜索/etc/passwd 有 root 关键字的所有行
    #awk -F: ‘/root/’ /etc/passwd root❌ 0:0:root:/root:/bin/bash

    当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢?

    可以使用bind命令,bind可以很方便地在shell中实现宏或按键的绑定。
    在进行按键绑定的时候,我们需要先获取到绑定按键对应的字符序列。
    比如获取F12的字符序列获取方法如下:先按下Ctrl+V,然后按下F12 .我们就可以得到F12的字符序列 ^[[24~。
    接着使用bind进行绑定。
    [root@localhost ~]# bind ‘”\e[24~":“date”’
    注意:相同的按键在不同的终端或终端模拟器下可能会产生不同的字符序列。
    【附】也可以使用showkey -a命令查看按键对应的字符序列。

    如果一个linux新手想要知道当前系统支持的所有命令的列表,他需要怎么做?

    使用命令compgen -c,可以打印出所有支持的命令列表。
    [root@localhost ~]$ compgen -c
    l.
    ll
    ls
    which
    if
    then
    else
    elif
    fi
    case
    esac
    for
    select
    while
    until
    do
    done

    如果你的助手想要打印出当前的目录栈,你会建议他怎么做?

    使用Linux 命令dirs可以将当前的目录栈打印出来。
    [root@localhost ~]# dirs
    /usr/share/X11
    【附】:目录栈通过pushd popd 来操作。

    你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?

    使用linux命令 ’disown -r ’可以将所有正在运行的进程移除。

    bash shell 中的hash 命令有什么作用?

    linux命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径, 用该命令可以打印出你所使用过的命令以及执行的次数。
    [root@localhost ~]# hash
    hits command
    2 /bin/ls
    2 /bin/su

    哪一个bash内置命令能够进行数学运算。

    bash shell 的内置命令let 可以进行整型数的数学运算。
    #! /bin/bash


    let c=a+b

    怎样一⻚一⻚地查看一个大文件的内容呢?

    通过管道将命令”cat file_name.txt” 和 ’more’ 连接在一起可以实现这个需要.
    [root@localhost ~]# cat file_name.txt | more

    数据字典属于哪一个用户的?

    数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的

    怎样查看一个linux命令的概要与用法?假设你在/bin目录中偶然看到一个你从没⻅过的的命令,怎样才能知道它的作用和用法呢?

    使用命令whatis 可以先出显示出这个命令的用法简要,比如,你可以使用whatis zcat 去查看‘zcat’的介绍以及使用简要。
    [root@localhost ~]# whatis zcat
    zcat [gzip] (1) – compress or expand files

    使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?

    使用命令repquota 能够显示出一个文件系统的配额信息
    【附】只有root用户才能够查看其它用户的配额。

  • 相关阅读:
    图像处理:Python使用OpenCV进行图像锐化 (非锐化掩模、拉普拉斯滤波器)
    香港学界呼吁RWA“在港先发”,构建基于港元稳定币的Web3生态!
    AI学习笔记之六:无监督学习如何帮助人类挖掘数据金矿和防范网络欺诈
    零基础入门推荐系统 - 新闻推荐 - 实操1
    压力测试caliper/java-sdk
    Chapter8:控制系统状态空间分析
    Word文档怎样翻译?Word文档翻译方法大分享
    Android配置变体
    ASP.NET Core - 缓存之分布式缓存
    下一代云计算架构,VMware要占“半壁江山”
  • 原文地址:https://blog.csdn.net/u011305680/article/details/134393172