Chapter1 Linux系统概况

内部版本

uname -r 

内核版本格式:

major.mirror.patch-build.desc
主版本号 次版本号 对mirror的修订次数 编译次数 当前版本特殊信息
wh@master:~$ uname -r
4.15.0-142-generic

新增明显功能时递增次版本号

次版本号有奇偶之分,奇数代表开发版,偶数代表稳定版,

开发版本趋于稳定后升级为稳定版本,

通过复制稳定版本得到开发版本。稳定版本只修改错误,开发版本继续增加功能。

desc域

rc  候选版本(release candidate)数字越大越接近于正式版
smp 堆成多处理器(Symmetric Multiprocessing)
pp red-hat pre-patch测试版本
EL red-hat Enterprise Linux企业版本
fc red-hat Fedora core

开源协议

BSD开源协议	用户可以自由使用,修改和发布符合BSD的软件,但不能宣称自主知识产权
Apache许可开源协议 Apache Firefox Tomcat
GPL开源协议 条款传染性 不允许闭源商业发布
LGPL开源协议 GPL开源协议改良但效果不乐观

自由使用,无限修改,再次发布,版权有主

Linux发行版和开源社区

Linux发行版的体系结构

应用软件(GCC、Firefox、GNOME等)
glibc标准库(遵循GPL协议)
Linux内核
硬件

按照收费模式:

服务收费版	IBM(Red Hat)、SURE
社区免费版 Ubuntu、Fedora、OpenSUSE、Centos、Debian
Centos、Debian主要用于后台,其他主要用于前台和嵌入式开发

按照软件包管理方法:

rpm包管理	SLES、Fedora、OpenSUSE、Centos、RHEL、Mandrake	rpm为扩展名
dpkg包管理 Ubuntu、Dabian deb为扩展名

开源社区:

howtoforge	tldp	sourceforge	linuxtoday
linuxworld distrowatch linuxfromscratch rpmfind
kernrl

Chapter2 安装linux

分区

硬盘的磁道与扇区

马达通过串联的磁道高速旋转,旋转速度一分钟多少圈来表示,7200rpm表示每分钟转7200圈。

计算机只要一开机,磁碟就在高速旋转

磁面 磁头 磁道 扇区

每个磁碟都有两个面,上下两面对应两个磁头

外圈磁道–中间磁道–内圈磁道

每个磁碟面上具有相同半径的磁道是一个柱面,从外向里,0柱面–1柱面–2柱面–……

磁道划分的弧段成为扇区,编号为1扇区,2扇区,3扇区……

图2.2上有10个扇区

扇区是硬盘访问的最小的单位,单扇区可以存放512字节

image-20221025134107055

CPU访问硬盘上的某一扇区,需要使用CHS寻址

(柱面号,磁头号,扇区号)

硬盘总容量=柱面数*磁头数 *每磁道扇区数 *512

硬盘分区

柱面是分区的边界,一个分区包含整数个连续编号的柱面,若柱面0999为主分区1,柱面10003000为主分区2,剩下柱面组成扩展分区。

image-20221025135858017

image-20221025135933704

分区命名

Llinux硬盘分区使用文件名来表示,格式为:

image-20221025140509555

如果存在扩展分区,那么其命名一定为/dev/sda4(假定为第一块硬盘),/dev/sda5,/dev/sda6 ……为逻辑分区

在Linux系统中,U盘等同于SATA硬盘,光盘命名为/dev/cdrom

文件系统

Linux实际文件系统位于虚拟文件系统之下,常见的文件系统类型,如ext2,ext3,ext4,xfs,brtfs,zfs等

man 5 fs

windows常见文件系统只有FAT32和NTFS,默认采用后者。

显示全部的分区:

image-20221025142051267

初步管理

系统和服务管理

image-20221025150637656

使用systemctl命令来通知systemd进程完成一些工作

image-20221025150837788

登录、锁屏和注销

image-20221025151012420

对于ubuntu有七个登陆屏幕,第七个就是图形界面

image-20221025151408546

ubuntu默认不允许root用户登录,可以通过普通用户跳转到root用户进行修改

image-20221025151602872

配置网络

service network-manager start  启动网卡

查看系统信息,包括主机名称:

image-20221026224939878

image-20221026225417199

image-20221026225523865

配置安装源

省略

image-20221026225930913

添加、删除和升级软件包

image-20221026230039664

image-20221026230124716

作业

(1)请写出计算机里的第一块SATA硬盘的第三个主分区和第二个逻辑分区所对应的设备文件。

/dev/sda3 /dev/sda6

(2)请解释/dev/sdb3、/dev/sda8和/dev/hdal的意思。

/dev/sdb3	计算机里的第二块SATA硬盘的第三个主分区
/dev/sda8 计算机里的第一块SATA硬盘的第四个逻辑分区
/dev/hdal 计算机里的第一块IDE硬盘的第一个主分区

(3)假设计算机物理内存为1.5GB、有一个SATAⅡ硬盘500GB,现在需要安装Windows XP和Ubuntu10.04,请规划一个硬盘分区方案。

windows xp 200多G就可以,然后分区就行了。

Chapter3 用户、组和身份认证

多用户系统

静态Linux系统:

根分区的文件、目录和交换分区组成。(内容不改变)

动态Linux系统:

根分区的文件、目录和虚拟内存(交换区和物理内存)中的进程组成。(内容时刻变化)

动态Linux系统(多用户运行级别)允许已注册的用户登录

用户和组

用户

image-20221025155501304

用户名:账号
口令:密码。身份鉴别
用户ID号:UID,允许不唯一,由于权限控制,相同UID拥有相同权限
属组:每个用户归属于一个主要组群,但可以归属于多个附加组群,用于管理同一类用户的权限
家目录:/home/username
登录shell:用户登陆Linux的过程中最后执行的程序称为shell程序,用户输入的命令由shell代为执行,作为“壳”,常用的shell程序有bash,dash,tcsh。但是特殊的shell,如nologin,false,他们执行立即退出系统。
备注:主要保存在/etc/passwd,加密后的密码保存在/etc/shadow(密码影子文件)

/etc/passwd每一行对应一个用户,格式为:

用户名:密码:UID:GID:备注:家目录:shell

举例为:

image-20221025161106460

/etc/shadow也是一行对应一个用户,格式为:

账号:密码:上一次修改密码的时间:密码有效期最少天数:密码有效期最多天数:密码修改警告期:密码非活动期:账号失效天数:

image-20221025161449167

image-20221025161648533

超级用户:root,安装系统时默认创建,权力最大,UID=GID=0,
系统用户:安装系统或应用时默认创建,UID<500(Red Hat)UID<1000(Ubuntu),不可用于登录
普通用户:root分配权限,UID>500(Red Hat)UID>1000(Ubuntu)

/etc/group

image-20221025162212435

image-20221025162339631

一个用户有且只有一个主要组群,但可以有0或多花个附加组群,一个组群可以有0或多个用户,

管理

Linux常见命令格式:

<命令><选项><目标>

创建组:

groupadd class1
创建组群class1
groupadd -g 555 grade2
创建GID为555的组群grade2
groupadd -g 0 -o administrators
创建root组群的别名组群administrators
只能创建不存在的组群

删除组群:

groupdel class1

修改组群属性:

groupmod -g 1650 sales
修改sales的GID为1650
groupmod -n sales1 sales
修改sales组名为sales1
groupmod -g 1650 -n sales1 sales

查看组群属性:

cat /etc/group
tail /etc/group
more /etc/group

image-20221025164851566

创建用户:

image-20221025165317541

root@master:/home/wh# useradd zsan
root@master:/home/wh# groupadd sales
root@master:/home/wh# useradd -u 1005 -d /home/lisihome -g sales -s /bin/tcsh lisi
root@master:/home/wh# useradd -u 1005 -o zsan1
root@master:/home/wh# groupadd sales1
root@master:/home/wh# groupadd class1
root@master:/home/wh# useradd -u 1006 -g sales1 -G class1,root -c "The sales and admin" -e 2099-1-1 himan
root@master:/home/wh# useradd -r -s /bin/false ldap
root@master:/home/wh# useradd -m -d /home/odoo -s /bin/bash -G sudo odoo
root@master:/home/wh# tail /etc/passwd
saned:x:119:127::/var/lib/saned:/bin/false
usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
wh:x:1000:1000:wh,,,:/home/wh:/bin/bash
sshd:x:121:65534::/var/run/sshd:/usr/sbin/nologin
zsan:x:1001:1001::/home/zsan:
lisi:x:1005:1002::/home/lisihome:/bin/tcsh
zsan1:x:1005:1005::/home/zsan1:
himan:x:1006:1006:The sales and admin:/home/himan:
ldap:x:999:999::/home/ldap:/bin/false
odoo:x:1007:1008::/home/odoo:/bin/bash

删除用户:

image-20221026191801755

root@master:/home/wh# userdel zsan1
root@master:/home/wh# userdel -r zsan
userdel: zsan mail spool (/var/mail/zsan) not found
userdel: zsan home directory (/home/zsan) not found
root@master:/home/wh# userdel -f -r abc
userdel: user 'abc' does not exist

修改用户:

image-20221026191854057

root@master:/home/wh# usermod -d /opt/zsan -s /bin/tcsh -g grade1 -G class2 -a -l zsan2 -u 1020 -m zsan
root@master:/home/wh# tail /etc/passwd
rtkit:x:118:126:RealtimeKit,,,:/proc:/bin/false
saned:x:119:127::/var/lib/saned:/bin/false
usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
wh:x:1000:1000:wh,,,:/home/wh:/bin/bash
sshd:x:121:65534::/var/run/sshd:/usr/sbin/nologin
lisi:x:1005:1002::/home/lisihome:/bin/tcsh
himan:x:1006:1006:The sales and admin:/home/himan:
ldap:x:999:999::/home/ldap:/bin/false
odoo:x:1007:1008::/home/odoo:/bin/bash
zsan2:x:1020:1009::/opt/zsan:/bin/tcsh
root@master:/home/wh#

用户密码管理:

image-20221026192011028

passwd zsan

查看用户信息:

root@master:/home/wh# id zsan2
uid=1020(zsan2) gid=1009(grade1) groups=1009(grade1),1010(class2)
root@master:/home/wh# finger zsan2
The program 'finger' is currently not installed. You can install it by typing:
apt install finger

more /etc/passwd

image-20221026192601142

cat /etc/passwd

image-20221026192656922

tail /etc/passwd

image-20221026192837455

登录过程和环境变量

用户登录过程

image-20221026193057538

环境变量:

常见环境变量

LANG=zh_CN.UTF-8
HOME=/home/zsan
LOGNAME=zsan
PATH =/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/zsan/.local/bin:/home/zsan/bin
SHELL=/bin/bash
PWD=/home/zsan
env  # 显示全部环境变量

image-20221026193622900

image-20221026193709498

echo $HOME

image-20221026193851846

设置环境变量采用export(慎用)

image-20221026194153821

删除环境变量使用set

unset HELLO

unset和export定义的变量是临时的,注销或重启后就没有了,

修改/etc/profile 或~/.bashrc才能永久修改

shell变量

image-20221026194352765

作业:

(l)创建用户wang,该用户具有如下属性:家目录/var/home/wang,登录Shell是/bin/sh,归属主要组群mail,同时属于附加组群users和fuse的成员,初始密码123456,并在用户首次登录时提示修改密码,要求该用户每隔90天修改一次密码,请写出命令序列。

useradd -d /var/home/wang -s /bin/bash -e 90 -g mail -G users,fuse wang
passwd wang
change -M 0 wang

(2)假设用户zsan已经存在,家目录是/home/zsan,登录Shell是/bin/bash,帮助该用户设置永久有效的用户环境变量(其他用户不受影响):
HELLO “I am fine”

NAME “Zhan san”

echo "export HELLO = "I am fine" ">>/home/zsan/.bashrc
echo "export NAME = "Zhan san" ">>/home/zsan/.bashrc

(3)文件/etc/passwd中的一行信息如下:
jack:x:501:1001:The superman:/home/jackhome:/bin/bash
解释各个字段的含义。

用户名:密码:UID:GID:备注:家目录:shell

(4)文件/etc/shadow有如下一行:
woman:$6$87wjcyRCGHJ2rPOb.SQw:15142:10:20:3:5:16253:
解释各个字段的含义。

账号:密码:上一次修改密码的时间:密码有效期最少天数:密码有效期最多天数:密码修改警告期:密码非活动期:账号失效天数:

Chapter4 文件系统

Linux目录树

Linux根文件系统:

image-20221026204530506

Linux目录用途:

image-20221026204624455

image-20221026204644600

文件分类:

目录:

根目录   /
当前目录 . ./
父目录 .. ../
绝对目录 /开头的目录
相对目录 非/开头的目录
家目录 ~ $HOME 或者直接 cd 不带目录也可以

文件:

普通文件
链接文件
设备文件
套接字开头
管道文件

目录漫游:

返回家目录: cd 或cd ~ 或 cd $HOME
返回上一次离开的目录:cd -

目录管理

mkdir /tmp/abc
mkdir -p a/b/c/p
mkdir 321
rm -r 321 file 同时删除321和file两个目录
rm -rf optr 不警告直接删除optr,若不不存在报错

不可根据后缀来判定文件类型,file命令判断:

wh@master:~$ file Music/
Music/: directory

首字母为.的文件为隐藏文件

“普通文件”是用一些相关的应用程序(例如图像工具、文档工具、归档工具…或cp 工具等)创建的文件。

“设备文件”存放在“/dev”目录中,用命令mknod创建,没有大小,但附有主/次设备号。设备文件是应用程序调用设备驱动的接口,例如编程时打开一个设备文件,然后读写,最后关闭,其实是调用了设备驱动的相应接口函数。在Linux系统中,网卡设备命名有点特殊,不存在网卡设备文件,在Ubuntu中依次命名为eth0、ethl、eth2,…,分别表示第一块网卡、第二块网卡、第三块网卡、…,在红帽7.0中,网卡的命名格式为ensx,x为插槽位。

“管道文件”又叫命名管道,是实现在同一台计算机上无关进程之间进行通信的机制—一一个进程以“读”方式打开一个管道文件,另一个进程以“写”方式打开同一个管道文件,此后它们就可以互相通信了。创建命名管道文件的命令是mkfifo,例如mkfifo pipel,即在当前目录下创建命名管道文件pipel。

“套接字文件”是实现进程间通信的机制(要通过TCP/IP协议栈)之一,与命名管道不同的是,通信双方不一定要在同一台计算机上。创建套接字文件需要通过编程(调用socket函数)来完成。

“链接文件”分为硬链接文件和符号链接文件,可以理解为“指针”,只不过硬链接是指向另一个文件体,而符号链接是指向另一个文件名,示意图如图所示。

image-20221027205642930

建立符号链接文件的命名格式为:

ln -s 被凝结文件名 链接文件名

建立硬链接文件的命名格式为:

ln  被凝结文件名 链接文件名

符号链接可以跨磁盘分区(或者跨文件系统),而硬链接不可以;可以对目录建立符号链接,但不能对目录建立硬链接。

cp <源文件> <目的文件>
cp file.txt file.old
cp /etc/profile /tmp
cp 123.jpg ../
cp -r /etc/init.d ./ 把整个目录/etc/init.d复制到当前目录中
mv <源文件> <目的文件>
mv file.txt file.new
mv /tmp/profile /home
rm [-r] <文件>
rm file.txt 123.txt 同时删除file.txt和123.txt
cat /etc/profile
more /etc/profile
head file.txt
tail fiel,txt

文件权限

image-20221027210705252

0:代表文件类型。d表示目录,-表示普通文件,1表示连接文件,b表示块设备文件,c表示字符设备,p表示管道文件,s表示套接字文件。

1: 权限。r表示读,w表示写,x表示执行,- 表示无权限,sl s 表示权限临时切换,tlT表示任何用户能存取文件

2: 表示目录中的文件数目或文件的硬链接数。

3: 文件的主人。

4:文件的组群。

5: 如果是普通文件则表示大小,如果是目录则表示该目录包含的文件名所占据的大小(4096字节的整数倍,但至少4096个字节)。

6:修改日期。

7: 文件或目录名。

image-20221027211221838

文件权限管理

chmod [-R] <权限> <文件>
chmod 644 file
chmod u+x 123 赋予文件123的主人可执行权限。u表示主人,g表示组,0表示其他人

chmod [-R] <账号> <文件> 修改文件的主人
chown zsan: classl profile profile的主人改成zsan,组群改成classl

chgrp [-R]<组群><文件> 修改文件的组群
chgrp class2 file

文件管理

文件通配符

bash扫描输入时出现

*	?	···

未出现转义字符(\)时,认为进入匹配模式

rm -rf /tmp/1*2 "1*2" /etc/profile

image-20221027212703602

* ? ···就是文件通配符

“*”匹配0个或多个字符,”?”匹配1个字符,”···”只匹配其中的1个字符

[!···]和[^···]不匹配其中的任何一个字符

image-20221027213557018

image-20221027213625974

文件操作

image-20221027213743737

image-20221027213854482

作业

Chapter 5 Vi/Vim

vim的三种模式

image-20221027214413473

image-20221027214741831

vim的基本操作

set autoindent
set nu
set ts=4
syntax enable 语法高亮显示
set wrap
set hlsearch
set no*
help

image-20221027234150494

建议将定制好的工作环境命令放到”~/.vimrc”

set autoindent
syntax enable
syntax on
set nu
set nowrap
set sw=4 ts=4
set softtabstop=4
set shiftwidth=4
set expandtab
set hlsearch
set ruler
set showcmd
set cindent
set smartindent
set tabstop=4
filetype on
colorscheme desert

进入插入模式

image-20221027231435394

移动光标

image-20221027234441099

查找与替换

image-20221027231716202

存盘与退出

image-20221027231737510

拷贝粘贴与删除

image-20221027231800140

编辑命令

image-20221027231853962

image-20221027231916826

多文件编辑

image-20221027234518254

image-20221027232219198