Linux 操作系统知识总结

一、Linux 发展历史过程及关键人物

Unix:1969 年由贝尔实验室的 Ken Thompson 和 Dennis Ritchie 研发成功,1971 年发布第一个版本,其内核短小精悍、性能优异且源代码公开,发明者于 1983 年获图灵奖。
Minix:荷兰阿姆斯特丹自由大学 Andrew S. Tanenbaum 教授编写的操作系统示范教学程序,约 12,000 行代码,是迷你版本的类 Unix 操作系统。
Linux:1991 年由芬兰赫尔辛基大学 Linus Torvalds 设计,因 Minix 在其计算机上运行不佳,他用汇编语言编写了 Linux 原型。同年 8 月 25 日 Linus 在 MINIX 新闻组征求意见,9 月中旬 Linux 0.01 版问世并放网上,引发关注。1991 年 10 月 5 日发布 0.02 版,12 月发布 0.10 版等,后续版本不断更新,其源代码通过芬兰等地 FTP 站点传遍世界。20 世纪 80 年代中期 Internet 形成后,众多程序员参与改进和测试,使其迅速发展壮大,1994 年 3 月 14 日发布 1.0 版。Linux 遵循 POSIX 标准,大量使用 GNU 软件,虽未包含 Unix 源代码,但与 Unix 关系密切。

二、Linux 操作系统特点及说明

  1. 开放性:与 Unix 系统(如 System V、BSD 等)几乎完全兼容,遵循 POSIX 标准,Unix 下程序大多可移植到 Linux,且遵循 OSI 国际标准,便于与其他软硬件互联。
  2. 高效性:核心源代码针对体系结构优化,运行稳定顺畅,对内存分配合理,将闲置内存用作缓冲区。
  3. 多用户多任务:可同时执行多个程序,允许多用户同时登录使用软件。
  4. 设备独立性:把外部设备当作文件处理,安装驱动程序后,用户可像操作文件一样操纵设备,无需了解其具体存在形式。
  5. 系统安全性:采取设备和文件读写控制、审计跟踪等安全措施。
  6. 良好的用户界面:有基于文本的命令行界面(Shell)支持强大功能,还有 X Window 图形界面方便使用。
  7. 提供丰富的网络功能:支持 Internet,可通过命令传输文件、进行远程访问等。
  8. 良好的可移植性:能在从微型到大型计算机的各种环境和平台运行。

三、Linux 操作系统组成(内核、shell、文件系统、应用程序)及含义

  1. 内核:是操作系统核心,具备存储管理、CPU 管理、进程管理、文件系统、设备管理和驱动、网络通信、系统初始化和系统调用等基本功能。
  2. Shell:是用户界面,提供用户与内核交互的接口,其命令解释器和编程语言具有普通编程语言特性,编写的 shell 程序与其他应用程序效果相同。
  3. 文件系统:是文件在磁盘等存储设备上的组织方式,Linux 支持多种流行文件系统,如 EXT2、EXT3、FAT、FAT32、VFAT 和 ISO9660 等。
  4. 应用程序:标准 Linux 系统包含文本编译器、编程语言、X Window、办公套件、Internet 工具和数据库等程序集。

四、Linux 与 Windows 系统区别

  1. 适用场景:Windows NT 融入 Windows 9x 图形化界面优势,易用但效率因图形界面有所降低,适合中小企业、个人用户及对性能要求不严格的场合;Linux 适用于强调性能、对用户界面要求不高的应用。
  2. 开发环境:Linux 是开放环境下开发,得到广泛支持,任何志愿者可参与;Windows 是有版权产品,接口和设计由公司控制,在封闭环境发展。

五、Linux 操作系统的应用场景和前景

  1. 应用场景
    • 服务器操作系统:是首选系统之一,在服务器领域应用广泛。
    • 嵌入式领域:在军事、工业控制系统、信息家电、通信设备、医疗仪器、智能仪器仪表等众多领域广泛应用。
    • 云计算和数据中心:备受青睐。
    • 桌面应用:已有改进。
    • 其他:如电影制作(《泰坦尼克号》等)、指纹识别设备驱动开发、汽车智能驾驶(Sony 车载导航、Volvo 卡车和有轨电车)、搜索引擎(Google)、即时通讯软件服务器(QQ)、智能手机(安卓系统内核基于 Linux)、火星探测器、天气预报等领域均有应用。

六、Ubuntu 版本组成及发布周期

由版本号和代号组成,例如 Ubuntu 10.04 LTS Lucid Lynx,自 2004 年 10 月发布首版本,发布周期为六个月。

七、基本分区方案(根分区、交换分区)

  1. 根分区(/):建议 6GB 以上,是 Linux 系统的根目录,所有目录挂载其下,剩余空间可分配给根分区。
  2. 交换分区(swap):建议为物理内存 1 - 2 倍,用于虚拟内存,在内存不足或休眠时发挥作用。

八、系统安装过程(四步)

  1. 确认安装在硬盘还是虚拟机。硬盘安装需备份数据或安装双系统;虚拟机安装要提前准备好虚拟机软件并配置硬件信息。
  2. 检查计算机硬件是否被 Ubuntu 默认支持,不支持则准备好驱动程序。
  3. 规划好用户名、密码、网络 IP 地址配置等信息。
  4. 确认安装方式是光盘安装、硬盘安装还是 U 盘安装等。

九、使用虚拟机的优点

一台计算机模拟多台虚拟机运行不同系统且互不干扰,可同时运行多系统且切换方便。能虚拟分区和配置,用虚拟网卡连虚拟机成局域网。

十、操作系统接口类型

  1. 命令行用户接口:用户在文本界面通过键盘输入命令获取操作系统服务,结果也以文本显示。如 Bourne Shell(sh)、C Shell(csh)等,不同 Shell 有其特定提示符。其特点是效率高、灵活,但需记忆命令和语法,命令分为内部命令(如 cd、pwd 等,程序在 Shell 内部,执行快)和外部命令(存储在磁盘,执行时需调入内存)。
  2. 图形用户接口:通过图标、窗口等元素形成直观操作环境,以鼠标驱动。用户点击操作图形元素实现交互,结果以图形显示,优点是直观易用,无需记忆命令。
  3. 程序接口:由系统调用命令组成,是程序员访问系统资源的途径,系统调用是操作系统提供给应用程序访问系统资源的唯一接口,每个系统调用是完成特定功能的子程序,用户接口功能最终通过它实现。

十一、命令解释程序工作流程

首先显示提示符等待用户输入命令行。
接收命令后判断命令是否合法,若不合法则提示出错信息。
对于合法命令,判断是否为内部命令,若是则直接执行;若不是则从外存调入外部命令执行,执行后将结果显示在屏幕上,接着再次显示提示符等待下一次输入。

十二、X Window 系统组成、架构、主要特点、核心

  1. 系统组成:主要由 X Server、X Client 和 X Protocol 组成。
  2. 架构特点:客户 / 服务器架构
  3. 主要特点:应用程序的 “运行” 和 “显示” 可分离。具有广泛移植性,是图形接口标准体系框架,著名的 GNOME 和 KDE 基于其构建。
  4. 核心组件
    • X Server:运行在有显示设备主机上,负责支持显示卡等硬件、响应 X Client 请求绘图与管理窗口、维护字体颜色等资源及输入输出操作,可独立安装更新,Linux 常用的有 XFree 86 和 Xorg,后者逐渐成为主流。
    • X Client:需在屏幕显示图形的程序,通过请求让 X Server 管理图形界面,不能直接接受用户输入,输出显示时确定内容并通知 X Server 完成实际显示。
    • X Protocol:是 X Client 和 X Server 通信规则,规定信息格式和顺序,运行在 TCP/IP 协议之上,使二者可跨主机通信。
  5. 核心:X Server

十三、系统调用的作用

是应用程序和系统内核之间的接口,由操作系统内核提供一系列内核函数,通过系统调用这个接口供用户使用。
作用是将应用程序请求传递给内核,调用相应内核函数处理,再把结果返回应用程序。

十四、目录操作命令

  1. ls:用于查看目录内容。例如ls -a可显示包括隐藏文件在内的所有内容,ls -l以详细列表格式显示,包括文件权限、所有者、大小、修改时间等信息,如ls -l /home可查看/home目录下文件的详细信息。
  2. cd:改变工作目录。如cd /home/ubuntu可进入/home/ubuntu目录,cd..返回上一级目录,cd ~回到用户主目录。
  3. pwd:显示当前所在目录的绝对路径,如在/home/ubuntu目录下执行pwd,会显示/home/ubuntu
  4. mkdir:创建新目录。mkdir mydir可创建名为mydir的目录,mkdir -p dir1/dir2能递归创建多级目录。
  5. rmdir:删除空目录。如rmdir mydir可删除mydir目录,若目录非空则删除失败,使用rmdir -p可递归删除子目录。

十五、文件操作命令

  1. touch:创建新文件或更改文件的最后修改日期。如touch textfile.txt若文件不存在则创建,若存在则更新修改时间。
  2. cat:显示文件内容。cat hello.txt可查看hello.txt文件内容,cat -n hello.txt会对文件内容进行编号显示,cat file1 file2 > file3可将file1file2的内容合并到file3中。
  3. cp:复制文件或目录。cp number.txt dir1number.txt复制到dir1目录下,cp -r dir1 dir2可递归复制dir1目录及其所有子目录和文件到dir2目录。
  4. rm:删除文件或目录。rm number.txt可删除文件,rm -r dir1可递归删除dir1目录及其内容,rm -i会在删除前进行安全询问。
  5. mv:移动文件或目录,或对其重命名。如mv number.txt /home/ubuntu/mydirnumber.txt移动到/home/ubuntu/mydir目录,mv /home/ubuntu/dir1 /home/ubuntu/dir2移动目录,mv /home/ubuntu/pict.png /home/ubuntu/pict1.png对文件重命名。
  6. chmod:修改文件权限。如chmod a+rwx filename为所有用户增加读、写、执行权限,chmod 777 filename也可达到相同效果,还可使用chmod u+rwx,g+r,o+r filename为不同用户组设置不同权限。
  7. file:判断文件类型。如file /usr/games/banner可判断banner文件为二进制可执行文件,file Textfile.txt判断Textfile.txt为文本文件。

十六、文件处理命令

  1. grep:在文件中查找特定字符串。如grep hello hello.txthello.txt文件中查找hello字符串,grep -i选项可忽略大小写。
  2. head:显示文件前几行。如head -2 hello.txt显示hello.txt文件的前 2 行,单独使用head默认显示前 10 行。
  3. tail:显示文件最后几行。如tail -1 hello.txt显示hello.txt文件的最后 1 行,单独使用tail默认显示最后 10 行。
  4. wc:统计文件的行数、单词数、字符数。如wc -l hello.txt统计hello.txt文件的行数,wc -w统计单词数,wc -m统计字符数。
  5. sort:对文件内容进行排序。如sort -t":" -k2 hello.txt:为分隔符,按照第二列对hello.txt文件内容进行排序。
  6. find:查找文件或目录。如find hello.txt在当前目录下查找hello.txt文件,find Desktop查找Desktop目录及其下所有内容。
  7. which:按PATH变量查找命令或文件的绝对路径。如which ls可查找ls命令的绝对路径。
  8. whereis:查询命令及相关文件。如whereis passwd可查找passwd命令及相关文件的位置。
  9. locate:查找文件名相同的文件,需先使用updatedb更新数据库。如locate file查找名为file的文件。

十七、压缩解压命令

  1. bzip2 和 bunzip2bzip2用于压缩文件,如bzip2 hello.txthello.txt压缩为hello.txt.bz2bunzip2用于解压,如bunzip2 hello.txt.bz2可解压该文件。
  2. gzip:压缩和解压文件。如gzip hello.txt压缩hello.txthello.txt.gzgzip -d可解压。
  3. zip 和 unzipzip压缩成.zip文件,如zip file.zip filefile压缩为file.zip且原文件不消失,unzip解压.zip文件,如unzip file.zip
  4. tar:打包备份或解包。如tar -cf new.tar hello.txt number.txthello.txtnumber.txt打包为new.tartar -xf new.tar解包,tar -czf new.tar.gz hello.txt number.txt打包并压缩为.tar.gz格式。

十八、磁盘操作命令

  1. mount:挂载设备。如mount -t vfat /dev/sdd1 /mnt/usb可挂载vfat格式的/dev/sdd1设备到/mnt/usb目录,mount -o loop –t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom挂载光盘镜像文件。
  2. umount:卸载文件系统。如umount /mnt/usb卸载/mnt/usb挂载点的文件系统。
  3. df:查看文件系统磁盘空间使用情况。如df -h以人类可读格式显示磁盘空间使用情况。
  4. du:查看当前目录下文件及目录信息。如du -h以合适大小单位显示目录和文件大小。
  5. fsck:硬盘检测,需 root 用户执行。如fsck 分区名检测指定分区。

十九、关机重启命令

  1. shutdown:安全关机或重启。如shutdown -h +2在 2 分钟后关机,shutdown -r +1 “system will be reboot after 1 minute”在 1 分钟后重启并提示用户。
  2. halt:关机,单独使用等于shutdown -hhalt -f可强行关机。
  3. poweroff:关机。
  4. reboot:重启系统。
  5. init:切换运行级别。如init 0停机,init 3进入完全多用户模式,init 6重新启动。

二十、变换用户身份命令

  1. su:切换用户。如su root切换到 root 用户,需输入 root 用户密码。
  2. sudo:以超级管理员身份执行操作。如sudo command以 root 权限执行command命令。
  3. useradd:创建新用户。如sudo useradd -d "/home/tt" -m -s "/bin/bash" tt创建用户tt并指定主目录、创建主目录(若不存在)和 shell 版本。
  4. passwd:修改用户密码。如passwd zhang修改zhang用户的密码,需 root 用户执行。

二十一、网络操作命令

  1. ifconfig:查看和设置网络设备 IP 地址。如ifconfig查看网络接口信息,ifconfig eth0 192.168.0.1 netmask 255.255.255.0设置eth0接口的 IP 地址和子网掩码。
  2. ping:测试网络连通性。如ping 127.0.0.1测试本地回环地址是否连通,ping -c5 127.0.0.1发送 5 个数据包测试。
  3. netstat:检测网络端口连接情况。如netstat -a显示所有网络连接信息。
  4. ftp 和 byeftp用于登录 FTP 服务器进行文件传输,如ftp 192.168.0.1登录,bye下线。
  5. telnet 和 logouttelnet远程登录,如telnet 192.168.0.1登录,logout下线。
  6. 其他命令
    • echo:显示字符串。如echo hello world显示hello worldecho -n输出后不换行。
    • more 和 less:分屏显示文件内容。如more filenamecat filename | more可分屏查看filename文件内容,less命令类似但翻页键不同。
    • help 和 manhelp显示内嵌命令信息,man获取联机帮助。如man ls查看ls命令的详细帮助,help cd查看cd命令的内嵌帮助。
    • cal:显示日历。如cal 2000显示 2000 年日历,cal -y显示今年日历。
    • date:显示和设置系统日期时间。如date显示当前日期时间,date 122110322011.00(需 root 权限)设置系统时间,设置后需clock -w写入 CMOS。

二十二、Linux 操作系统默认的文件系统(Ext2、Ext3、Ext4)

  1. Ext2:于 1993 年发布,由 Rey Card 设计,是 GNU/Linux 系统中标准文件系统,存取文件性能好,尤其对中小型文件优势明显,支持 256 字节长文件名,在常见 Intel x86 兼容处理器系统中,簇最大为 4KB 时,单一文件大小上限为 2048GB,文件系统容量上限为 6384GB,但写入文件内容与元数据不同步,可能在断电等情况下导致文件系统不一致。
  2. Ext3:在 Ext2 基础上加入日志功能,由 Stephen tweedie 开发,能保持向前和向后兼容性,非正常关机后恢复时间短,通常仅需一秒(依赖硬件速度),数据以保持文件系统一致的方式写入磁盘。
  3. Ext4:自 Linux kernel 2.6.28 开始支持,是 Ext3 改进版,与 Ext3 兼容,可在线迁移,支持更大文件系统(达 1EB)和文件(16TB),有无限数量子目录,引入 extents 概念提高大文件操作效率,采用多块分配、延迟分配策略,具备快速 fsck、日志校验、“无日志” 模式、在线碎片整理等功能,inode 相关特性也更丰富,默认 inode 大小为 256 字节。

二十三、Linux 文件系统的分层结构(虚拟、实际、缓冲机制、设备驱动)及结构图

  1. 设备驱动程序:存储设备是文件系统物质基础,Linux 将设备视为文件统一管理,设备驱动程序控制设备启动、数据传输和中断处理等,通过统一接口与文件系统连接,实现文件 I/O 操作。
  2. 缓冲机制:文件系统与存储设备数据传输时采用缓存技术提高效率,VFS 使用 “缓存区缓存”“目录项缓存” 和 “i 结点缓存”,数据先暂存缓存区,读取时优先查找缓存,写入时先入缓存再分批写入磁盘。
  3. 实际文件系统:以磁盘分区划分,不同分区可采用不同文件系统,Linux 支持多种格式,如 Ext2/Ext3、JFS、XFS、ReiserFS、NFS 等,默认是 Ext2/Ext3/Ext4。
  4. 虚拟文件系统(VFS):为屏蔽不同实际文件系统差异,提供统一访问接口,位于具体文件系统之上,是可堆叠的抽象层,相关系统调用包括 mount、umount、statfs 等,用于文件系统挂载、卸载及信息获取等操作。

二十四、Ubuntu 目录结构的各目录含义

  1. /:根目录,是 Linux 文件系统的起始点。
  2. /bin:存放系统常用可执行文件(二进制文件),如lscpmkdir等基础系统命令,普通用户可使用。
  3. /boot:存储 Linux 内核和系统启动文件,如Grublilo启动程序。
  4. /dev:包含所有设备文件,如硬盘、分区、键盘、鼠标、USB、tty等,设备通过文件系统抽象访问,每个设备在该目录下有对应文件(设备节点),可通过cat /proc/devices查看加载设备驱动程序主设备号。
  5. /etc:存放系统配置文件,如passwd存储用户账户信息,hostname记录主机名,/etc/fstab用于设置开机自动挂载分区。
  6. /home:用户主目录默认位置。
  7. /initrd:存放启动时挂载initrd.img映像文件及载入设备模块的目录。
  8. /lib:存放共享库文件,供/bin/sbin中程序使用。
  9. /lost+found:在ext2ext3文件系统中,系统意外崩溃或关机产生的文件碎片存放于此,系统启动时fsck工具会检查修复。
  10. /media:即插即用存储设备挂载点自动创建目录,如 USB 盘、CDROM/DVD 挂载后在此生成目录存放临时文件。
  11. /mnt:常作为挂载文件系统的挂载点。
  12. /opt:用于存放可选文件和程序,自定义软件包或用户编译软件包可安装在此。
  13. /proc:存放标志为文件的进程,通过进程号或系统动态信息标识,如cpu、硬盘分区、内存信息等。
  14. /root:根用户(超级用户)主目录。
  15. /sbin:超级权限用户root的可执行命令存放处。
  16. /srv:存放系统提供的服务数据。
  17. /sys:将系统设备组织成层次结构,提供内核数据信息。
  18. /tmp:临时文件目录,/var/tmp与之类似。
  19. /usr:存放与系统用户直接相关文件和目录,如应用程序及支持库文件。
  20. /var:通常存放长度可变文件,如日志文件和打印机文件。

二十五、文件系统的创建、挂载、卸载命令

  1. 创建文件系统:可使用mkfs命令,它是通用总控程序,根据指定文件系统类型调用相应创建程序 “mkfs.fs”(fs可为ext2ext3vfat等)在选定磁盘分区创建文件系统。
    也可利用特定工具,如mke2fsmkfs.ext2mkfs.vfat等直接创建特定类型文件系统。例如在虚拟机中添加磁盘分区后,可执行 “mkfs -t ext2 /dev/sdb” 创建ext2文件系统(需确认操作,创建时会显示文件系统相关参数信息)。
  2. 挂载文件系统:使用mount命令,将文件系统安装到 Linux 文件系统目录层次结构的挂载点(必须是目录)上才能使用。例如 “mount /dev/sdb/datal/” 可将/dev/sdb设备挂载到/datal目录,可通过 “mount” 命令或查看/etc/mtab文件获取挂载信息。
  3. 卸载文件系统:使用umount命令,要卸载的文件系统必须处于空闲状态,如 “umount /dev/sdb” 可卸载/dev/sdb设备的挂载。卸载后可通过查看/etc/mtab文件确认是否卸载成功,原挂载点目录内容将不可访问(若目录非空,卸载可能失败)。

二十六、Linux 图形化文本编辑器和命令行文本编辑器

  1. Gedit 图形化文本编辑器:可通过搜索按钮或在 shell 中输入 “gedit” 启动。具有直观的图形界面,涵盖文件打开、保存、另存为等常规操作,能自动检测字符编码,支持在不同文件夹中查找定位文件,适用于习惯图形操作环境的用户进行简单文本处理。
  2. vi 命令行文本编辑器:在 Linux 和 Unix 系统广泛应用,由 Bill Joy 于 1978 年开发。具有强大编辑功能,可编写脚本、编辑文本与查找信息;适用性强,兼容多种 Unix 和 Linux 版本;基于命令操作,灵活性高、效率出众。通过在 shell 终端输入 “vi [文件名]” 启动,未指定文件名则创建新文件,指定不存在文件名也创建新文件并定位光标至首行首列,指定存在文件则直接打开并定位光标。

二十七、Vim 编辑器工作模式及转换

Vim 编辑器有三种工作模式:命令模式、插入模式和底行模式。

  1. 命令模式:启动 Vim 后默认进入该模式,在此模式下可进行光标移动、文本删除、复制、粘贴等操作,通过相应快捷键进入其他模式。
  2. 插入模式:在命令模式下按iao等键可进入插入模式,用于输入文本内容。
  3. 底行模式:在命令模式下按:键进入底行模式,可进行文件保存、退出、查找替换等操作,输入命令后按回车键执行。

二十八、Vim 编辑器的添加、删除、复制、粘贴、查找、替换、保存、退出命令

  1. 添加文本
    • 光标移动与定位:“h”“j”“k”“l” 分别左、下、上、右移一个字符;“w”“b”“e” 以单词为单位移动光标;“( )”“{ }” 移至句首、句尾、段首、段尾;“$”“0” 移至行尾、行首;“[n] G” 定位到第n行;HomeEndPageUpPageDownBackspaceSpaceEnter键及小键盘箭头键也可移动光标;Ctrl + UCtrl + DCtrl + BCtrl + F用于屏幕滚动。
    • 插入命令:“a”“A”“i”“I”“o”“O” 在不同位置开始接收输入。
  2. 删除文本:“x” 删光标处字符,“X” 删左边字符,“D” 删一行(光标在中部则删右边文本),“dd” 删光标所在行,“J” 合并当前行与下一行;“d + 定位符” 删指定范围字符,命令前加数字扩大删除范围,Delete键同 “x” 命令。
  3. 复制、粘贴与剪切:“yy” 复制光标所在行,“y0”“y$” 复制光标左右文本;“p” 粘贴文本至光标处,“dd” 剪切光标所在行。
  4. 查找与替换
    • 查找:在底行模式下用 “/关键字” 从光标处查找,“n” 继续向后,到文件尾后再按 “n” 返回头部查找。
    • 替换:“s” 替换光标处字符,“S” 替换光标所在行;“r” 替换光标处单个字符,“R” 逐个替换光标后字符。在底行模式下用 “[替换起始处,替换结束处] s /被替换字符串 /替换字符串 /[g][c]” 替换指定范围字符串,“g” 替换所有匹配,“c” 互动确认。
  5. 保存与退出:“:q” 未修改时直接退出,“:q!” 强制不保存退出,“:wq!” 强制保存退出,“:e!” 放弃修改恢复原样,“:w” 保存当前文件,“:w 路径名/文件名” 另存为。

二十九、用户种类及 UID 划分

  1. 用户种类:分为超级用户(UID = 0)、管理用户(ID号位于1 - 999)和普通用户(标识号从1000开始)。超级用户可访问任何程序和文件,管理用户用于运行系统服务程序,普通用户需账号密码登录访问资源。
  2. UID 作用:系统内部用UID标识用户,与用户名一一对应,不同用户可共享UID,但口令、主目录、登陆Shell等可不同。

三十、用户和群组相关配置文件及含义,增加、删除命令

  1. 配置文件
    • /etc/passwd:每行记录一个用户信息,格式为LOGNAME:PASSWORD:UID:GID:USERINFO:HOMEDIR:SHELL。其中LOGNAME是登陆名,PASSWORD早期存放加密口令,现多为 “x” 等特殊字符,UID是用户标识号,GID是用户所属组号,USERINFO记录用户个人情况,HOMEDIR是主目录,SHELL是登陆后运行的命令解释器。
    • /etc/shadow:每行包括 8 个字段,格式为username:passwd:lastchg:min:max:warn:inactive:expireusername/etc/passwd中登陆名一致,passwd存放加密口令,其他字段分别表示从上次修改口令的天数、两次修改口令最小天数、密码有效最大天数、系统警告到密码失效天数、账号无登录活动但仍有效天数、账号生存期。
    • /etc/group:格式为groupname:passwd:GID:userlistgroupname是组名,passwd一般为空或 “*”,GID是组标识号,userlist是组内用户列表。
  2. 用户添加:命令行使用useradd命令,如sudo useradd –u 1001 –d /home/jack –m –s /bin/bash jack,还可指定注释、所属组、登陆shell等选项;图形界面可通过系统管理的用户和组设置进行添加,需设置名称、密码、账户类型等信息。添加后需设置密码才能登录。
  3. 用户删除userdel命令可删除用户相关信息,sudo userdel –r jack可同时删除用户主目录及其文件。
  4. 组添加:命令行用groupadd添加组,如groupadd user;也可手工编辑/etc/group文件添加。
  5. 组删除groupdel命令删除组;groupmod可修改组属性(如GID、组名);gpasswd可改变组成员、组密码等,如gpasswd -a student user1添加用户到组,gpasswd -d student user1从组删除用户。图形界面可在系统管理的组设置中操作。

三十一、网络配置及测试命令:ifconfig, ping, netstat 等

  1. IP 地址配置文件/etc/network/interfaces/etc/netplan/01-network-也可配置网络,如设置网关、域名服务器等。
  2. 主机名称配置文件/etc/hostname,用hostname命令查看当前主机名,hostname newname设置主机名,系统启动时读取该文件获取主机名。
  3. DNS 配置文件:可在/etc/hosts中设置主机名和对应IP地址进行静态查询,访问DNS服务器查询需设置/etc/resolv.conf文件。
  4. 网络测试命令
    • ifconfig:查看网卡设置,如ifconfig查看活动接口IP信息,ifconfig -a查看所有网卡配置,ifconfig eth0查看特定网卡配置,还可配置网卡IP地址(如ifconfig eth0 192.168.84.132)和更改网卡地址及子网掩码。
    • ifup/ifdown:启用(ifup eth0)或禁止(ifdown eth0)网卡,也可用ifconfig eth0 up/down实现。
    • route:查看路由表(route),包括目标网段或主机、网关地址、网络掩码等信息,还可添加(route add -net 10.0.0.0/24 gw 192.168.1.1)或删除(route del -net 10.0.0.0/24)静态路由,添加或删除默认网关(如route add default gw 192.168.1.1route del default gw 192.168.1.1)。
    • ping:测试网络连通性,如ping 202.99.160.68,按ctrl+C中断。
    • traceroute:跟踪数据包路径,需先安装(apt-get install traceroute),如traceroute 202.99.160.68
    • netstat:显示与IPTCPUDP协议相关统计数据,如-a列出所有socket-p显示使用Socket的程序信息,-r显示路由表,-t显示TCP连线状况,-u显示UDP连线状况。

三十二、安装 FTP 协议,Samba 协议的目的

  1. FTP 服务器
    • 安装目的:实现文件在不同计算机间的传输,FTP 客户机可对服务器发出命令进行下载、上传、创建或改变目录等操作,FTP 服务运行在 20(数据传输)和 21(控制流)端口。
  2. Samba 服务器
    • 安装目的:在 Linux 系统上为 Windows 客户机提供文件服务器功能,利用 Linux 的稳定性和低成本优势,适用于中小企业内网。

三十三、DHCP 工作流程

  1. 工作流程
    • 发现阶段:DHCP 客户机发送DHCPDISCOVER请求IP租约。
    • 提供阶段:DHCP 服务器回应DHCP OFFER提供IP租约。
    • 选择阶段:客户机发送DHCP REQUEST选择IP租约。
    • 确认阶段:服务器发送DHCPACK确认IP租约。此外还有重新登录和更新租约过程。

三十四、shell 的便捷操作

  1. 历史命令功能history [option] [arg…],无参数显示历史命令清单,可指定正整数显示最后若干行,或指定文件名进行相关操作。常用选项如-a添加、-n读取、-r替换、-w写入、-c删除。
  2. 执行历史命令:以!开头,如!!重复上条,!n执行第n条,!-n执行倒数第n条,!string执行以string开头的,!?string?执行包含string的。
  3. 配置历史命令环境HISTFILE改变存放文件,HISTSIZE设定保留个数。
  4. 自动补全功能:输入目录或文件名开头按Tab键补全。
  5. 别名功能alias [name[=value]]…,定义时用单引号防歧义,无参数显示别名清单。
  6. 取消别名unalias name…unalias -a删除所有别名。

三十五、四种类型 shell 变量的定义及使用

  1. 本地变量(用户自定义变量):在当前shell生命期脚本使用,variable-name=value设置,变量名大写,引用加$,用echo显示,unset删除,set显示所有,可结合显示、设置默认值、保存系统命令参数、设只读变量(readonly)。
  2. 环境变量:系统建立,用于所有用户进程,个人定义需export导出。如HOMEPATH等,设置用VARIABLE-NAME=value后接exportenv查看,unset清除,set可查看含本地和环境变量。
  3. 位置变量:向脚本传参,前 9 个直接$1-$9访问,十以上用${10}等,$0表示脚本名或命令本身。
  4. 预定义变量shell启动时定义,用户不能重定义,如$#(参数个数)、$*(所有参数字符串)、$$(进程ID)、$!(后台进程PID)、$?(命令退出状态)。

三十六、条件测试的格式及使用

  1. 文件状态测试test condition[ condition ](注意方括号条件两边空格),如-r(可读)、-w(可写)、-x(可执行)等判断文件属性,test[ ]形式结果相同。
  2. 逻辑操作符号-a(与)、-o(或)、!(否)用于比较两个文件状态。
  3. 字符串测试test “string”等格式,=!=判断相等不等,-z空串,-n非空串,有空格时字符串需加引号。
  4. 数值测试test number numeric_operator number[ number numeric_operator number ],数字可加引号,操作符有-eq(相等)等。

三十七、数值运算(let、$(())、expr 等)

  1. let 命令let express-list,表达式内变量不用加$,可进行算术运算。
  2. Bash 扩展$((expression))计算并返回值。
  3. expr 命令expr args,计算args值,+等运算符两边需加空格,返回标准输出。

三十八、控制流结构使用(if、case、for、while、until 等)

  1. if 语句if [ 条件命令 ]; then命令序列fi,可多层嵌套,还有if …else…fiif …elif…fi形式。
  2. case 语句case 变量值 in模式 1)命令列表 1;;*)命令列表n;; esac
  3. for 语句for 变量 in 字符串列表 do命令列表done
  4. while 循环while [ 条件 ] do命令列表done
  5. until 语句until [ 条件 ] do命令列表done

三十九、内嵌命令 break、continue、echo、read、export 等

  1. break:退出forwhileuntilcase语句。
  2. continue:结束本次循环进入下一次。
  3. echo:在屏幕显示字符串,有-n(不换行)、-e(特殊字符处理)选项。
  4. read:从键盘或文件读数据给变量,以空格分割,按回车或CTRL+D结束。
  5. export:导出变量给子进程。

四十、编写简单脚本程序,涉及从键盘或文件读入,从屏幕显示或写入文件

收起

bash

#!/bin/bash
# 从键盘读入姓名、性别、年龄并显示,同时写入文件
read name sex age
echo "Name: $name"
echo "Sex: $sex"
echo "Age: $age"
echo "$name $sex $age" >> output.txt

# 从文件读入内容并显示
while read LINE
do
    echo $LINE
done < input.txt

四十一、GCC 编译过程的具体步骤

  1. 预处理(Pre-Processing):命令GCC首先调用cpp进行预处理,对源代码文件中的文件包含、预编译语句进行分析,使用-E参数。
  2. 编译(Compilation):调用cc进行编译,根据输入文件生成以.s为后缀的汇编文件,使用-S参数。
  3. 汇编(Assembling):汇编过程调用as进行工作,将.S.s为后缀的汇编语言文件经过预编译和汇编成以.o为后缀的目标文件,使用-c参数。把汇编代码转换为机器可识别的目标代码。
  4. 连接(Linking):当所有的目标文件都生成之后,调用ld来完成最后的关键性工作。在连接阶段,所有的目标文件被安排到可执行程序中恰当的位置上,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方,使用-o参数。

四十二、gcc 命令的用法、选项的含义

  1. 基本用法gcc [option | filename],其中optiongcc使用时的选项,filenamegcc要处理的文件。例如gcc -o hello hello.c表示用gcc编译hello.c文件,并输出名为hello的可执行文件。
  2. 常用选项
    • -o:指定输出的可执行文件名。
    • -c:只要求编译器输出目标代码,而不输出可执行文件。
    • -g:在编译的时候提供以后对程序进行调试的信息。
    • -O:对程序进行优化编译、连接,提高执行效率,但会使编译、连接速度变慢。
    • -O2:比-O更好的优化编译、连接,编译、连接过程更慢。
    • -I dirname:将dirname所指出的目录加入到程序头文件目录列表中,用于预编译过程。
    • -L dirname:将dirname所指出的目录加入到程序函数档案库文件的目录列表中,用于连接过程。

四十三、make 工具的一般语法规则及执行命令,makefile 文件的编写及简化、优化

  1. 一般语法规则及执行命令
    • make工作时首先读入所有的makefile,如果该makefile文件中通过include包含有其他makefile文件,则读入被包含的makefile文件;接着初始化文件中的变量;推导隐晦规则,并分析所有规则;为所有目标文件创建依赖关系链;根据依赖关系,决定哪些目标要重新生成;最后执行生成命令。
    • 执行命令为make,在当前目录下按顺序找寻文件名为 “GNUmakefile”、“makefile”、“Makefile” 的文件作为makefile文件,通常使用 “Makefile”。若要指定特定的Makefile,可使用make -fmake --file参数。
  2. makefile 文件编写及简化、优化
    • 编写格式target: componentsTAB ruletarget是目标文件(可以是Object File、执行文件或标签),components是生成target所需要的文件或目标,rulemake需要执行的命令(任意的Shell命令)。例如:main: main.o mytool1.o mytool2.ogcc -o main main.o mytool1.o mytool2.o表示main目标文件依赖于main.omytool1.omytool2.o,生成规则是用gcc进行连接。
    • 变量使用:可以定义用户自定义变量(如objects = main.o mytool1.o mytool2.o)、预定义变量、自动变量及环境变量。变量在声明时需赋予初值,使用时在变量前面加上$符号,用(){}括起来。定义变量有递归展开式(=)和直接展开式(:=)两种方式。
    • 自动变量$@表示目标文件,$^表示所有的依赖文件,$<表示第一个依赖文件。利用这些自动变量可简化makefile文件,如main: $(objects)gcc -o $@ $^
    • 缺省规则:如.c.o:gcc -c $<表示所有的.o文件都依赖于相应的.c文件。每个Makefile中应写一个清空目标文件(.o和执行文件)的规则,如clean: rm $(objects),为避免因当前目录存在clean文件而导致命令不执行,可使用.PHONY : clean指明clean是伪目标。

四十四、GDB 调试工具的相关命令

  1. 启动方式
    • gdb <program>:调试program执行文件,一般在当前目录下。
    • gdb <program> core:同时调试一个运行程序和core文件(程序非法执行后core dump产生的文件)。
    • gdb <program> <PID>:调试指定进程ID的服务程序,program应在PATH环境变量中可搜索到。
  2. 基本命令
    • 查看文件及变量值(gdb) l列出产生执行文件的源代码的一部分;(gdb) p 变量名查看程序运行时变量的值。
    • 设置断点(gdb) b 行号或函数名<条件表达式>在代码里设置断点,使程序执行到此处挂起;(gdb) tbreak[文件名:]行号或函数名<条件表达式>设置临时断点,到达后自动删除。
    • 查看断点情况(gdb) info b查看所设断点信息。
    • 运行代码(gdb) r执行当前被调试的程序;(gdb) c继续执行函数,直到函数结束或遇到新的断点。
    • 单步运行(gdb) n执行一行源代码但不进入函数内部;(gdb) s执行一行源代码且进入函数内部;(gdb) step单步恢复程序运行且进入函数调用;(gdb) next单步恢复程序运行但不进入函数调用;(gdb) finish运行程序直到当前函数完成返回。
    • 其他命令(gdb) watch 变量名监视变量的值变化;(gdb) make不退出gdb重新产生可执行文件;(gdb) shell 命令不离开gdb执行UNIX shell命令;(gdb) kill终止正在调试的程序;(gdb) quit终止gdb

四十五、编写简单 C 语言程序,完成编写、编译、执行等过程

  1. 编写程序:例如以下程序计算阶乘并在主函数中调用。

// factorial.c
#include<stdio.h>
int factorial(int n)
{
    if (n <= 1) return 1;
    else return factorial(n - 1) * n;
}

// main.c
#include<stdio.h>
#include<stdlib.h> 
int factorial(int n); 
int main(int argc, char* argv[]) { 
    int n; 
    if (argc < 2) { 
        printf("Usage:%s n\n", argv[0]); 
        return -1; 
    }
    else { 
        n = atoi(argv[1]); 
        printf("Factorial of %d is %d.\n", n, factorial(n)); 
        return 0; 
    } 
}

  1. 编译过程
    • 可以使用gcc –o fac main.c factorial.c命令将main.cfactorial.c一起编译连接成可执行文件fac
    • 也可以分别编译各个源文件,再进行连接。如gcc -c main.cgcc -c factorial.c,然后 `gcc main.o factorial.o

      2.执行程序:

               1.在终端中输入 ./fac 6(假设实参数为 6),输出结果为 Factorial of 6 is 720。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值