linux期末复习

发布时间 2024-01-02 20:31:32作者: fforu

第1讲 Linux概述与安装

Linux的特点:

多用户多任务、开源、安全、稳定

内核版本和发行版本含义或区别:

Linux内核是操作系统的核心部分,它提供了操作系统的基本功能和底层支持。内核版本是指Linux内核的特定版本号,例如3.14、4.19、5.10等。每个内核版本都有其独特的功能、改进和修复。

Linux发行版本是基于Linux内核的完整操作系统,包含了内核以及其他周边的软件和工具。发行版本通常由Linux社区、开发者或组织来维护和提供支持。一些常见的Linux发行版本包括Ubuntu、Debian、CentOS、Fedora等。

相同家族的Linux发行版本有哪些?

Red Hat(红帽子)、Ubuntu、CentOS、国产红旗Linux

Linux内核版本3个数字组成:x.y.z含义:

r:目前发布的内核主版本;

x:偶数表示稳定版本;奇数表示开发中版本;

y:错误修补的次数;

稳定版本与非稳定版本:

x:偶数表示稳定版本;奇数表示开发中版本;

Linux系统安装时,必修有的两种分区:

Swap交换分区(内外存对换,存放内存中暂时不用的数据)和根分区/

第2讲 Linux图形界面与命令界面

Linux的两种工作界面:图形界面和命令行字符终端界面

命令界面命令:

系统关闭、重启命令:shutdown –r/h now、halt、reboot

帮助命令名:man、help、info常规用法;

查找命令位置:whereis命令

Shell中的管道用法: |

Shell中的5种重定向用法及含义:> < >> 2> &>

uname -a (查看Linux内核版本);

(uname -r)显示操作系统的发行版号;

history命令作用:列出历史输入的所有命令

自动补齐键:Tab键

标准输入设备文件描述符 :0 或 stdin

标准输入设备文件描述符 :1或stdout

第3讲 文件管理与常用命令

Linux的5种不同的文件类型及其符号表示?

(1)普通文件:符号是 -

(2)目录文件:符号是 d

(3)字符设备文件:符号是c

(4)块设备文件:符号是b

(5)符号链接文件:符号是l

链接文件有哪两种?

Hard Link硬链接、Sort Link软链接

Linux中路径符号:“.”和“..”表示法

根目录:/

home目录:~

当前目录:./

父级(上一级)目录:../

上两级目录:../..

Linux目录结构中的几个常见目录:/bin、/boot、/root、/mnt、/usr、/lib、/dev、/etc、/var/log等目录的用途

1./bin:该目录存放了最基本的命令, 如ls、cp、mv等。

2./boot:存放Linux启动所需的文件, 包括内核、引导程序和配置文件等。

3./dev:该目录存放Linux系统中的设备文件。

4./etc:存放系统的配置文件和一些程序的配置文件, 如网络配置文件、用户账户和密码文件等。

5./home:该目录存放用户的主目录, 每个用户都有一个独立的子目录。

6./lib:该目录存放Linux系统和应用程序所需的共享库文件。

7./media:用于挂载可移动媒体设备, 如U盘、光盘等。

8./mnt:用于挂载临时文件系统, 如网络文件系统(NFS) 等。

9./opt:用于存放第三方应用程序的安装目录。

10./proc:该目录提供了内核和进程信息的虚拟文件系统, 可以通过读取这些文件获取系统信息。

11./root:该目录为系统管理员的主目录。

12./sbin:该目录存放一些系统管理命令, 如reboot、shutdown等。

13./tmp:该目录用于存放临时文件, 重启后会自动清空。

14./usr:该目录存放系统应用程序和文件, 如/usr/bin、/usr/lib等。

15./var:该目录存放一些系统和应用程序的日志文件, 如/var/log等。

常用操作命令

Ls -a;

ls -l(文件详细信息中第1个字段含义的具体含义);

grep(用于查找文件里符合条件的字符串或正则表达式。);

find -name;

wc -l(统计行数);

cp(复制文件、复制目录);

mv(文件或目录的移动、重命令);

mkdir -p(递归建立目录);

rm -rf(删除非空目录);

touch file(创建空文件);

cd~或cd(进入当前用户的主目录), cd- (返回上一次的操作目录); pwd;

cal 2001(查看2001年月历)

对全部已登录用户发送信息:wall命令

超级用户登录提示符:# 普通用户登录提示符:$

chmod改变文件或目录的访问权限(字母或数字修改);

chmod ugo+x filename(添加可执行权限、只读权限);

umask nnn(设置默认权限);

chown(更改某个文件或目录的属主和属组);

gunzip(解压.gz压缩文件);

查找/usr下名为ljh.c的文件:

find /usr -name ljh.c

使用命令修改文件或目录的3种访问权限?采用字母与数字表示法修改文件或目录权限

chmod 755 文件名(每个数字由三个二进制位组成。对于每个用户类别(文件所有者、组和其他用户),这些二进制位表示读(r)、写(w)和执行(x)权限)

文件归档命令:

压缩: tar -zcvf hello.tar.gz(目标文件) /etc

解压: tar -zxvf hello.tar.gz -C /home

对某文件内容ljh.c的所有输出行进行编号输出的命令:

#cat -n ljh.c

使用echo命令在某文件增加一行字符串hello:

#echo “hell” >> a.txt

第4讲 用户与用户组管理

Linux系统下的3类用户和功能;3类用户的UID值?

第一类:root(超级管理员),UID为0,这个用户有极大的权限,可以直接无视很多的限制,包括读写执行的权限。

第二类:系统用户,UID为1~499。一般是不会被登入的。

第三类就是普通用户,UID范围一般是500~65534。这类用户的权限会受到基本权限的限制,也会受到来自管理员的限制。不过要注意nobody这个特殊的帐号,UID为65534,这个用户的权限会进一步的受到限制,一般用于实现来宾帐号。

Linux用户账户配置文件—/etc/passwd、/etc/shadow的作用

/etc/passwd文件是用户账户信息的文本文件,其中包含了系统上所有用户的基本信息。该文件中的每一行代表一个用户账户,每行包含了七个字段,分别表示用户名、用户密码、用户ID、组ID、用户全名或描述、用户家目录和默认的shell程序。虽然/etc/passwd文件包含了用户的某些基本信息,但需要注意的是,该文件中存储的密码是加密的,而且该文件对所有用户都是可读的。

/etc/shadow文件是用于存储加密用户密码以及相关账户信息的文件。与/etc/passwd文件不同,/etc/shadow文件中的信息只有root用户可以读取,从而保护了用户的密码安全。该文件中包含的每行代表一个用户账户,每行中包含了加密的密码、最后一次修改密码的时间、密码到期时间、账户到期时间、保留字段和扩展字段等。通过这些信息,系统管理员可以管理用户的账户和密码,确保系统的安全性和稳定性。

Linux用户组账户配置文件—/etc/group、/etc/gshadow的作用

/etc/group 文件是用户组的配置文件,内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组。如果root用户把某个文件的读写执行权限开放,root用户组的所有用户都可以修改此文件。/etc/group文件对用户组的许可权限的控制并不是必要的,用户组可以像用户一样拥有口令。

/etc/gshadow文件中每个用户组都有一条记录,它是/etc/group的加密文件,比如用户组管理密码就是存放在这个文件中。/etc/gshadow文件中每一行都有4个段位,段位间用”:”分割,分别为用户组名称、密码、组管理员账户、支持的账户名称。

用户与用户组管理命令:useradd; userdel; usermod;

#userdel -r ljh //删除用户”ljh”及其主目录下的所有文件

#useradd -d /home/www newuser // 创建用户newuser,并设置该用户主目录为/home/www

root用户的id号:0

如何使用命令将某个用户添加到某个组?

gpasswd -a it root

who命令显示已登录当前计算机的用户

统计登陆系统的用户数: who | wc -l

第5讲 Linux磁盘和文件系统管理

Linux硬盘分区类型与分区命令:

硬盘分区一共有3种:主分区、扩展分区和逻辑分区(逻辑驱动器)

fdisk命令介绍:使用fdisk命令可以对磁盘进行格式化分区,包括在块设备上建立、修改和删除分区。

命令语法:

fdisk [-b <分区大小>][-uv][磁盘设备名]

fdisk [-l][-b <分区大小>][-uv][磁盘设备名]

fdisk [-s <分区编号>]

命令中各选项的含义如下:

-b:指定每个分区的大小

-l:列出(或查看)指定硬盘的分区表信息

-v:显示版本信息。

-s:将指定的分区大小输出到标准输出上,单位为区块。

-u:搭配“-l”参数列表,用分区树木取代柱面数目,表示每个分区的起始地址。

hdXY;sdXY的含义

hd 表示 IDE 硬盘设备,如 /dev/hda、/dev/hdb 等。

sd 表示 SCSI/SATA/USB 硬盘设备,如 /dev/sda、/dev/sdb 等。

X 代表磁盘号,从 a 开始计数,例如第一块IDE硬盘就是 /dev/hda。

Y 代表分区号,从 1 开始计数。

一块Linux系统的磁盘最多有4个主分区

硬盘分区命令fdisk、在分区上创建文件系统的命令mkfs:

mkfs –t ext2/ext3/ext4、mke2fs、mkfs.ext3

挂载文件系统的命令: mount (如将FAT32文件系统/dev/sda3分区挂载到/mnt/sda3目录中)

设置开机自动挂载文件系统的方法:修改/etc/fstab文件

通过修改cron配置文件的方法,实现周期性任务自动化时, /etc/fstab文件新增记录的格式

结合磁盘与文件系统管理命令,描述使用新增磁盘的一般使用步骤

(1)fdisk命令对磁盘进行分区

(2)mkfs命令创建文件系统

(3)mount命令挂载硬盘分区

第6讲 Linux日常管理和维护

查看系统进程信息的命令:ps -aux;top;pstree

终止一个不在后台(前台)的进程: [Ctrl+C]键 (该组合键无法终止后台进程)

终止一个后台进程: kill命令

kill用法: kill -9 PID(PID为进程ID号)

如何让一个进程在后台运行:在命令后跟随符号“&”

后台进程调入前台: fg

前台进程调入后台:bg

第7、8讲 shell编程

shell第一行内容格式?

#!/bin/bash

执行shell脚本的三种方式

(1)hello.sh 直接执行(需要可执行权限)

(2)sh hello.sh 使用sh命令(若root用户的shell是/bin/bash,要用bash命令)

(3)source hello.sh或 . hello.sh 使用source命令或点命令

shell的系统变量:$0,、$?、 $#、 $n、 $*等表示的含义

(1)$0 当前程序的名称

(2)$? 前一个命令或函数的返回值,0表示成功,非0表示失败

(3)$# 命令行参数的总个数,不包含程序名称

(4)$n 第n个参数

(5)$* 以“参数1 参数2 … ” 形式保存所有参数,即所有命令行参数的值

分支结构——test命令;

(1)整数判断:-lt(小于)、-le(小于等于)、-gt(大于)、-ge(大于等于)、-eq(等于)、-ne(不等于)

例如:test 3 -lt 4 判断3是否小于4

(2)字符串判断:=(等于)、!=(不等于)、-z str(str长度为0返回真)、-n str(str长度不为0返回真)

(3)逻辑判断:-a(逻辑与)、-o(逻辑或)、!(逻辑非)

(4)文件判断:-f file(如果文件存在且是一个普通文件)

例如:test $a -eq 0 -a $b -eq 0 判断变量a和变量b是否都等于0

使用方括号表示测试条件的规则是:方括号两边必须有空格

set 命令:设置参数值;

$0, $1, $2…..等表示的含义

在Linux中,0、1、$2等表示的是位置参数。

$0 是脚本本身的名字。

$1 是传递给该shell脚本的第一个参数。

$2 是传递给该shell脚本的第二个参数。

...

shell中单引号、双引号、倒引号使用方法

(1)’:由单引号括起来的内容都作为普通字符出现

(2)”:由双引号括起来的字符,$、倒引号和反斜杠保留特殊功能,其余字符否作为普通字符对待

(3)`:倒引号用于命令替换,括起来的字符串被解释为命令,转换为其标准输出结果

(4)\:转义字符

例:

echo “My current directory is pwd and logname is $LOGNAME”

输出My current directory is /root and logname is root

echo “My current directory is pwd and logname is $LOGNAME”

输出My current directory is /root and logname is $LOGNAME

echo ‘My current directory is pwd and logname is $LOGNAME’

输出My current directory is pwd and logname is $LOGNAME

分支结构——if语句、 for语句使用方法

If语句:

if 判断条件1

then …

elif 判断条件2

then …

else …

fi

for语句:

for 循环变量名 in 变量列表

do

…

done

利用shift访问参数变量

在Linux中,使用shift命令可以访问参数变量。shift命令会将位置参数向左移动,即$1变为$2,$2变为$3,依此类推。

echo命令---提示用户 : echo -ne

打印99乘法表

#!/bin/bash

for i in `seq 1 9`

do 

​    for j in `seq 1 9` 

​    do  

​       echo $i x $j = $[$i*$j]  

​    done

done

如何为脚本程序添加可执行权限,如何运行?

chmod a+x jiujiu.sh或chmod 111 jiujiu.sh

第9讲 Linux网络基本配置与网络安全

Linux网络配置文件: /etc/network/interfaces、/etc/resolv.conf、文件的作用

(1)/etc/network/interfaces:网卡配置文件

(2)/etc/resolv.conf:DNS配置文件(指定DNS域名解析器)

网络配置命令:ifconfig、route命令设置网卡IP地址和网关

(1)ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up 配置网卡eth0的IP地址和子网掩码,同时激活该设备

(2)route add -net 192.168.20.0/24 gw 192.168.10.1 dev eth0给eth0网卡添加路由

关闭/激活网卡eth0命令: ifconfig eth0 down/up

主机访问控制文件hosts.deny和hosts.allow中添加相关规则

Linux系统下防火墙ufw的关闭、使能与端口开放/关闭命令

(1)ufw enable 开启防火墙

(2)ufw disable 关闭防火墙

(3)ufw allow/deny port 开放/关闭端口port

重新启动某个服务的命令(例如ftp服务器):

#service vsftpd restart

或 /etc/init.d/vsftpd restart

或 systemctl restart vsftpd

第10讲 Web、Ftp、Samba与NFS服务器配置和第11讲 Mail、DNS和远程连接服务器配置

软件包在线安装命令: apt-get install apache2或 vsftpd或nfs

启动、停止、重启ftp服务、Web服务(apache2)的命令?

启动apache:#/etc/init.d/apache2 start或#service apache2 start

停止Web服务则需要使用stop参数,类似的重启Apache需要使用restart参数

OpenSSH 、Samba和NFS服务器含义、作用和区别

OpenSSH服务器用于远程连接

SAMBA是Windows主机和Linux主机(不同平台间)之间实现资源共享的协议程序。

NFS(network file system)用于实现Linux或unix系统之间的资源共享

特定用户名+密码格式,以命令方式访问ftp服务器:

# ftp ljh:123456@10.64.131.110

第12讲 Linux下C C++集成开发环境

make命令的工作步骤?

(1)在当前目录下寻找文件名为GNUmakefile、makefile、Makefile的文件,找到了则解释这个文件

(2)依次读取工作目录makefile文件中使用“include”包含的文件

(3)重建所有已读取的Makefile文件的规则

(4)初始化Makefile文件中的变量值

(5)推倒隐晦规则

(6)根据终极目标及其他目标的依赖关系建立依赖关系链表

(7)执行除终极目标外的所有目标的规则

(8)执行终极目标的规则

编写简单的Makefile文件;能读懂如下的Makefile文件(包括有几个规则,目标分别是什么);

 1  hello:hello.o say_hello.o

2      {cc}    $^   -o   $@

3  say_hello.o:say_hello.c say_hello.h

4   gcc -c say_hello.c -o say_hello.o

5  hello.o:hello.c say_hello.h

6   gcc -c hello.c -o hello.o

Makefile中的显示命令符号@加或者不加的区别?

makefile中的命令前加了@则不显示命令本身,只显示结果

第13讲 Linux内核引导加载、分析及其编译

Linux系统的引导加载和初始化流程

(1)加载BIOS

(2)读取MBR

(3)加载Grub第二部分和boot/grub/grub.cfg

(4)加载内核和解压挂载initrd文件系统

(5)根据rc-sysinit.conf文件设定运行等级

(6)init进程执行/etc/init.d/rc

(7)启动内核模块

(8)执行不同运行级别的脚本程序rc0.d~rc6.d

(9)执行自定义脚本/etc/rc.local

(10)执行/bin/login程序,进入登录状态

Linux内核源码分析:PCB结构体(task_struct)、进程的虚拟内存结构体(mm_struct);与进程优先级相关的参数-----rt_ priority (实时优先级);