高级Linux系统 知识梳理

第一章 Linux系统初步了解

Linux系统应用领域:Linux服务器;嵌入式Linux系统;软件开发平台;桌面应用

Linux系统的特点:开放性;多用户;多任务;良好的用户界面;设备独立性;丰富的网络功能;可靠的系统安全;良好的可移植性

Linux系统的组成:内核;shell;文件系统;应用程序

1 内核

内核是操作系统的核心,具有很多最基本的功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能。

Linux内核的主要模块分为存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、系统的初始化和系统调用等几个部分。

2 Shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行。Shell是一个命令解释器,它解释由用户输入的命令并且将他们送到内核。

3 文件系统

文件系统是文件存放在磁盘等存储设备上的组织方法。

4 应用程序

标准的Linux系统都有一套称为应用程序的程序集,它包括文本编译器、编程语言、Xwindow、办公软件、影音软件、Internet工具和数据库等。

Linux内核版本:r.x.y

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

x:偶数表示稳定版本,技术标书开发版本

y:错误修补的次数

主流Linux发行版本:Redhat、SUSE、Oracle、CentOS、Ubuntu、Debian、Mandriva、Gentoo…

 

第二章 安装Linux系统

交换分区:虚拟内存是为了满足物理内存的不足而提出的一种策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换分区(swap分区)。内核会将暂时不用的内存块信息写到交换分区,当需要用到原始内容时,这些信息会被重新从交换分区读入物理内存。Linux的内存管理采取的是分页存取机制,会时不时进行页面交换操作,以保持尽可能多的空闲物理内存,Linux内核根据“最近最常使用”算法将不经常使用的页面文件交换到虚拟内存。

分区命名方案:文件名的格式为/dev/xxyN

/dev:这是Linux系统中所有设备文件所在的目录名

xx:分区所在设备的类型,通常是hd(IDE硬盘)或sd(SCSI硬盘)

y:分区所在的设备,例如/dev/hda是第一个IDE硬盘,/dev/sdb是第二个SCSI硬盘

N:代表分区,前4个分区(主分区或扩展分区)用1~4表示,逻辑驱动器从5开始。

挂载目录:Linux系统中的每一个分区都是构成支持一组文件和目录所必需的存储区的一部分,它是通过挂载来实现的,挂载是将分区关联到某一目录的过程。例如,如果分区/dev/sda5被挂载在目录/usr上,这意味着所有在/usr下的文件和目录在物理上位于/dev/sda5。

硬盘分区规划

(1)最简单的分区规划

Swap分区:交换分区,实现虚拟内存,建议大小是物理内存的1~2倍

/boot分区:用来存放与Linux系统启动有关的程序

/分区:建议大小至少在10GB以上

(2)合理的分区规划

Swap分区:实现虚拟内存

/boot分区:建议大小最少为200MB

/usr分区:用来存放Linux系统中的应用程序

/var分区:用来存放Linux系统中经常变化的数据以及日志文件

/分区:Linux系统的根目录,所有的目录都挂载这个目录下面

/home分区:存放普通用户的数据,是普通用户的宿主目录

firewallD防火墙:存在于计算机和网络之间,用于判断网络中的远程用户的访问权限。提供了支持网络/防火墙区域定义网络链接以及接口安全等级的动态防火墙管理工具。通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略,以此来控制不同程度区域间传送的数据流。

 

第三章 字符界面操作基础

1 Linux字符界面

systemctl get-default  //查看计算机系统启动后要进入的默认目标

systemctl set-default multi-user.target   // 设置计算机启动默认进入字符界面

systemctl set-default graphical.target   //设置计算机启动默认进入图形化界面

超级用户root登录后提示符是“#”,其他用户登录后提示符是“$”。

2 图形界面下的终端

3 虚拟控制台

Linux系统提供了虚拟控制台的访问方式:字符界面下,按下[Alt+F2]说明进入了第二个虚拟控制台。图形界面下,按下[Ctrl+Alt+F2]切换虚拟控制台。

shutdown -h now   //立即关闭计算机系统

shutdown -h +45   //定时45分钟后关闭计算机系统

shutdown -r now   //立即重新启动计算机系统

shutdown -r 01:38    //定时在1点38分重新启动计算机系统

halt   //使用halt命令关闭系统

reboot   //使用reboot命令重启计算机系统

4 在Linux系统下获取帮助

Man手册页,资源位于/usr/share/man目录下,命令语法:man [选项] [名称]

--help选项,显示命令的使用方法以及选项的含义

5 shell简介:shell接收用户命令,然后调用相应的应用程序,同时它还是一种程序设计语言,是系统管理维护时的重要工具。大部分Linux系统的默认shell类型为bash。

6 命令排列

命令1;命令2   //先执行命令1,不管命令1是否出错,接下来就执行命令2

命令1&&命令2   //只有当命令1正确运行完毕后,才能执行命令2

7 命令替换

命令1 $(命令2)  或者  命令1 `命令2`

8 命令别名

alias [别名]=[需要定义别名的命令]   //创建别名

unalias [别名]   //取消别名

9 文件名匹配

通配符“*”:匹配一个或多个字符    通配符“?”:匹配一个字符

10 管道

[命令1]|[命令2]|[命令3]   //可将某个命令的输出信息当作某个命令的输入

11 重定向

输出重定向:将某一命令执行的输出保存到文件中  [命令] > [文件]

ls /boot > /root/abc   //使用输出重定向将/boot目录的内容保存到/root/abc文件中

echo Hello > /root/mm   //使用echo命令和输出重定向创建/root/mm文件,内容hello

echo Linux >> /root/mm   //使用输出追加重定向将数据写入文件/root/mm

输入重定向:将某一文件的内容作为命令的输入  [命令] < [文件]

cat < /root/mm   //使用输入重定向将文件/root/mm的内容作为输入让cat命令执行

cat > /root/bc << EOF

> Hello Linux

> EOF   //使用输入追加重定向创建/root/bc文件

错误重定向:将某一命令执行的出错信息输出到指定文件中  [命令] 2> [文件]

cat /root/kk 2> /root/b   //cat查看不存在的/root/kk文件,出错信息保存至/root/b中

cat /root/kk 2>> /root/b   //错误追加重定向,多次出错信息保存到/root/b中

同时实现输出和错误重定向   [命令] &> [文件]

ls /boot &> /root/kk   //同时使用输出和错误重定向

12 vi编辑器

输入vi和文件名称,如果还不存在该文件则创建文件;如果存在则编辑该文件。

vi编辑器由3种基本工作模式:命令模式、插入模式、末行模式。

高级Linux系统 知识梳理

(1)命令模式:进入vi编辑器后则处于命令模式。可控制屏幕光标的移动,字符、字或行的删除,某区域的移动、复制等。在命令模式上,按冒号键“:”可以进入末行模式,按字母键“a”就可以进入插入模式。

高级Linux系统 知识梳理

(2)插入模式:只有在插入模式下,才可以进行文本编辑。按“ESC”键回到命令模式。

(3)末行模式:将文件保存或退出vi编辑器,也可以设置编辑环境、替换字符或删除字符,按“ESC”键可以回到命令模式。

高级Linux系统 知识梳理

 

第四章 目录和文件管理

1 Linux系统以目录的形式挂载文件系统,其目录结构是一个分层的树形结构。链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的方法,Linux包括硬链接和软链接。

2 Linux文件类型

(1)普通文件(-rw-------)属性第一个符号是“-”,这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具或归档工具等。

(2)目录文件(drwxr-xr-x)属性第一个符号是“d”。

(3)设备文件

       块设备文件(brw-rw----)属性第一个符号是“b”,主要特点是随机读写,最常见的块设备是磁盘。

       字符设备文件(crw--w----)属性第一个符号是“c”,最常见的字符设备文件是打印机和终端,可以接受字符流。/dev/null是一个非常有用的字符设备文件,送入这个设备的所有内容都被忽略。

(4)管道文件(prw-------)属性第一个符号是“p”,也被叫做FIFO文件(先进先出),从一头流入,从另一头流出。

(5)链接文件

       软链接文件:又叫符号链接文件,这个文件包含了另一个文件的路径名。在对软链接文件进行读写的时候,系统会自动地把该操作转换为对源文件的操作,但删除软链接文件时,系统仅仅删除软链接文件,而不删除源文件本身。(lrwxrwxrwx)属性第一个符号是“l”。

       硬链接文件:硬链接是已存在文件的另一个文件,对硬链接文件进行读写和删除操作时,结果和软链接相同。但如果删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的文件,这是其为一个普通文件。属性的第二列的文件硬链接数大于1。

3 Linux目录结构

Linux系统都有根文件系统,它包含系统引导和使其他文件系统得以挂载所必要的文件,根文件系统需要有但用户状态所必需的足够的内容,还应该包括修复损坏系统、恢复备份等工具,Linux系统的目录结构是分层的树形结构,都是挂载在根文件系统“/”下。

4 文件和目录操作

pwd   //显示用户当前工作目录路径

cd /etc   //更改用户工作目录路径为/etc

cd ..   //更改目录位置至当前目录的父目录

cd ~   //更改目录位置为用户主目录

cd ~zhangsan   //更改目录位置为用户zhangsan的主目录

ls -al /root   //显示/root目录下所有文件目录的详细信息,包括隐藏文件

第一列:第一个字符表示文件的类型;第2-4个字符表示文件的用户所有者对此文件的访问权限;第5-7个字符表示文件的组群所有者对此文件的访问权限;第8-10个字符表示其他用户对此文件的访问权限。

第二列:文件的链接数

第三列:文件的用户所有者

第四列:文件的组群所有者

第五列:文件长度(文件大小,不是文件的磁盘占用量)

第六-八列:文件的更改时间(mtime),或文件的最后访问时间(atime)

第九列:文件名称

touch file1   //创建空文件file1

touch file2 file3   //创建空文件file2和file3

touch -c -t 06071930 file1   //将文件file1的时间记录改为6月7日19点30分

mkdir newdir1  //创建目录newdir1,其默认权限为755

rmdir newdir1   //删除空目录newdir1

cp /etc/grub2.cfg /root/grub   //将/etc/grub2.cfg文件复制到/root目录下,并改名为grub

cp /etc/grub2.cfg /root   //将/etc/grub2.cfg文件复制到/root目录下

cp -r /boot /root   //将/boot目录中的所有文件及其子目录复制到目录/root中

mv -f /root/picture/*.png /usr/local/share/picture   //将/root/picture下所有后缀名为“.png”的文件移到/usr/local/share/picture目录下

mv /root/picture/kdepic.png /root/picture/life.png   //把/root/picture目录下的文件kdepic.png改名为life.png

mv /root/picture /root/mypicture   //把目录/root/picture名称更改为/root/mypicture

rm file4   //删除当前目录下的file4文件

rm -rf /root/ab   //连同文件/root/ab/a和目录/root/ab一起删除

wc /root/aa   //统计/root/aa文件的行数、单词数和字符数

5 链接文件

硬链接:一个指针,指向文件inode,系统并不为它重新分配inode,两文件具有相同的inode。硬链接节省空间,也是Linux系统整合文件系统的传统方式。

(1)不允许给目录创建硬链接

(2)只有在同一文件系统中的文件之间才能创建链接

软链接:符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件,和Windows下的快捷方式相似。甚至可以链接不存在的文件,产生“断链”的问题,可以循环链接自己。

ln a b   //硬链接文件的使用

ln -s a b   //软链接文件的使用

 

第五章 Linux常用操作命令

1 文本内容显示

cat /etc/inittab   //显示/etc/inittab文件的内容

cat -n textfile1 > textfile2   //把textfile1文件的内容加上行号后输入到textfile2文件中

cat >mm.txt<<EOF   //用cat命令创建mm.txt

more /etc/services   //分页显示/etc/services文件的内容

more -s testfile   //逐页显示testfile文件的内容

more +20 testfile   //从第20行开始显示testfile文件的内容

more -2 /etc/passwd   //一次两行显示/etc/passwd文件内容

less /etc/services   //回卷显示/etc/services文件的内容

head -c 100 /etc/passwd   //查看/etc/passwd文件的前100个字节数据内容

head -3 /etc/passwd   //查看/etc/passwd文件的前3行数据内容

tail -3 /etc/passwd   //查看/etc/passwd文件末尾3行数据内容

tail -c 100 /etc/passwd   //查看文件/etc/passwd末尾100字节的数据内容

2 文本内容处理

sort textfile1   //将文件textfile1数据排序,并显示在屏幕上

sort -r textfile1   //以倒序排序该文件并显示在屏幕上

uniq -d file3   //查看file3文件中重复数据内容

uniq -u file3   //查看file3文件中不重复的数据内容

cut -f 1,5 -d:/etc/passwd   //显示文件/etc/passwd中的用户登陆名和用户名全称字段,这是第1个和第5个字段,由冒号隔开

comm file1 file2   //没指定参数,读取后输出三列:file1特有;file2特有;共有

comm -12 file1 file2   //只显示file1和file2中相同行的数据内容

-1 不输出文件1特有的行

-2 不输出文件2特有的行

-3 不输出两个文件共有的行

diff file1 file2   //看到file1和file2的不同处

3 文件和命令查找

grep ‘test file’ kkk   //在文件kkk中搜索匹配字符“test file”

grep ‘test’ d*   //显示所有以d开头的文件中包含“test”的行数据内容

grep ^b /root/aa   //在/root/aa文件中找出以b开头的行的内容

grep -v ^b /root/aa  //在/root/aa文件中找出不是以b开头的行的内容

grep le$ /root/kkk   //在/root/kkk文件中找出以le结尾的行内容

ps -ef|grep sshd   //查找sshd进程信息

find /boot -name grub.cfg   //查找/boot目录下的启动菜单配置文件grub.cfg

find / -name ‘*.conf‘   //查找/目录下所有以“.conf”为扩展名的文件

find . -ctime -20   //列出当前目录及其子目录下所有最近20天内更改过的文件

locate httpd.conf   //查找httpd.conf文件

locate -c httpd.conf   //显示找到几个httpd.conf文件

4 系统信息显示

uname -r   //显示操作系统的内核发行号

uname -m   //显示计算机硬件架构名称

uname -a   //显示操作系统的全部信息

hostname   //显示当前计算机主机名

hostname LINUX  //修改计算机主机名为LINUX

free   //查看系统的物理内存和交换分区的使用情况

free -m   //以MB为单位查看系统的物理内存和交换分区使用情况

free -t   //显示系统的物理内存加上交换分区总的容量

du /etc/inittab   //显示文件/etc/inittab的磁盘占用量

du -s /root   //显示/root目录磁盘占用量

du -sh /root   //以MB为单位显示/root目录磁盘占用量

5 日期和时间

cal   //显示本月的月历

cal 2001   //显示公元2001年年历

cal 9 2007   //显示公元2007年9月的月历

cal -m   //以星期一为每周的第一天的方式显示本月的日历

cal -jy   //以1月1日起的天数显示今年的年历

date   //显示当前计算机上的日期和时间

date 0202191428   //设置计算机日期和时间为2028年2月2日19点14分

date +’%r%a%d%h%y’   //按照指定的格式显示计算机日期和时间

date -s 09:16:00   //设置计算机时间为上午9点16分

date -s 240414   //设置计算机时间为2024年4月14日

hwclock   //查看硬件时间

hwclock -w   //以系统时间更新硬件时间

hwclock -s   //以硬件时间更新系统时间

6 信息交流

echo Hello Linux   //将一段信息写道标准输出

echo Hello Linux > notes   //将文本“Hello Linux”添加到新文件notes中

echo $HOME   //显示$HOME变量的值

mesg   //显示当前的消息许可设置

mesg n   //只允许root用户发送消息到自己的主机

wall ‘下班以后请关闭计算机’   //向所有用户发出“下班以后请关闭计算机”的信息

write root tty3   //在tty2终端上向tty3终端上的root用户发送信息

7 其他命令

clear   //清除计算机屏幕上显示的信息

uptime   //显示系统运行时间

 

第六章 shell编程

1 开头

shell程序必须以下面的行开始: #!/bin/bash

要使脚本可执行,需赋予该文件可执行的权限,使用命令: chmod u+x [文件名]

2 注释

以“#”开头的句子表示注释

3 执行命令

在shell程序中可以输入多行命令以得到命令的结果信息,提高系统管理的工作效率。

(1)创建文件:在/root目录下使用vi编辑器创建文件date

(2)设置可执行权限:chmod u+x /root/date

(3)执行shell程序:/root/date

(4)使用bash命令执行程序:bash /root/date

4 shell变量

(1)环境变量

高级Linux系统 知识梳理

echo $HOME   //查看当前用户shell定义的环境变量的值

(2)用户定义的变量

定义自己的变量: 变量名=变量值

在定义变量时,变量名前不应该加符号“$”,在引用变量的内容时则应在变量名前加符号“$”。

在变量赋值时,等号两边一定不能留空格,有空格的话整个字符串都要用双括号括起来。

AS=120   //定义变量

AA=“hello world”   //定义变量

echo $AS   //引用变量

readonly 变量名   //设置为一个特定值,保证其只读性

export 变量名   //将局部变量提供给shell命令使用

3 变量表达式

test 测试字符串、文件状态和数字

字符串比较: = 是否相同  !=是否不同   -n是否大于0   -是否等于0

test $str1=abcd

echo $?

数字比较: -eq相等 -ge大于等于 -le小于等于 -ne不等于 -gt大于 -lt小于

test $int1 -eq $int2

echo $?

逻辑测试:测试文件是否存在 !相反 -a都为是 -o一个是即可

文件操作测试:文件操作逻辑

4 shell条件判断语句

if-then-fi

高级Linux系统 知识梳理

 

if-then-else-fi

高级Linux系统 知识梳理

 

case

高级Linux系统 知识梳理

 

5 shell循环控制语句

for

高级Linux系统 知识梳理

高级Linux系统 知识梳理

 

while

高级Linux系统 知识梳理

 

until

高级Linux系统 知识梳理

 

第7章 用户和组群账户管理

root用户是系统的最高管理者,用户的UID是0级。

1 用户账户简介

root用户权限最高。超级用户。

系统用户(虚拟用户、伪用户、假用户),不具有登录Linux系统的能力。UID为1-999

普通用户,能登录能进行普通操作,系统管理员创建。UID为1000-60000

/etc/passwd文件:识别用户的重要文件,登录系统时检查该文件,通过UID确认用户身份,存在的话则读取对应密码。任何用户都可读取该文件内容。一行7个段位,用:分隔“用户名:密码(x):UID:GID:用户名全称:主目录(/home):登录shell(/bin/bash)”

/etc/shadow文件:是/etc/passwd的影子文件,两个文件对应互补,包括用户及被加密的密码以及其他/etc/passwd不能包括的信息,比如账户的有效期限等。只有root可读取操作。9个段位,用:分隔。“用户名:加密密码:最后一次修改密码的间隔天数:可更改密码的天数:必须更改密码的天数:密码更换前警告的天数:账户被取消**前的天数:账户过期天数:保留字段”

2 用户账户设置

useradd zhangsan   //创建用户账户zhangsan

passwd zhangsan   //设置密码

useradd -u 1510 moon   //创建用户moon,并设置用户UID为1510

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

useradd -g root pp   //创建用户pp,指定属于组群root成员

useradd -s /bin/ksh abs   //创建用户abc,设置用户的shell类型是/bin/ksh

usermod -d /home/kkk zhangsan   //修改zhangsan的主目录为/home/kkk,手动

usermod -d /home/opop -m wangwu  //修改主目录为/home/opop,自动创目录

usermod -l zhaoliu wangwu   //修改wangwu的登录名为zhaoliu

usermod -c 张三 zhangsan   //修改zhangsan的用户名全称为张三

usermod -f 20 zhangsan   //修改用户在密码过期20天就禁用该账户

usermod -g root sun   //修改用户的组群为root

usermod -L zhangsan   //锁住用户zhangsan密码,使密码无效

usermod -U zhangsan   //解除用户zhangsan密码锁住

usermod -e 12/12/2012 zhangsan   //修改用户账户的过期日期是2012年12月12日

usermod -s /bin/ksh zhangsan   //修改用户的shell类型是/bin/ksh

userdel lisi   //删除用户lisi

userdel -r moon   //删除用户moon,并删除主目录

3 组群账户简介

组群:具有某种共同特征的用户集合

私有组群:创建用户时未指定所属组群,则创建同名组群,为私有组群,只含该用户

标准组群:普通组群,可含多个用户

主要组群:用户属于多个组成员时,登录后所属的组群即为主要组群

次要组群:附加组群,用户可属于多个次要组群

/etc/group文件:组群配置文件,包括用户和组群及其归属。一条记录4个段位,“组群名:组群密码:GID:组群成员”

/etc/gshadow文件:是/etc/group的加密文件、互补文件,组群密码存放其中。一条记录4个段位,“组群名:组群密码:组群管理者:组群成员”

4 组群账户设置

groupadd china   //创建名为china的组群

groupadd -g 1900 ou   //创建名为ou的组群,GID为1900

groupadd -r Chinese   //创建名为Chinese的系统组群

groupmod -g 1800 ou   //将组群ou的GID修改为1800

groupmod -n shanghai ou   //将组群ou的新组群名修改为shanghai

groupdel shanghai   //删除组群shanghai

5 用户和组群账户维护

passwd it   //设置用户it的密码

passwd -l it   //锁住用户it的密码

passwd -S it  //查看用户it的密码状态

passwd -u it  //解锁用户it的密码

passwd -d it  //删除用户it的密码

gpasswd -a it kk   //把用户it添加到kk组群中

gpasswd -d it kk   //从组群kk中删除用户it

gpasswd kk   //设置组群kk的密码

gpasswd -r kk   //取消kk组群的密码

su - it   //把用户root切换为用户it进行登录,并且切换shell环境

su it   //把用户root切换为用户it进行登录,shell环境不需要切

su -root -c “ls /root”   //用户it使用sudo方式以root用户执行命令

newgrp ou   //用户ab以组群ou的身份登陆系统

groups ab   //查看用户ab是属于哪些组群的成员

id ab   //查询用户ab的UID、GID以及归属组群情况

id -g ab   //显示用户ab所属主组群的GID

id -G ab   //显示用户ab所属主群的GID

id-u ab   //显示用户ab的UID

 

第8章 磁盘分区和文件系统管理

在Linux系统中,如果需要在某个磁盘上存储数据,则需要将磁盘进行分区,然后创建文件系统,最后将文件系统挂载到目录下才可以。

1 磁盘分区和格式化简介

磁盘分区是指对硬盘物理介质的逻辑划分。将磁盘分成多个分区,不仅利于对文件的管理,还能在不同分区建立不同的文件系统、安装不同的操作系统。

主分区、扩展分区(逻辑驱动器的容器)、逻辑驱动器。只有主分区和逻辑驱动器才进行数据存储。一块磁盘上最多只能有4个主分区,可建立一个扩展分区代替四个主分区的一个,然后在扩展分区下建立更多的逻辑驱动器。

格式化是指对磁盘分区进行初始化的一种操作,在磁盘中建立磁道和扇区。

2 Linux磁盘分区

fdisk [选项] [设备]

高级Linux系统 知识梳理

3 创建文件系统

文件系统:文件在硬盘上的存储方法和排列顺序  ext4 xfs

mkfs [选项] [设备]

mkfs -t ext4 /dev/sda5  //格式化/dev/sda5分区,创建ext4文件系统

4 挂载和卸载文件系统

mount /dev/sda5 /mnt/kk   //挂载分区/dev/sda5到/mnt/kk目录中

mount -o ro /dev/sda5 /mnt/kk   //以只读方式挂载/dev/sda5分区到/mnt/kk目录中

umount /dev/sda5   //卸载分区/dev/sda5文件系统

df   //显示磁盘空间的使用情况

5 开机自动挂载文件系统

/etc/fstab文件:包含了所有磁盘分区以及存储设备的信息,文件构成:设备、挂载目录、文件系统类型、挂载选项、转储选项、文件系统检查选项。

设置开机自动挂载文件系统:在/etc/fstab文件中添加该磁盘分区的相关信息

1)使用设备名:在文件末尾加“/dev/sda5 /mnt/www xfs defaults 1 2”

2)使用UUID:先用“ls -l /dev/disk/by-uuid”查看UUID,在文件末尾加“UUID=… /mnt/www xfs defaults 1 2”

3)使用卷标:先用“xfs_admin -l /dev/sda5”查看卷标信息,在文件末尾加“LABEL=… /mnt/www xfs defaults 1 2”

6 使用交换空间

Linux系统中的交换空间在物理内存被用完时使用,可通过添加一个交换分区或一个交换文件来实现,交换空间的总大小一般为计算机物理内存的1-2倍左右,内存越大倍数越小。

1)添加交换分区:

mkswap /dev/sda5   //创建交换分区

swapon /dev/sda5   //启动交换分区

cat //proc/swaps   //确认已经启用交换分区

在/etc/fstab添加“/dev/sda5 swap swap defaults 0 0”,在系统下次引导时启用新建分区。

2)删除交换分区:

swapoff /dev/sda5   //禁用交换分区

在/etc/fstab删除刚添加的内容。

rm -rf /swapfile   //删除/swapfile文件

 

第九章 软件包管理

rpm -ivh [RPM软件包文件名称]   //安装RPM软件包

rpm -ivh –replacepkgs [RPM软件包文件名称]   //已安装的情况下仍旧安装该软件包

rpm -e [RPM包名称]   //删除RPM软件包

rpm -Uvh [RPM包名称]   //升级RPM软件包

rpm -Fvh [RPM包名称]   //刷新软件包

rpm -q [RPM包名称]   //查询指定软件包是否已经安装

rpm -qa   //查询系统中所有已经安装的软件包

rpm -qa |grep cront   //查询以cront开头的软件包是否已经安装

rpm -qi [RPM包名称]   //查询已安装软件包的描述信息

rpm -ql [RPM包名称]   //查询已安装软件包所包含的文件列表

rpm -qR [RPM包名称]   //查询软件包的依赖关系

rpm -qf [文件名]   //查询指定文件属于哪个软件包

yum help   //显示使用信息

yum list   //列出软件包

yum install packagename   //安装软件包

yum remove packagename   //删除软件包

yum update packagename   //升级软件包

yum -y bind   //无需确认、直接安装bind软件包

yum info bind   //显示bind软件包的详细信息

yum list bind   //列出bind软件包

yum deplist bind   //列出bind软件包的依赖关系

tar cvf abc.tar /root/abc   备份/root/abc目录及其子目录下的文件,备份文件名为abc.tar

tar tvf abc.tar   //查看abc.tar备份文件的内容,并显示在显示器

tar xvf abc.tar   //将打包文件abc.tar解包出来

tar rvf abc.tar /root/abc/d   //将文件/root/abc/d添加到abc.tar包里去

tar uvf abc.tar /root/abc/d   //更新原来tar包abc.tar中的文件/root/abc/d

tar zcvf abc.tar.gz /root/abc   //把/root/abc目录包括其子目录全部做备份文件压缩

tar ztvf abc.tar.gz   //查看压缩文件的内容

tar zxvf abc.tar.gz   //将压缩文件解压缩出来

tar jcvf abc.tar.bz2 /root/abc   //将目录/root/abc及其所有文件压缩成abc.tar.bz2文件

tar jtvf abc.tar.bz2   //查看压缩文件内容

tar jxvf abc.tar.bz2   //将文件解压缩

tar Jcvf abc.tar.xz /root/abc   //将目录/root/abc及其所有文件压缩成abc.tar.xz文件

tar Jtvf abc.tar.xz    //查看压缩文件内容

tar Jxvf abc.tar.xz   //将文件解压缩

 

第十章 权限和所有者

1 权限设置

通过设置权限可以限制或允许以下三种用户访问:文件的用户所有者(属主)、文件的组群所有者(用户所在组的同组用户)、系统中的其他用户。

r(读取):读取文件的权限;浏览目录的权限

w(写入):新增、修改文件内容的权限;删除、移动目录内文件的权限

x(执行):执行文件的权限;进入目录的权限

- :不具有该项权限

【权限字符组合】第一个是文件类型,后面的权限字符三个一组,分别是用户所有者(U)、组群所有者(G)、其他用户(O)。用ls -l显示。

【文字设定法设置权限】

chmod [操作对象] [操作符号] [权限] [文件|目录]

操作对象:u – 用户所有者 g – 组群所有者 o – 其他用户 a – 所有用户

操作符号:+ - 添加权限 - - 取消权限 = - 赋予给定权限并取消原先权限

chmod u+w a   //添加所有者对a文件的写入权限

chmod u-r a   //取消所有者对a文件的读取权限

chmod g=w a   //重新分配同组用户对a文件有写入的权限

chmod u+rw,g+r,o+rwx a   //更改a文件权限,添加所有者为读取、写入权限,同组用户为读取权限,其他用户为读取、写入、执行的权限

chmod a-rwx a   //取消所有用户的读取、写入、执行权限

【数字设定法设置权限】

所有数字属性的格式应该是三个0-7的数,其顺序是u、g、o。

r(读取):4

w(写入):2

x(执行):1

- :0

chmod [n1n2n3] [文件|目录]

n1表示用户所有者权限,n2表示组群所有者权限,n3表示其他用户权限。

chmod 700 a   //设置a文件权限,所有者拥有读取、写入和执行的权限

chmod 470 a   //设置a文件权限,所有者拥有读取,同组用户有读取、写入、执行权限

chmod 777 a   //设置a文件权限,所有用户拥有读取、写入和执行的权限

chmod 007 a   //设置a文件权限,其他用户拥有读取、写入和执行得权限

chmod -R 777 /home/user   //设置/home/user目录连同其子文件夹的权限为777

【特殊权限】

SUID:可执行文件用户所有者身份来执行,对目录无影响

SGID:可执行文件组群所有者身份来执行,目录中创建的任意新文件的所属组与该目录相同

Sticky:尽管其他用户有写权限,也必须由文件所有者执行删除和移动等操作

chmod u+s a   //添加a文件的特殊权限为SUID

chmod g+s a   //添加a文件的特殊权限为SGID

chmod o+t a   //添加a文件的特殊权限为Sticky

chmod 4000 a   //设置文件a具有SUID权限

chmod 2000 a   //设置文件a具有SGID权限

chmod 1000 a   //设置文件a具有Sticky权限

chmod 7000 a   //设置文件a具有SUID,SGID,Sticky权限

2 更改文件和目录所有者

chown [选项] [用户.组群] [文件|目录]

chown [选项] [用户:组群] [文件|目录]

chown newuser a   //将文件a的所有者改成newuser

chown :newuser a   //将文件a的用户组改成newuser

chown root.root a   //将文件a的所有者和用户组一起改成root

chown .newuser a   //将文件a的用户组改成newuser

chown -R newuser.newuser /root/b   //将目录/root/b连同它的下级文件/root/b/ccc的所有者和用户组一起更改为newuser

 

第十一章 Linux日常管理和维护

1 进程管理

Linux使一个多任务的操作系统,其上所有运行的内容都可以称为进程,用分时管理方法使所有的任务共同分享系统资源。进程是在自身的虚拟地址空间运行的一个单独的程序。

程序:静态命令的集合,不占系统的运行资源

进程:随时都可能发生变化的、动态的、使用系统运行资源的程序

作业:一系列按一定顺序执行的命令

一个程序可以启动多个进程。一条命令可能涉及多个进程。

【进程特征】动态性、并发性、独立性、异步性、结构特征(程序、数据、进程控制块)、多个不同的进程可以包含相同的程序

【进程种类】交互式进程、批处理进程、守护进程

ps -e   //显示所有进程

ps -aux   //显示所有不带控制台终端的进程,并显示用户名和进程的起始时间

ps -ax|grep less   //查看less进程是否在运行

ps -u   //显示用户名和进程的起始时间

ps -u root   //显示用户root的进程

ps -t tty1   //显示tty1终端下的进程

ps -p 1659   //显示进程号为1659的进程

高级Linux系统 知识梳理

top   //使用top命令动态显示进程信息,按“q”键退出top

kill -9 1659   //强制杀死进程号为1659的进程,利用ps命令获得进程的PID,然后kill

2 任务计划

要在固定的时间上触发某个作业,就需要创建任务计划,按时执行该作业,使用cron。

可以通过修改/etc/crontab文件,也可使用crontab命令。

【/etc/crontab文件】

root用户通过修改/etc/crontab文件实现任务计划,crond守护进程可以在无需人工干预的情况下,根据时间和日期的组合来调度执行重复任务。该文件是cron的默认配置文件。

前3行是配置cron任务运行环境的变量。

       Shell变量:告诉系统要使用哪个shell环境

       PATH变量:定义用来执行命令的路径

       MAILTO变量:cron任务的输出被邮寄给其定义的用户名,空白则电子邮件不会被寄出

文件内容:minute hour day month dayofweek user-name command(执行的命令或脚本)

时间格式:*(所有有效值) –(整数范围) ,(指定整数) /(间隔频率)

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

30 21* * * root /root/backup.sh   //在每天晚上的21:30执行/root/backup.sh文件

45 4 1,10,22 * * root /root/backup.sh   //在每月1,10,22日4:45执行/root/backup.sh文件

20 1 * * 6,0 root /bin/find / -name core -exec rm {} \;   //在每星期六、星期日的1:20执行一个find命令,查找相应的文件

0,30 18-23 * * * root /root/backup.sh   //每天18-23点每隔30分钟执行/root/backup.sh

0 23 * * 6 root /root/backup.sh   //在每星期六的23:00执行/root/backup.sh                     

还可以在/etc/cron.d目录中创建文件实现任务计划,配置语法和/etc/crontab一样。

【crontab命令】

root以外的用户用crontab配置cron任务,保存在/var/spool/cron/<username>目录中。

su – zhangsan   //以普通用户zhangsan登陆系统

crontab -e   //打开vi编辑器,编辑用户zhangsan的crontab条目

crontab -u zhangsan --l   //以root用户列出zhangsan的crontab

crontab --l   //以普通用户zhangsan列出自己的crontab

crontab -l   //对/var/spool/cron/zhangsan文件做备份

crontab --u zhangsan -r   //以用户root删除zhangsan的crontab

crontab -r   //以普通用户zhangsan删除自己的crontab

crontab /home/zhangsan/zhangsancron   //恢复丢失的crontab文件

3 Linux系统启动过程

(1)BIOS自检

计算机在接通电源之后首先由BIOS进行POST自检(对硬件进行检测),然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块(本地设备的枚举和初始化)。POST完成后就被从内存中清理出来,但BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。主引导记录(MBR)中包含主引导加载程序。

(2)启动GRUB2

默认使用的引导加载程序,用于引导操作系统启动。

(3)加载内核

加载内核映像到内存中,是压缩过的。内核启动后,会执行下列4项工作:检测所有硬件设备、驱动硬件设备、以只读方式挂载根文件系统、启动systemd服务。

(4)执行systemd进程

所有进程的发起者和控制者。PID永远是1。扮演终结父进程的角色;在进入某个特定的服务启动集合。

(5)初始化系统环境

system使用目标target来处理引导和服务管理过程。

default.target

graphical.target 设置系统环境、防火墙服务

multi-user.target 普通服务如图形管理服务

sysinit.target 重要系统服务如挂载、内存交换空间、设备、内核补充选项

local-fs.target  swap.target  底层核心服务

(6)执行/bin/login程序

提示使用者输入账号及密码并确认正确性,初始化环境,控制权交给shell等待用户登录

4 维护GRUB2

模块化动态加载

GRUB 2 主配置文件

/boot/grub2/grub.cfg 按顺序调用/etc/grub.d目录中的脚本实现不同的功能。

/etc/grub.d目录 定义每个菜单项的所有脚本。两位数字前缀是执行顺序

/etc/default/grub 设置通用配置变量和GRUB2菜单的其他特性

5 设置GRUB2加密

由于GRUB2负责引导Linux系统,对其加密可以实现安全性。

明文密码(修改/etc/grub.d/00_header文件,生成GRUB2配置文件)

PBKDF2加密密码(grub2-mkpasswd-pbkdf2命令,在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成配置文件)

解锁:设置完后重启Linux系统,GRUB2启动菜单界面编辑启动菜单项,输入密码。

 

第12章 Linux网络基础配置

1 常用网络配置文件

/etc/sysconfig/network-scripts/ifcfg-eno16777736  系统网络设备的配置文件

/etc/resolv.conf  域名解析器的配置文件

/etc/hosts  主机名到IP地址的匹配

/etc/services   所有服务的名称、协议类型、服务的端口

2 常用网络命令

traceroute 显示数据包到目标主机之间的路径

ifconfig 显示和配置网络接口

ping 测试与目标计算机之间的连通性

netstat 显示网络状态的信息

arp 增加(-s)、删除(-d)和显示ARP缓存条目

tcpdump 将网络中传送的数据包的头完全截获下来提供分析

3 管理网络服务

system

systemctl start named.service  启动named服务

systemctl status named.service   查看named服务当前状态

systemctl stop named.service   停止named服务

systemctl restart named.service   重新启动named服务

systemctl reload named.service   重新加载named服务

systemctl enable named.service   设置named服务开机自动启动

systemctl is-enabled named.service    查询named服务是否开机自动启动

systemctl disable named.service   停止named服务开机自动启动

systemctl list-units –type=service   查看所有已启动的服务