Linux面试题总结

1.线程和进程的概念

进程:进程是一个具有独立功能的程序在一个数据集合上的一次动态执行的过程。

线程:线程是进程的实体,是CPU调度和分配的基本单位,是比进程更小的能独立运行的基本单位。

进程        线程

资源分配的最小单位

系统调度的最小单位
有独立的地址空间无独立的地址空间,线程可以共享本进程的地址空间
进程间相互不影响同一进程间的线程同步或互斥,不同进程的线程可以并发运行
一个进程含有一个或多个线程一个线程只属于一个进程
创建和转换进程时间消耗巨大创建和转换线程时间消耗较小

2.常用的Linux命令

1)cd 切换目录:

        /表示根目录

        ~表示家目录,root用户的家目录是/root,普通用户的家目录在/home下,如51testing的家目录就在/home/51testing

        .表示当前目录,如果需要运行当前目录下的可执行文件: ./文件名

        ..表示上级目录

2)ls查看当前目录的内容

        ls -a 查看当前目录中的所有文件,包括隐藏文件。linux系统中的隐藏文件名称以.开头

        ls -l 查看当前目录中文件的详细信息

        ls -la 查看所有文件的详细信息

3)pwd查看当前所在的路径

4)logout注销,shutdown关机,reboot重启

        logout:注销当前登陆的用户

        shutdown 时间 在给定时间关机

        reboot:立刻重启

        shutdown now:立刻关机

        shutdown  hh:mm,指定在几点几分关机

        shutdown +n,指定在n分钟之后关机

        shutdown -r 时间:指定时间重启

5)systemctl对系统服务进行操作

        systemctl 操作 服务

        操作:

        start 启动

        restart 重启

        stop 关闭

        status 状态

        enable 开机启动

        disable 开机不启动

        reload

        常见服务:

        network 网络

        firewalld 防火墙

        mysqld mysql 数据库服务

        vsftpd ftp 服务

        httpd http 服务

  • 目录管理命令

  • 1.mkdir创建目录
    •         mkdir 目录名称:创建一个目录

              mkdir -p 目录1/目录2/目录3/......:创建多级目录

    • 2.mv移动/重命名目录

      •         mv 原目录名 新目录名:将原目录移动到目标目录,或在当前目录下给目录重命名

  • 3.rmdir删除空目录

    rmdir 目录名称:删除一个空目录

    • 如果目录中有内容则不能被rmdir删除,需要使用另一个删除命令rm

    • 文件操作命令

      • 1.touch创建文件

                touch 文件名:创建一个空白的文件

                touch 文件1 文件2 文件3 ......:同时创建多个文件

                如果文件名已经存在,则会访问一次该文件,更新文件的访问时间

      • 2.vi编辑器

        vi 文件名:打开vi编辑器,创建一个文件

        vi 文件1 文件2 文件3 ......:同时打开或创建多个文件

      • vi编辑器有3种模式:

        一般模式,也叫作普通模式或命令模式。是进入vi编辑器的默认模式,可以在该模式下输入一些命令访问和操作文件的内容。

        底线命令模式。在一般模式输入一些特殊符号,如:?/等,这些符号会出现在屏幕的最下方,之后可以输入一些命令。删除底线的命令或者按esc键可以回到一般模式。

        编辑模式。在一般模式下输入i或a可以进入编辑模式,编辑模式可以对文件内容进行编辑,按esc退出编辑模式回到一般模式。

        保存和退出的操作是在底线命令模式下完成的:

        :w 保存

        :q 退出

        :wq 保存退出

        :q! 强制退出

      • 如果同时打开多个文件进行编辑,使用:n切换到下一个文件,使用:N切换到上一个文件

        vi-r 文件名:如果上次打开文件,系统异常退出,使用-r参数恢复文件

        vi+n 文件名:打开文件,并且将光标放置在第n行的行首

        vi+ 文件名:打开文件,并且将光标放置在最后一行的行首

      • ctrl+u 按照屏幕大小,向上翻滚半个屏幕

        ctrl+d 按照屏幕大小,向下翻滚半个屏幕

        ctrl+b 按照屏幕大小,向上翻滚一个屏幕

        ctrl+f 按照屏幕大小,向下翻滚一个屏幕

      • 底线命令模式下进行查找和替换:

        /str 从上到下查找关键字,按n切换到下一个,N切换到上一个

        ?str 从下到上查找关键字,按N切换到下一个,n切换到上一个

        :s/str1/str2/g 在光标所在行查找str1 替换为str2

        :n1,n2s/str1/str2/g 从文件的第n1行到第n2行查找str1 替换为str2

        :%s/str1/str2/g 在整个文件中查找str1替换为str2

      • 命令模式下复制和粘贴操作:

        p 将复制的内容粘贴到光标所在位置

        yw 复制一个单词

        nyw 复制n个单词

        yy 复制一行

        nyy 复制n行

        dw 删除一个单词

        dd 删除一行

      • 3.grep查找命令

      • grep ‘关键字’文件名:在文件中搜索关键字,返回包含关键字的行

        grep -i ‘关键字’文件名:搜索关键字时不区分大小写

        grep -n ‘关键字’文件名:返回包含关键字的行以及行号

        grep -v ‘关键字’文件名:反向搜索不包含关键字的行

        grep ‘关键字’文件1 文件2 ......:在多个文件中搜索关键字

        ‘\<关键字’:搜索以关键字开头的单词

        ‘关键字\>’:搜索以关键字结尾的单词

        ‘\<关键字\>’:搜索只包含关键字的单词

        []范围匹配:

        []中定义某个字符的取值范围

      • [a-z] 匹配所有的小写字母

      • [A-Z] 匹配所有的大写字母

      • [0-9] 匹配所有的数字

      • 通配符:

        . 代表一个任意字符

        * 代表任意个前面的字符,*前面的字符重复任意次

        .* 代表任意个任意字符

        定义重复的次数:

        x\{n\}’ 表示x重复n次

        x\{n,\}’ 表示x至少重复n次

        x\{n,m\}’ 表示x重复n到m次

        |:管道符,用来连接多个命令,将上一个命令的输出结果,以文本的形式作为下一个命令的输入数据

        查找既包含abc又包含xyz的行,‘abc.*xyz’只能搜索到abc在前,xyz在后的行

        grep‘abc’文件名 | grep‘xyz’

      • 4.find文件查找命令

      • find -name‘文件名’:按照文件名查找文件

        文件名必须精确匹配,也可以使用模糊匹配的方式

        []范围匹配

        *代表任意个任意字符

        -maxdepth n 定义搜索目录层级最多到n级

        find -user 用户名:按照文件的所属用户查找文件

        find -group 组名:按照文件的所属组查找文件

        按照用户和用户组查找文件,必须精确匹配用户名和组名

        find -nouser:查找没有用户的文件

        find -nogroup:查找没有用户组的文件

        find -type x:按照文件类型进行查找,d代表目录,f代表普通文件,l代表链接文件

        -exec 连接两个命令,将上一个命令的执行结果,以文件的形式作为下一个命令的执行对象

        find 查找条件 -exec 命令 {}\;

      • 5.sort排序查看文件

      • sort文件名:按照文件每一行的首字母进行排序,显示排序过后的文件内容

      • 6.wc统计文件字数

      • wc 文件名:统计文件的行数,单词数,字节数

      • 7.cp拷贝命令

      • cp源文件 目标文件:将源文件拷贝到目标文件

        源文件和目标文件可以使用相对路径,定位也可以使用绝对路径定位。

        cp -r 源目录 目标目录:拷贝目录

        cp -s 源文件 目标文件:将源文件拷贝成一个链接文件(快捷方式)

        类似ln命令

        cp -d 链接文件 目标文件:只拷贝链接文件到目标文件,而不拷贝源文件

        如果拷贝链接文件不加其他参数,则默认拷贝的是源文件

        cp -u 源文件 目标文件:如果源文件比目标文件更新,

      • 8.mv剪切文件

      • mv 源文件 目标文件:移动文件

      • 9.rm删除文件

      • rm 文件名:删除文件

        rm -r 目录名称:删除目录

      • rm -f 文件名:删除文件时不提示

        rm -rf 目录名称:删除目录时不提示

      • 文件操作命令

        1.cat 命令

        cat 文件名:查看文件的内容

        cat 文件1 文件2 ······:显示多个文件的内容

        cat -n 文件名:查看文件内容和行号

        2.head 命令

        head 文件名:查看文件的前10行内容

        head -n 文件名:查看文件的前n行内容

        3.tail命令

        tail 文件名:查看文件的后10行内容

        tail -n 文件名:查看文件的后n行内容

        4.more命令

      • more 文件名:分页显示文件内容,按回车显示下一行,按空格显示下一页,按b返回上一页,按q退出。当内容浏览完成也会自动退出

      • more +m -n 文件名:从文件的第m行开始,每页显示n行数据

        5.diff命令

      • diff 文件1 文件2:返回文件2与文件1不一样的地方

      • 可以在课后了解一下diff命令的其他用法:-c,-u,-r,-N

      • 命令 > 文件名:将命令的执行结果作为文本,保存到一个文件中。如果文件已经存在则覆盖文件内容,如果文件不存在则新建文件

      • diff 文件1 文件2 > 文件3:将文件2和文件1不一样的地方放到文件3中

      • 此时,文件3就相当于是文件1的补丁文件,可以用来进行文件的更新,让文件1和文件2保持一致。

      • patch 文件1 文件3:将文件3作为补丁打给文件1

        6.file命令

      • file 文件名:查看文件的类型

        7.whereis命令

        whereis 命令名称:查看命令相关的文件存放的位置

        8.which命令

        which 命令名称:在系统环境变量设置的路径下查找可执行文件

      • 用户管理命令

        1.useradd命令

        useradd 用户名:添加一个用户

        用户创建成功后确认的方式:

      • id 用户名:可以查看用户的id信息
      • 进入/home目录,查看里面是否为用户创建了家目录
      • 创建了一个用户之后,如果没有特殊的说明,会默认创建一个跟用户名一样的用户组,并且将该用户加入该组中,每个用户必须有一个主组,可以有多个附加组,并且主组肯定在附加组中。

      • su 用户名:切换到该用户,看是否能成功切换。root用户切换到其他用户不需要输入密码。普通用户切换到其他用户都要输入密码
      • 查看用户配置文件/ect/passwd和/etc/shadow,看是否存在该用户的信息

      2.passwd命令

      passwd:给自己修改密码

      passwd 用户名:给其他用户修改密码,只有root用户可以这样用

      3.usermod命令

      usermod 参数 用户名:修改用户信息,必须定义参数,表示修改用户的哪些信息

      usermod的参数与useradd基本类似,如-c修改备注信息,-g修改用户组……

      usermod -l 新用户名 旧用户名:修改用户名称

      usermod -L 用户名:锁定用户密码,使用户无法登录

      usermod -U 用户名:解锁用户密码

      4.userdel命令

    • userdel 用户名:删除用户,保留用户的家目

    • userdel -r 用户名:删除用户和用户的家目录

    • 5.groupadd命令

    • groupadd 用户组名:添加用户组

    • groupadd -g 用户组id组名:添加用户组时指定用户组的id

      6.groupmod 命令

    • groupmod -n 新组名 旧组名:修改用户组的名称

      7.groupdel命令

      groupdel 组名:删除一个用户组,不能删除用户的主组

      8.su命令

      su 用户名:切换到该用户,只切换了用户名

      su – 用户名:切换到该用户,重新读取用户的配置信息,切换当前系统的运行环境

      su - :快速切换到root用户

      • 权限管理命令

        1.Linux中权限的表示方式

        1:表示文件的类型,-表示普通文件,d表示目录,l表示链接文件

        2:使用9个字符表示文件的权限

        3:文件的连接数

        4:文件的所有者

        5:文件的所属组

        6:文件的大小

        7:文件的修改时间

        8:文件的名称

        文件权限使用9个字符表示,又分为3个部分:

        •  

          每3个字符代表一个角色权限:

          其一表示文件所有者的权限

          其二表示文件所属组的权限

          其三表示其他人的权限

          Linux系统中,文件的权限分3中:r(read)表示读权限,w(write)表示写权限,x(execute)表示执行权限。拥有该权限则显示相应的字母,否则显示-

          如文件的信息如下:

          权限   所有者 所属组

          -rwxr----- tester1 tester

          tester1用户对该文件有读、写、执行的权限

          tester用户组中用户对该文件有读权限,没有写和执行的权限

          其他用户,既不是tester1用户,又不在tester用户组,没有任何权限

          由于使用9个字符表示文件的权限太过麻烦,也可以使用数字来表示文件权限

          rwx三种权限的位置是固定的,所以可以使用二进制数跟权限进行对应,有相应权限的就是1,没有相应权限的就是0,那么三种权限的排列组合情况如下:

        •  

          3种不同角色的权限,就可以使用3个十进制数来表示

          如,文件的权限是764,代表文件的所有者可读、可写、可执行,所属组的用户可读、可写、不能执行,其他用户可读、不能写也不能执行

          如果对二进制不够熟悉,可以直接记住:r=4, w=2, x=1

          2.chmod命令

          chmod 权限 文件:修改文件的权限

          chmod -R 权限 目录:修改整个目录中所有文件的权限

          chmod允许在已有权限的基础上进行添加或删除

          首先,r、w、x还是表示三种权限

          其次,+表示添加权限,-表示删除权限,=表示赋予权限

          最后,u表示所有者,g表示所属组,o表示其他人,a表示所有人

          3.chgrp命令

          chgrp 组名 文件:修改文件的所属组

          文件1.txt被用户user1创建,文件的所有者就是user1

          用户user1的主组是group1,则文件1.txt默认的所属组就是group1

          但是文件的所属组可以使用chgrp进行修改

          用户的附加组作用是,可以让用户享受附加组的权限

          文件1.txt的所有者是user1,所属组是group1

          如果用户user2 的主组是usergroup,附加组中有group1,user2相对于1.txt就是所属组的用户,拥有所属组的权限,而不是其他人。

          chgrp -R 组名 目录:修改目录中所有文件的所属组

          4.chown命令

  • chown [-R] 用户 文件 [目录]:修改目录或文件的所有者

    5.权限对于文件和目录的不同含义

    挂载命令

    1.什么是挂载?

    Linux系统中所有的对象都是文件,硬件设备也被看做是文件。Linux文件系统之外的其他文件系统(光驱、U盘、其他硬盘),要想被访问必须“关联”到当前文件系统中的某个目录下,这个“关联”的操作就是挂载。设备文件挂载的目标目录叫做挂载点,解除这样的关联就是卸载。

    /media是默认的光驱、软驱的挂载目录

    /mnt是默认的u盘、移动硬盘挂载目录

    2.mount命令

    首先要提前准备好挂载点,创建好一个空目录:

    mount 设备文件 挂载点:将设备文件挂载到挂载点,就可以通过挂载点来访问设备文件的内容

    mount命令挂载的设备文件关联是临时的,重启之后就会消失。如果需要每次开机都自动挂载一些硬件设备,可以修改配置文件:/etc/fstab。

  •  

    如果想要每次开机都自动将/dev/cdrom挂载到/media/mycd,可以在该配置文件中加上一行:

  • 3.unmount 卸载

    unmount 设备文件:卸载设备

    unmount 挂载点:卸载设备

    软件安装和卸载命令

    1.rpm命令

    rpm是非常常见的Linux系统中安装和卸载软件的命令。rpm的使用必须先将软件的安装包下载到本地,这些安装包通常是 .rpm为后缀名的。也就是说rpm是本地安装命令

    rpm -ivh 安装包:安装软件

    如centos7的iso文件中,包含了一个目录Packages,里面存放了可选的一些软件的rpm安装包。用户可以自行选择软件安装。

    rpm -qa:查看当前系统已经安装的软件

    rpm -qa | grep ‘关键字’:使用关键字查找,查看一个软件是否被安装

    rpm -evh 软件名称:卸载已安装的软件,软件名称是rpm -qa 查看到的软件信息中版本号前面的部分

    rpm -Uvh 安装包:更新软件

    2.yum命令

    yum命令是一个在线安装命令,可以自动在服务器上搜索可用的软件并且下载安装。yum会自动检测软件的依赖关系,假如安装A软件需要先安装B和C作为A的支持软件,则yum会自动下载A、B、C三个软件进行安装。rpm需要手动去处理依赖关系,安装A只会提示需要安装B和C,必须由人自己找到B和C来安装,然后才能安装A。

    mysql——perl-dbi, mysql-server——per-dbd

    yum install 软件名称:安装软件

    yum remove 软件名称:卸载软件

    yum update 软件名称:升级软件

    yum list:查看当前可用的软件,最好结合grep使用

    yum 命令搜索的目标位置和下载软件安装包的服务器称为yum源,可以使用默认的yum源,也可以自己定义yum源,yum命令相关的配置文件存放在/etc/yum.repos.d:

    CentOS-Base.repo存放的是网络源的配置信息

    CentOS-Media.repo存放的是本地源的配置信息

    备份压缩命令

    1.gzip和gunzip

    gzip 文件名:压缩文件,并且不保留源文件

    gunzip 压缩包:解压文件,并且删除压缩包

    gzip -d 压缩包:解压文件,等同于gunzip

    gzip -l 压缩包:查看包的压缩信息

    gzip -r 目录:不能压缩目录,但是可以将目录中的文件分别压缩

    gzip -n 文件:可以设置压缩的比例,n是1到9的数字,1表示压缩速度最快,但是压缩比例较低。9表示压缩速度最慢,但是压缩比例最高。默认是6。

    2.bzip2和bunzip2

    bzip2也是Linux系统中常见的压缩命令,压缩比例更高。centos7默认没有安装bzip2,可以手动使用yum命令安装。

    bzip2 文件名:压缩文件

    bunzip2 压缩包:解压文件

    bzip2和gzip的用法特点类似,参数也都差不多。不过gzip -num的用法,bzip2不一样。

    3.zip和unzip

    zip压缩在Linux中支持,windows中也支持。相对而言,zip压缩对于系统的兼容性要好一些,可以在Linux和windows两个平台通用。zip和unzip也没有默认安装在centos7上,所以也需要手动安装。

    zip 压缩包名 文件1 文件2 ······:将文件压缩到一个压缩包中。可以同时压缩多个文件,也可以只压缩一个,保留源文件。如果压缩的是目录,则只会压缩一个空目录,不会压缩目录中的文件。

    unzip 压缩包名:解压文件,保留压缩包

    zip -r 压缩包名 目录:压缩目录,将整个目录中所有文件压缩成一个包

    4.tar命令

  • tar是打包命令,可以将多个文件或目录进行打包,打包成一个文件,并没有压缩的功能。

  • tar -cvf 包名 文件1 文件2······:打包文件,保留源文件

  • tar -xvf 包名:解包,保留打包文件

  • 由于tar单独使用只能打包,不能压缩,没法减少文件的占用空间。但是它可以将多个文件或者目录打成一个包。gzip和bzip2具备压缩的功能,但是不能将目录压缩,压缩多个文件也是只能每个文件产生一个压缩包。可以将tar和这两个压缩命令结合,先打包再压缩。

    tar -zcvf 包名 文件1 文件2 ······:使用tar打包之后再用gzip压缩文件

    tar -zxvf 包名:解包解压

    tar -jcvf 包名 文件1 文件2 ······:使用tar打包之后再用bzip2压缩文件

    tar -jxvf 包名:解包解压

    网络通信命令

  • 1.ifconfig或ip add

  • 在Windows系统中,查看当前的ip地址,使用ipconfig。在Linux系统中同样的命令就是ifconfig。但是centos7默认没有安装ifconfig命令,所以可以使用ip add作为替代。要想在centos7中使用ifconfig,需要yum install net-tools.

  • ifconfig:查看ip地址

  • ip add:查看ip地址

  • 2.netstat 命令

  • netstat:查看端口号

  • netstat -ano:查看所有端口号,可以结合管道符和grep来查看具体某个端口的占有情况,或某个程序使用端口的情况。

  • netstat -t:查看当前已建立的tcp连接

  • 3.ping命令

  • ping ip 地址(域名):查看网络连接是否通畅

  • ping -c n ip 地址或域名:固定ping的次数为n次

  • 4.网卡的配置文件

  • centos7的网卡配置文件是:/etc/sysconfig/network-scripts/ifcfg-ens33

    工作中,通常需要Linux服务器的ip地址是固定的,而不是使用dhcp服务获取一个动态的ip地址,此时可以将BOOTPROTO=static,设置为静态ip。不过设置了静态ip之后,ip地址、子网掩码、默认网关等网络信息都要手动设置。

    系统管理命令

  • 1.磁盘管理命令

  • du:查看当前目录的文件使用情况

    du -h:人性化的显示结果,加上文件大小的单位

    du 目录:查看目标目录的文件使用情况

    df:查看整个文件系统的使用情况

    df -h:人性化的显示结果,加上文件大小的单位

  • 2.系统资源查看命令

  • 如果要对Linux服务器的性能进行测试,可以使用资源查看命令监控系统的性能指标

    top:相当于是windows下面的任务管理器。可以查看整个系统的资源占用情况,也可以查看单个进程的运行情况。动态获取系统资源信息显示,按q退出。

    ps -aux:截取系统某个时间点的运行情况,显示出来。主要关注每个进程的运行情况,并且静态显示结果。

    ps -ef | grep “进程关键词”#可查看匹配进程的程序名称,启动用户,进程ID PID

    kill -9 PID #根据进程ID号,立即结束进程

    vmstat:查看整个系统资源的使用情况

     

     3.系统设置命令

  • alias:查看系统当前命令的别名

    alias 别名=‘别名’给命令设置别名

    unalias 别名:删除命令的别名

    echo 字符串:打印输出一个结果,类似Python中的print()。通常用在编程。

    echo -e 字符串:打印输出一个结果,对转义字符进行转义,如\t,\n

    export 变量名称:设置环境变量

  • 变量=path

  • export 变量

  • export 变量名称=path:设置环境变量(系统变量)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值