前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 知识点汇总

Linux 知识点汇总

作者头像
十二惊惶
发布2024-02-28 21:05:51
3300
发布2024-02-28 21:05:51
举报
文章被收录于专栏:十二惊惶的网络安全研究记录

Linux 知识点汇总

[TOC]

P4: Linux的基本特征 8个
  • 开放性:系统遵循世界标准规范,特别是遵循开放系统互连(OSI) 国际标准
  • 多用户:系统资源可以被不同的用户各自拥有使用。每个用户对自己的资源有特定的权限,互不影响。
  • 多任务:计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器
  • 快速性:Linux 不大在意CPU的速度,它可以把处理器的性能发挥到极限
  • 安全性:Iinux 采取了许多安全技术措施,包括对读、写进行权限控制,带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障
  • 网络性:Linux 是在Internet的基础上产生并发展起来的,因此,完善的内置网络是Linux的一大特点。
  • 移植性:Linux能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。
  • 兼容性:Linux是一款与POSI (Portable Operating System Interface)相兼容的操作系统,它所构成的子系统支持所有相关的ANSI、ISO、 IETF 和W3C业界标准。
P25-26: 关机与注销

从图形界面关机:右上角齿轮

从命令行关机

关机命令 shutdown

代码语言:javascript
复制
# shutdown //要等待一会儿
# shutdown +5 //5min后关机
# shutsown 19:20 //19:20关机
-f/-F 重新启动时执行/不执行fsck
-k 仅送出信息给所有用户,不会实际关机

注销命令 exit

代码语言:javascript
复制
exit [状态值]
// 0表示执行成功,其他值表示失败

重启命令 reboot

代码语言:javascript
复制
-d 重启时不把数据写入记录文件
-n 重开机前不检查有未结束的程序
-w 仅测试不重启,把数据写入记录文件

(第三章 考试重点)

P57: Shell常用特殊符号 7个
  • “ ***** “ 表示一个(包括空字符)或多个字符组成的字符串
  • ? “ 表示单个字符
  • [] “ 用于指定显示内容范围
  • ! “ 用于指定不显示内容,与” [] “一同使用
  • ; “ 用于同一行中分隔多个命令
  • ` “ 命令替代符,包含内容在Shell中为一条命令,并被执行
  • # “ 注释符号,该行内容不被执行
代码语言:javascript
复制
ls -l /bin/e*  //查看/bin目录下的e开头的所有文件和文件夹
ls -l /bin/e? //查看e开头,长度为2的所有文件和文件夹
ls [a-c]	  //为a b c的文件和文件夹
ls [!a-c]     //显示名不为为a b c的文件和文件夹
ls -l		  //显示目录下的文件和文件夹和查看其详细信息
echo `ls -l`  //字符串输出为指令执行结果
P57: Shell常用操作 4个

自动命令补全功能 ——TAB键

自动输入历史命令 ——history命令

重定向

让用户从文件输入命令,或将输出结果存储在文件及设备中,不需要输入输出设备

  • 输出重定向符**”>”(写入并覆盖)“>>”(追加)**,输入重定向符”<”
代码语言:javascript
复制
ls -l > test //将执行结果写入test文件中,没有test就自动创建
//显示器无结果表示重定向成功

管道

管道是一种通信机制,是一种特殊文件,可以进行读写。

除首尾的两个命令,每一个命令的输入都来自前一个命令的输出

| “ 将多个简单命令结合在一起,实现复杂的功能

代码语言:javascript
复制
ls -l | grep test //查看当前目录下test的详细信息
P61: Shell常用命令 10个

(第四题考 书上命令要很了解)

ls 查看指定工作目录下的内容

ls [选项] [路径]

代码语言:javascript
复制
ls -a/-A 显示所有文件及目录,列出/不列出隐藏文档(隐藏文档名称开头有".")
ls -l 除文件名外,显示详细信息

pwd 查看当前工作目录的绝对路径

uname 查看当前系统内核信息

代码语言:javascript
复制
uname 显示内核名
uname -r 显示内核版本号
uname -o 显示系统信息

cd 切换目录

  • cd [路径]
代码语言:javascript
复制
cd / //切换到/目录
cd ~ //切换到当前用户主目录
cd .. //切换到上一级目录

cat 显示文件内容

  • cat [选项] [文件]

clear 清屏

sudo 切换用户身份执行

代码语言:javascript
复制
$sudo adduser Me //以root用户运行adduser命令

su 切换用户

  • sudo [选项] [命令]
代码语言:javascript
复制
$sudo su root //切换到root用户
#su Me //切换到Me用户

ifconfig 显示和配置网络设备属性

代码语言:javascript
复制
interface 网络接口的名称,如eth0(网卡) 
ifconfig eth0 //查看eth0的网络情况
ifconfig eth0 up/down //激活或关闭eth0
ifconfig eth0 192.168.0.25 netmask 255.255.255.0 //设置eth0的IP地址和子网掩码

man 系统帮助(命令的详细内容和使用方法)

  • man [命令名]
代码语言:javascript
复制
man ls //查看ls命令的详细内容
P65-96: 编辑器 2个

(编辑器的基本使用,考察,至少知道哪个是编辑器)

1.Gedit编辑文档

窗口四个部分:菜单栏、工具栏、文档编辑栏、状态栏

菜单栏:文件、编辑、查看、搜索、工具、文档、帮助

  • 文件:新建、打开、保存、保存为、还原、打印预览、打印、关闭、推出
  • 编辑:撤销、重做、剪切、复制、粘贴、删除、全部选中、插入日期和时间、首选项
  • 查看:……
代码语言:javascript
复制
gedit test.cpp

“+” 前台运行 “&” 后台运行,进入自己的编辑器

2.VIM的使用和配置

3种工作模式:输入模式、指令模式、底行模式

代码语言:javascript
复制
vim test //光标置于最后一行
vim n test //光标置于第n行
vim pattern test //光标置于第一个与pattern匹配的串处
vim -r test //发生系统崩溃,恢复文件

只读模式切输入模式

代码语言:javascript
复制
i 光标前(光标在第一行第一列)
a 光标后(光标在第一行第二列)
I 当前行首
A 当前行尾
o/O 当前行之下/上新开一行
r 替换当前字符
……

输入模式切指令模式 Ecs键

代码语言:javascript
复制
移动光标类指令:
光标上移一行 k ; 光标下移一行 j
光标左移一字符 h ; 光标右移一字符 l
……
屏幕翻滚类指令:
Ctrl+u 文件首翻半屏
……
复制、删除、粘贴类指令:
……

指令模式切底行模式 : 或 ? 或 /

代码语言:javascript
复制
/pattern 从光标开始处向文件尾搜索pattern
?pattern 从光标开始处向文件首搜索pattern
:w 保存  :x 保存并退出  :q 退出  :! 强制退出
:q! 不保存文件并退出
:wq 保存并退出

VIM配置

定制VIM编辑器属性方便编写文档,配置文件地址为/etc/vim/vimrc,该文件会在启动时读取,该命令为底行模式命令,命令写入文件后使用时不必重复键入命令

更新最新vim版本(vim,vim-common,vim-doc,vim-runtiem),切换到root权限下,打开vim配置文件(vim /etc/vim /vimrc),将需要命令前的注释键#删除。

代码语言:javascript
复制
syntax on 关键字高亮
set tabstop=4 按下tab键跳跃4个光标
set background=dark 更改背景为深色
……
P77: 挂载

挂载:在Linux或UNIX系统中,任何个种类的文件系统被创建后,都需要挂载到某个特定的目录才能使用,这个过程相当于激活一个文件系统,使它能够被使用。

Linux使用mount工具来对文件系统进行挂载。挂载文件系统时需要明确挂载点,比如在安装Ubuntu的过程中,读者实际上已经接触过挂载的过程了,在创建文件系统后,操作系统会提示将此文件系统挂载至哪个位置,而这个位置就是挂载点,在那个时候,通常都选择挂载点为“/”,即根目录。此外,还可以利用该工具挂载其他种类的文件系统,也需要涉及挂载点的选择,挂载点的实质是一个空置的目录。

Windws文件系统的挂获原理是将磁盘分成若干分区,在各个分区中挂载文件系统。而Linux的挂载原理与Windows不同,它是将磁盘空间挂载在一个目录下。

P81: swap交换分区
  • 什么是交换分区?
    • 在Linux中,交换分区是“虚拟内存”技术的集中体现。它代替了Windows中交换文件的概念,但实质都是利用硬盘空间,临时当作内存使用
    • 虚拟内存在功能上突破了物理内存的限制,是程序可以操纵大于实际物理内存的空间,更重要的是,虚拟内存是隔离每个进程的安全保护网,可以使每个进程都不受其他程序的干扰
  • 怎么交换?有什么功能?交换多少合适?
    • 当系统的物理内存不够用的时候,才进行分区的交换。将物理内存中的一部分空间释放出来,以供当前运行的程序使用,被释放的空间的程序被临时保存到交换分区中,等到那些程序要运行时,再从交换分区中恢复保存的数据到内存中。被释放的空间可能来自一些很长时间没有什么操作的程序。
    • 分配太多的交换分区会浪费磁盘空间,而交换分区太少,系统则会发生错误。通常情况下,交换分区应大于或等于物理内存的大小,最小不应小于64M,通常交换分区得大小应是物理内存(虚拟机的)得2~2.5倍
      • 不是所有物理内存中交换出来的数据都会被放到交换分区中,会导致不堪负重,有相当一部分数据会被直接交换到文件系统,如文件读写
      • 交换分区是”匿名“内存数据的交换空间。”匿名“内存数据如malloc和new函数生成的对象的数据,以及堆栈中一些状态和变量数据等。malloc和new函数生成的对象的数据,即人为在内存上进行的空间操作,它们在文件系统中没有相应的”存储“文件,需要交换分区。
代码语言:javascript
复制
# swapon -s //查看当前系统的交换分区情况

Filename表示当前交换分区挂载的位置,Type表示该分区的文件格式,partition表示交换分区,/dev/sda5表示第一块硬盘的第一个扩展分区的第一个逻辑磁盘
/dev/hda, /dev/hdb, /dev/sda, /dev/sdb
hda一般是指IDE接口的硬盘,hda指第一块硬盘,hdb指第二块硬盘,等等;sda一般是指SATA接口的硬盘,sda指第一块硬盘,sdb指第二块硬盘
  • 交换分区的数量对性能有很大的影响。因为分区的交换操作是磁盘I/O的操作,多个交换分区可以轮流使用,均衡I/O的负载,而单一交换分区会很忙使系统大多数时间处于等待状态,效率很低。系统很慢,但CPU不忙,说明问题在I/O上。

交换分区的管理

交换分区是分页管理的,每一页的大小和内存也得大小一样,以方便数据交换。

旧版本实现交换分区,用交换分区第1页作为所有交换分区的一个”映射“,即第1页的每一位都对应一页交换分区。如果这一位是1,表示此页可用;如果这一位是0,表示此页是环块,不可用。

代码语言:javascript
复制
$ vmstat 3  //每3秒捕获一次系统性能指标

Procs下的r表示正在等待的进程数量(等待块),b表示输入输出
Memory下的swpd表示使用的Swap空间的大小
Swap下的si表示系统的交换回内存的总量,so表示CPU每秒交换总量
以上指标的数值越大,表示系统越繁忙,其繁忙程度与系统具体的配置有关。

交换分区常用管理方法

代码语言:javascript
复制
1.切换为超级用户(管理员),cd到/root目录下
sudo su root
cd /root
2.创建一个swap文件(有连续空间的),其路径为/root/swapfile
dd if=/dev/zero of=/root/swapfile bs=1024 count=65536
(ls //存在一个snap和swapfile文件)
3.格式化swap分区
mkswap swapfile //将刚才建立的/root/swapfile文件格式化为swap格式
4.激活swap分区
swapon swapfile
5.检查刚建立的交换分区文件是否存在
swapon -s
6.回收/root/swapfile文件所占用的交换空间
swapoff swapfile
7.删除/root/swapfile文件
rm swapfile

(永久创建 vim /etc/fstab)
P88-91: 压缩和解压 3个

zip和unzip

zip命令一般解压有规则特征的应用程序

代码语言:javascript
复制
zip -m abc.zip a b c //-m:压缩后,删除原始文件(将文件移入压缩文件) 
zip -r test.zip test/ //-r:递归处理,压缩指定目录下的所有文件和子目录

unzip解压

代码语言:javascript
复制
unzip abc.zip //直接解压,压缩文件依然存在
unzip -d test1 abc.zip //-d<目录>:指定文件解压后的存储目录,没有的话新建
unzip abc.zip -x a //-x<文件>:指定压缩文件中不解压的文件

unzip -l abc.zip //-l:显示压缩文件所包含的文件
unzip -Z abc.zip //-Z:显示压缩文件中文件的具体信息,不解压

tar解压规则/不规则程序

(1)-cvf:文件归档但不压缩

(2)gzip压缩和解压缩 -z

-c:压缩;-x:解压缩

(3)bzip2压缩和解压缩 -j

-c:压缩;-x:解压缩

#### P92:文件系统管理命令 6类20个

文件的基本操作

touch 创建一个新文件,存在则修改文件最后修改日期

代码语言:javascript
复制
touch [参数] [文件名]
touch a

cp 复制一个或多个文件,也可以复制一个目录

  • touch [参数] [源地址] [目的地址]
代码语言:javascript
复制
cp a.cpp c.cpp //复制a.cpp到当前目录c.cpp中
-v 查看复制过程
-i 询问,是否覆盖原来已经存在的同名文件
-r 递归处理,实现目录复制

mv 移动文件或目录,也可以进行重命名

  • mv [参数] [源地址] [目的地址]
代码语言:javascript
复制
mv dir1/a dir2/
mv b bbb //b重命名为bbb

rm 删除一个或多个文件,也可以递归删除目录

代码语言:javascript
复制
rm dir1/bbb
rm -ri dir1/ //递归处理来删除目录,并询问

目录的基本操作

mkdir 创建一个目录

  • mkdir [参数] [目的地址]
代码语言:javascript
复制
mkdir dir1 //当前目录下创建一个目录
mkdir -p dir2/dir22/dir222 //-p实现多层目录的建立

rmdir 删除一个目录

代码语言:javascript
复制
rmdir dir1
rmdir -p dir2/dir22/dir22 //-p实现多层目录的全部删除

查看文件内容

more 在终端屏幕按屏显示文本文件

在终端屏幕显示文本文件:Enter一行,空格一屏(如果-num有参数,显示num行),q退出

代码语言:javascript
复制
more -8 /etc/passwd //每屏显示8行
ls /etc/ | more -10 //查看/etc目录的文件信息,每屏显示10行
-p 实现清屏
-d 显示友好信息

less 在终端屏幕按屏显示文本文件

在终端屏幕显示文本文件,不能Enter和Space翻阅,增加:鼠标滑动显示内容;底部提示符为“ : ”

代码语言:javascript
复制
ls /etc/ | less

head 显示前几行或几字节

tail 显示前/最后几行或几字节

(head和tail这两命令同理)

od 按照特殊格式查看文件内容

代码语言:javascript
复制
字码基数 -d 十进制;-o 八进制(默认);-x 十六进制 -t 设置输出格式

文件类型

  • 文件类型 - 普通文件d 目录,c 字符设备(串口设备:调制解调器),b 块设备(接口设备:硬盘、光驱),l 符号链接文件(快捷方式),s 套接口文件(网络通信文件),p 管道文件(FIFO文件,进程间通信机制)
  • file 辨识文件类型

查询文件

find 在目录结构中查找文件

代码语言:javascript
复制
find /etc -name vim* //查找文件名中以vim开头的所有文件

locate 查找符合条件的文件

代码语言:javascript
复制
locate cpuinfo //查找含有cpuinfo的文件

grep 查找包含指定关键字的文件

代码语言:javascript
复制
grep -ir "Ubuntu" /user | less //

其他管理命令

  • ln 创建连接文件
    • ln [参数] [目的地址] [链接文件名]

    两种链接:硬链接和软连接:

    • 硬链接利用每个文件分配的物理编号inode建立的,因此不能跨越文件系统。修改硬链接的目标文件名,链接依然有效;
  • 软连接利用文件路径名建立链接,通常为绝对路径,增加可移植性。修改软链接目标文件名,链接将断开
  • wc 统计文件的字数、字节数、行数等信息
代码语言:javascript
复制
   wc -c 字节
wc -l 行数
   wc -w 字数
代码语言:javascript
复制
 <img src="https://zhang2002gz.oss-cn-qingdao.aliyuncs.com/image-20230212191405117.png" alt="image-20230212191405117" style="zoom:67%;" />
  • comm 逐行比较两个已排序文件的差异,并显示
  • diff 逐行比较文本文件的异同处逐行比较文本文件的异同处。指定比较目录,会比较相同文件名的文件,不会比较子目录
P105: Ubuntu用户系统概述

Ubuntu Linux系统是一个多用户、多任务的分时操作系统

Ubuntu用户类型: 3个

  • 初次创建的用户:完成比普通用户多的功能
  • root用户 #:系统管理员,完成对系统的所有管理功能,拥有最高权限
  • 普通用户 ~:在安装完操作系统后,被创建的其他所有用户

查看各个用户的相关信息:配置文件/etc/passwd

记录当前操作系统中所有用户的基本信息:用户名、用户UID、用户组ID(GID)、主目录路径、登录Shell等。

P113: 用户管理命令

sudo和su的配置文件 /etc/sudoers

添加用户 adduser

代码语言:javascript
复制
# adduser abc //添加一个名为abc的普通用户
# adduser --system --home /home/xyz --shell /bin/bash xyz //添加一个名为xyx的系统用户,指定主目录为/home/xyz,默认shell为bash
(ls /home -> abc xyz)

显示用户信息 finger

finger命令用于查找用户,并显示对应用户的相关信息

代码语言:javascript
复制
# sudo apt install finger
finger -l abc  //列出用户abc的详细信息

更改用户密码 passwd

passwd命令用于更改用户密码。如果当前用户为普通用户,只更改自己密码;当前用户为超级管理员,能更改所有用户密码

代码语言:javascript
复制
passwd abc //更改用户abc的密码
passwd -d abc //删除用户abc的密码

修改用户登录信息 usermode

usermode命令用于修改已添加到系统中的某个用户的登录名、主目录、默认shell等与登录相关的信息

代码语言:javascript
复制
usermode -l abcd abc //将用户abc改名为abcd
finger abc //查找登录名为abc的用户,不存在

显示用户ID id

id命令用于显示系统中某个用户的UID、GID等识别号信号。

代码语言:javascript
复制
id root //显示用户root的所有ID
id -u abc //显示用户abc的UID
-g 组ID  -G 所有组ID

修改用户个人信息 chfn

chfn命令用于修改用户的基本个人信息,如真实姓名、电话号码等。

代码语言:javascript
复制
chfn -f abcdefg abc //将用户abc的真实姓名改为abcdefg
chfn -h 1111111 abc //设置用户abc的电话号码

删除用户 deluser

代码语言:javascript
复制
deluser --remove-all-files abc //删除用户abc以及一切相关文件
P117: 组管理命令

cat /etc/passwd 看用户信息;cat /etc/group 看组相关信息

添加用户组 addgroup

代码语言:javascript
复制
addgroup abc //添加一个普通用户组
addgroup --system abc //添加一个系统用户

显示组内用户 groups

groups命令用于显示某个组里包含的用户

代码语言:javascript
复制
groups root //显示用户组root内的用户
groups abc //显示用户组abc内的用户

修改用户组信息 groupmod

groupmod命令用于更改用户组的名称、ID等信息。

代码语言:javascript
复制
groupmod -g 1002 abc //更改用户组abc的GID为1002
groupmod -n abcd abc //更改用户组abc名称为abc
cat /etc/group | grep abc //查看配置文件中abc信息

删除用户组 delgroup

代码语言:javascript
复制
delgroup abc //删除用户组abc
P118: 权限管理

Ubuntu在管理自己的用户和文件时,都是依靠权限体系来提高安全性。

权限是指某一个用户或用户组能够使用系统资源的限制情况。root管理员拥有系统的最高权限;初次创建的用户拥有管理员的部分权限;其他普通用户的权限最低。

对于文件,有读r、写w、修改x(可执行权限)三种权限。(二进制表示:100, 010, 001 ; 八进制表示:4, 2, 1 -> r+w+x=7,故7为最高权限)

  • “drwxr-xr-x”表明了权限与用户组的关系,除第1位表示文件类型,剩余9位以3位为一组,分别表示文件归属用户的权限 u、归属用户组的权限 g、其他用户的权限 o。
  • “26”表示链接数
  • ”bd bd”表示文件拥有者和该用户所归属的用户组
代码语言:javascript
复制
bd的3类用户和对应权限情况:
它的拥有者是bd用户,对应权限是“rwx",对该文件具有读写修改的权限
与bd用户同组的其他用户,对应权限是"r-x",对该文件具有读和修改的权限
其他用户,对应权限是"r-x",对该文件具有读和修改的权限

权限字母表示法:

字母

含义

r, w, x 表示权限

可读,可写,可执行权限

a, u, g, o 表示文件归属关系

所有用户,归属用户,归属组,其他用户

=, +, - 表示权限变化

具备权限,添加某权限,去除某权限

代码语言:javascript
复制
例子:
a+x:对所有用户添加可执行权限
go-x:对归属组和其他用户去除原有可执行权限
u=rxw:对归属用户具备可读、可写、可执行权限

常用权限管理命令:

利用shell命令,可以方便地查看文件和文件夹的权限,也可以方便地对权限作出修改,还可以对文件所属用户及群组进行修改

chmod 修改文件或文件夹的权限

代码语言:javascript
复制
字母表示法:
chmod a+w a.cpp //对a.cpp文件的所有用户增加可写权限
数字表示法:
chmod 777 test //修改目录test的权限为777,即所有用户都拥有可读、可写、可执行权限
-R实现对目录下的文件权限的递归修改:
chmod -cR 755 test/ //将test目录下所有文件权限改为755,包括目录本身,使用-c参数显示修改结果

chown修改文件或目录的归属用户或归属组

代码语言:javascript
复制
chown abc a.cpp //修改a.cpp文件的归属用户为abc
chown -c abc.abc a.cpp //同时改变a.cpp文件的归属用户和用户组
chown -v .abc a.cpp //改变a.cpp文件的归属用户组
迭代:chown -cR abc test //修改目录中所有文件的归属

chgrp专门修改文件或目录的归属组

代码语言:javascript
复制
chgrp -c abc a.cpp //修改文件的归属组为abc
chgrp -cR abc test
P127: 磁盘概述

配置文件/etc/fstab 查看磁盘分区的情况及别名

没有实际的硬盘。主分区/主挂载点的别名是/dev/sda1,即“/”挂载点。/dev/sda5表示逻辑分区,虚拟设备:/dev/scd0光驱/dev/fd0软驱。SWAP交换分区被挂载至/root/swapfile

/dev/后面部分表示一个具体的分区,hd表示IDE硬盘,sd表示SATA硬盘或其他外部设备,had中的第3位a表示这是该类型接口上的第1个设备。每一个IDE接口可以允许有两个设备,一个是主设备,另一个为从设备,可以分别用hda、hdb表示第1个IDE接口上的两个设备。

/dev/hda1~/dev/hda4都表示主分区/dev/hda5表示该硬盘上的第1个逻辑分区,分区的顺序是不能随意修改。

P128: 磁盘管理方法

fdisk 磁盘分区

代码语言:javascript
复制
fdisk /dev/hda //对IDE硬盘进行分区
fdisk -l //列出当前操作系统

mkfs 在分区上建立文件系统或格式化指定形式

代码语言:javascript
复制
mkfs -v //显示命令使用方法
mkfs -V //显示版本信息
mkfs -t ext3 /dev/sda3 //将/dev/sda3的文件系统建立为ext3类型

mkswap 设置交换分区

代码语言:javascript
复制
mkswap -c -vl /dev/sda5 102400 //在/dev/sda5建立大小为100MB的交换分区,建立前先检查是否有损坏的区块

df 显示磁盘信息

代码语言:javascript
复制
df -a //显示所有的磁盘信息
-l 仅显示本地的文件系统信息 -i 显示索引节点信息
df -t ext3 //显示系统中ext3类型的分区信息

du 显示目录的容量

代码语言:javascript
复制
du -a /root //显示/root目录下每个文件的大小,以K为单位
P193-195: 进程管理

什么是进程?什么是程序?进程有什么特点?父子进程的关系?

进程的3种类型,基本信息(PID,PPID…),3种基本状态(state,wait,running)

1.进程的概念:

Ubuntu Linux 的所有任务都是在操作系统内核的调度下由CPU执行,很多时候,Linux是将任务和进程的慨念合在一起。进程的标准定义: 进程是可开发执行的程序在一个数据集合上的运行过程。进程是一个动态的使用系统资源,处于活动状态的应用程序。进程和程序有着显著的区别。

  • 程序是静态概念,本身可以作为一种资源长期保存在磁盘上;进程是一个程序的执行过程,是动态概念,有一定的生命周期,如果进程一旦执行结束,就不再存在于操作系统中
  • 进程是一个能独立运行的单位,能与其他进程并发执行,它是操作系统中资源申请调度的最小单位;而程序不能作为一个独立运行的单位,它也不占用CPU 资源
  • 程序并不是和进程一一对应的 一个程序可以由多个进程共用,一个进程也可以在活动中有顺序地执行多个程序

在Ubuntu Linux中,init进程是所有进程的发起者和控制者,每个进程都有一个编号PID,是进程在当前系统中运行的顺序。Init用于终结父进程,如果该进程出现了问题,操作系统会崩溃。

因为init进程在系统运行期间始终不会消亡或停止,所以系统总是可以确信它的存在,并在必要的时候以此为参照。因此,系统调用fork()函数来创建一个新进程,并且作为init的子进程,从而最终形成系统中运行的所有其他进程。

为了标识和管理进程,使用PCB进程控制块来进行此项重要工作。进程有以下几个主要参数:

  • PID:进程号,唯一标识进程(父进程为1) Process ID
  • PPID:父进程号,创建某个进程的上一个进程号 Parent PID
  • USER:启动某个进程的用户ID(UID)和该用户归属的组ID(GID)
  • STAT:进程状态。一个进程可能处于多种状态,包括运行状态、等待状态(可被中断或不可被中断)、停止状态、睡眠状态和僵死状态等
  • PRIORITY:优先级
  • 资源占用:占用系统资源
代码语言:javascript
复制
- ps aux  //查看当前所有运行着的进程信息

Ubuntu Linux进程的3种类型:

  • 交互进程:由Shell启动的进程
  • 批处理进程:与终端联系不大,在等待队列中按序执行
  • 守护进程:后台运行的进程,一般总是活动状态

2.进程的运行状态

  • 等待状态wait:该状态有两种模式,一种是可被中断的,另一种不可被中断。这种状态下的进程处于等待系统分配给它资源,如果一旦得到资源,将转入就绪状态。
  • 就绪状态running:这种状态的进程当前没有运行,但所有申请的资源已经具备。只要内核对其进行调度,将立即拥有CPU的控制权,开始运行。
  • 僵死状态zombie:也称僵尸状态或僵尸进程。这种状态下的进程已经运行完毕,执行了相应的任务,已经不再存在,但它的父进程留下了一个记录,包括一个退出码和一些时间信息等。
  • 停止状态stop:正在运行的进程由于某些原因的影响而退出,将进入停止状态,例遇到更高优先级的进程占用了CPU资源。
  • 中断状态interupt

进程状态60

3.进程管理操作

ps 查看系统进程信息(静态信息)

代码语言:javascript
复制
-f:产生某个进程的一个完整信息清单。
-a:显示所有用户的进程清单。
-u:产生某个特定用户的进程清单。
-x:显示后台运行进程。
ps //显示与控制终端相关进程的基本信息
ps -u abc -f //显示abc用户所有完整信息
ps aux //显示系统中的所有进程信息

top 动态显示运行中的进程详细信息

代码语言:javascript
复制
top -d 3 //每3秒动态更新进程信息

nice 设置进程运行优先级

每个进程都有一个优先级参数,表示占有CPU资源的等级,优先级越高进程更容易获取CPU控制权。进程优先级一般为-20~19,-20为最高优先级。修改进程nice值,可以修改进程优先级。系统进程默认的优先级是0。

代码语言:javascript
复制
nice -5 process //优先级置为5。若没有指定默认置为10
nice --12 process //优先级置为-12

renice 修改进程的优先级

可调范围-20~19

代码语言:javascript
复制
sudo renice 12 7716 //修改PID7716的进程的优先级为12
sudo renice 6 -u abc //修改abc用户所有进程优先级为6

kill 终止进程命令

一般情况,可以通过停止一个进程的方法来正常结束该进程。但在某种情况下,进程没有响应,可使用kill命令停止某个活动。

代码语言:javascript
复制
kill -STOP 4385 //停止4385进程,但不退出
kill -CONT 4385 //重新开始4385进程
kill -9 4385 //强制终止4385进程

killall 终止所有同名进程

代码语言:javascript
复制
killall -9 process //终止系统中所有名为process的进程
P200: 临时工作安排at

服务启动

at命令用来安排完成临时性工作,即只需要执行一次的系统任务。使用该命令,需要提前启动一个进程,即启动一个服务。

代码语言:javascript
复制
sudo /etc/init.d/atd restart  //重新启动at服务

使用at命令

代码语言:javascript
复制
sudo at 23:50 2009-12-15 //在2009-12-15的23:50执行以下命令

维护当前系统中的at服务

代码语言:javascript
复制
sudo atq //查询当前系统中的所有at进程
sudo atrm 1 //删除1号工作任务

周期性工作安排cron

#### P211: TCP/IP基础

(尽可能写全面)

  • 网络接口层(Network Interface Physical):模型的基层,负责数据帧的发送和接收(帧Frame是独立的网络信息传输单元)。网络接口层将帧格式的数据放到网络上,或从网上把帧取下来。
  • 互联层(Internet):互联协议将数据包封装成Internet 数掂包(IP packet),并运行必要的路由算法。这里有4种互联协议。
    • 网际协议(IP):负责在主机和网络之间路径寻址和路由数据包。
    • 地址解析协议(ARP):获取同一物理网络中的硬件主机地址。
    • 因特网控制消息协议((ICMP):发送消息,并报告有关数据包的传送错误。
    • 互联组管理协议(IGMP):实现本地多路广播路由器报告。
  • 传输层:传输协议在主机之间提供通信会话。传输协议的选择根据数据传输方式而定。主要有以下两个传输协议。
    • 传输控制协议(TCP):为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况,并适用于要求得到响应的应用程序。
    • 用户数据包协议(UDP):提供了无连接通信,且不对传送包进行可靠性确认。适合于一次传输小量数据可靠性则由应用层确认。
  • 应用层:应用程序通过这一层访问网络,主要包括常见的FTP、HTTP、DNS和 TELNET等协议。
    • Telnet:提供远程登录(终端仿真)服务。
    • FTP:提供应用级的文件传送协议。,
    • SMTP:简单邮件传送协议。
    • SNMP:简单网络管理协议,使用传输层UDP 协议。
    • DNS:域名解析服务,也就是将域名映像成IP地址的协议,使用传输层UDP协议。
    • HTTP:超文本传输协议,访问Web所用的协议。

TCP/IP协议簇体系结构及各层协议结构如图。 在网络接口层,最重要的信息之一是主机的MAC地址,为48bit,在物理上唯一标识某台主机;IP层的IP地址在逻辑上唯一标识某台主机;在主机内部,传输层的端口对应唯一的应用服务。

P212: IP地址表示形式及分类

1.表示形式:

  • 二进制表示法
  • 点分十进制表示法 IP地址由网络号和主机号组成,程度为4字节
    • 网络号:标识一个物理的网络,同一个网络上的所有主机使用同一个网络号,该号在互联网中是唯一的。
    • 主机号:确定网络中的一个工作端、服务器、路由器或者其他TCP/IP 主机。对于同一个网络号来说,主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定网络号和主机号。

2.IP地址分类

  • A类地址: 可以拥有最大数量的主机,最高位为0,紧跟的7位表示网络号,其余24位表示主机号,总共允许有 126个网络。
  • B类地址: 被分配到中等规模和大规候的网络中,最高两位总被置为二进制的10,前16位为网络号,后16位 为主机号,允许有16384个网络。
  • C类地址:高3为被置为二进制的110,前 24位为网络号,后8位为主机号,允许有大约200万个网络。
  • D类地址:被用于多路广播组用户,高4位总被置为1110,余下的位用于标明客户机所属的组。
  • E类地址是一种仅供试验的地址。

几条准则:

  • 网络号不能为127。该标识号被保留作为回路及诊断功能。
  • 不能将网络号和主机号的各位均置为1。如果每位都是1,该地址会被解释为网内广播而不是一个主机号
  • 各位均不能置0,否则该地址被解释为“就是本网络”。
  • 对于本网络来说,主机号应核唯一,否则会出现IP地址已分配或有冲突的错

网络划分标准

P217: TCP包头

cat /usr/include/linux/tcp.h

  1. 源端口和目标端口(Source Port&Destinaton Port):传送/接收数据使用的端口。
  2. 数据包序号(Sequence Number):数据包过大而进行分段后,记录数据包序号,接收方可以组合成功
  3. 回应序号 (Acknowledge Number):为了确认接收端收到发送端所送出的数据包数据,发送端希望能吸收到接收端的响应。
  4. 数据补偿(Data Offset):补偿位。
  5. 保留位(Reserved ):未使用的保留字段。
  6. 控制标志码(Control Flag):当进行网络连接时,必须说明这个联机的状态,使接收端了解这个数据包的主要动作。这个子段为6bits,分别代表6个句柄,若为1则为启动。说明如下所示。
    • URG (Urgent)): 为1表示该数据包为紧急数据包,接收端应该紧急处理。
    • ACK (Acknowledge):为1表示这个数据包为确认数据包,与Acknowledge Number有关
    • PSH (Push function):为1表示要求对方立即传送缓冲区内的其他对应数据包,而无须等待缓冲区满。
    • RST (Reset):为1表示联机会马上结束,而无须等待终止确认手续。这是个强制结束的联机,且发送端已断线。
    • SYN (Svnchronous):为1表示发送端希望双方建立同步处理,即要求建立联机。通常带有SYN标志的数据包表示“主动”要连接到对方的意思。
  7. 滑动窗口(Window):用于控制数据包的流量,可以告知对方目前有多少缓冲区容量(Receive Buffer)可以接收数据包。当Window=0时,表示缓冲器已经额满。
  8. 确认校验码(Checksum);数据由发送端送出前会进行一个检验的动作,并将该动作的检验值标注在这个字段上。而接收者收到这个数据包之后,会再次对数据包进行验证,并且与原来发送的确认校验码值进行对比,如果相符就接收,若不符就认为该数据包已经损毁,要求对方
  9. 紧急信息 (Urgent Pointer ):该字段在 Code字段内的URG值为1时才会产生作用,告知紧急数据所在的位置。
  10. 任意资料(Options)
P220: ARP/RARP概念

任何一台主机(确切的说是任何一个网络适配器)在物理上唯一的标识是48bit适配器的地址,即MAC地址 ( Media Access Controladdress)。这个地址保存在网络适配器的ROM中,是不能修改的。在实际应用中,田户可 以为任意一个网络适配器指定不同的IP地址。

MAC地址是所有网络活动的基础,但是网上的主机之间的通信是通过IP地址讲行的,因此在这个过程中就存在一个转换,即MAC地址与IP地址的对应,实现这一地址解析的协议为ARP(地址解析协议)和RARP(逆地址解析协议)。

  • ARP为IP地址到对应的硬件MAC 地址之间提供动态映射,这个过程是自动完成的,一般应用程序或系统管理员不必操作中间流程。
  • RARP用于那些没有磁盘驱动器的系统(一般是无盘工作站或X终端),它需要系统管理员进行手工设置,提供MAC地址到IP地址的解析。
P225-227: 网络配置文件

Ubuntu Linux为适应不同需求,在进行网络访问时,需要配置网络配置文件,这些配置文件位于”/etc“目录下。

1./etc/network/interfaces网络基本信息配置文件

代码语言:javascript
复制
cat /etc/network/interfaces
//lo接口的配置信息
1 auto lo //系统开机时,自动启动lo接口
2 iface lo inet loopback //设置lo接口的地址信息,此处设置为本地回环(loopback)
3
//系统中一块网卡eth0接口的配置信息
//一个网卡对应一个地址的基本配置方法:
4 auto eth0 //系统开机时,自动启动eth0接口,该接口为系统默认的第一块网卡所在的接口
5 iface eth0 inet dhcp //设置eth0接口的地址信息,此处设置为动态自动获取(dhcp)
6 address 192.168.1.21 //设置eth0接口的一个静态IP地址为192.168.1.21
7 netmask 255.255.255.0 //设置eth0接口的子网掩码为255.255.255.0
8 gateway 192.168.1.1 //设置eth0接口的静态网关地址为192.168.1.1

//同一个物理网卡设备上有多个地址的基本配置方法:
11 auto eth0 eth0:1
12 iface eth0 inet static
13 address 192.168.1.100
14 netmask 255.255.255.0
15 gateway 192.168.1.1 
16 iface eth0:1 inet static
17 address 192.168.1.200
18 netmask 255.255.255.0
19 gateway 192.168.1.1 

//不同接口上配置多个网卡的基本配置方法:
21 auto eth0 eth1
22 iface eth0 inet static
23 address 192.168.0.125
24 netmask 255.255.255.0
25 gateway 192.168.1.1 
26 iface eth1 inet static
27 address 192.168.0.137
28 netmask 255.255.255.0
29 gateway 192.168.1.1 

(auto lo)

2.其他网络相关配置文件

(考基本的端口号)

/etc/hosts 主机名映射文件

在网络上实现域名和IP地址的映射的两种方法:大量域名解析采用DNS服务器,小型网络可使用/etc/hosts文件提供解析。文件包含部分常用IP地址和主机名/主机名别名之间的映射

代码语言:javascript
复制
//文件种没有tom主机信息,因此会登陆失败。添加tom记录:
$ sudo vim /etc/hosts
127.0.0.1 localhost
127.0.1.1 abc //当前用户
192.168.1.93 netservice.webservice.bamms.com tom
//登录主机
$ftp tom

/etc/host.conf 配置名称解析器

代码语言:javascript
复制
$ cat /etc/host.conf
order hosts,bind
multi on

”order”指定主机名查询顺序,其参数用逗号隔开的查找方法。支持的查找方法为bind和hosts,分别代表DNS、/etc/hosts,此处规定先查询/etc/hosts文件,然后再使用DNS来解析域名

/etc/services 端口映射文件

(判断)

代码语言:javascript
复制
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp  fspd
ssh 22/tcp
telnet 23/tcp

/etc/resolv.conf 配置DNS客户

P228-P233: 常用网络管理工具

ifconfig 配置网络地址信息

显示或临时配置当前主机某张网卡的IP地址。

代码语言:javascript
复制
interface 网络接口的名称,如eth0(网卡) 
ifconfig eth0 //查看eth0的网络情况
ifconfig eth0 up/down //激活或关闭eth0
ifconfig eth0 192.168.0.25 netmask 255.255.255.0 //设置eth0的IP地址和子网掩码

nslookup 域名解析测试

查询一台机器的IP地址和其对应的域名,使用权限为所有用户,它一般需要一台域名服务器来提供域名服务。“>”后输入查询IP地址,“exit”退出。

ping 测试网络状态

测试网络是否可达。“Time out”主机不可达,若数据包丢失严重则说明网络很不稳定。

代码语言:javascript
复制
ping www.baidu.com -c 3 //发送三个数据包来测试

ip 网络配置工具

ip [options] object [ command [arguments] ]

  • options参数
    • -v 打印iproute信息
    • -r 将ip地址转换成域名
    • -s 输出详细结果
  • object 管理对象
    • Link 网络接口设备,通常网卡
    • Address IP地址
    • Neighbour ARP记录
    • Rule 路由策略

    ……

代码语言:javascript
复制
sudo ip addr add 192.168.44.122 dev eth0 //添加IP地址到eth0网卡上
sudo ip rule add from 192.168.0.25 prio 32777 reject //丢弃源地址属于192.168.0.25网络的所有数据包

netstat

用来显示活动的TCP连接、计算机侦听端口、以太网统计信息、IP路由表、IPv4统计信息(IP,ICMP,TCP,UDP)以及IPv6统计信息(TCP,UDP)。

  • -a 所有
  • -e 以太网的统计信息
  • -n 活动的TCP连接,数字形式
  • -o 活动的TCP连接
  • -p 协议
代码语言:javascript
复制
netstat -p -tcp //查看tcp协议类型的连接
netstat -p -tcp -udp //仅显示TCP和UDP协议的统计信息
netstat -o 5 //每5秒显示一次活动的TCP连接和进程ID
netstat -n Co //以数字形式显示活动的TCP连接和进程ID
netstat -e -s //显示以太网统计信息和所有协议的统计信息
netstat -a //显示处于监听状态的所有端口
neystat -ln //显示当前主机监听的所有端口

ftp 访问命令

用来进行远程文件传输。是标准的文件传输协议的用户接口,是TCP/IP网络计算机之间传输文件的简单有效的方法,允许传输ASCII和二进制文件。

ftp [-dignv] [主机名称IP地址]

代码语言:javascript
复制
ftp>命令
ls //列出远程机的当前目录
cd //在远程机上改变工作目录
lcd //在本地机上改变工作目录
close //终止当前的ftp会话
hash //每次传输完数据缓冲区中的数据后就显示一个#号
get (mget) //从远程机传送指定文件到本地机
put (mput) //从本地机传送指定文件到远程机
quit //断开与远程机的连接,并退出ftp

route 路由设置

P250:SSH服务使用

SSH远程登录,端口号22

安装SSH软件包

启动服务,使用netstat监听ssh服务状态

打开命令行输入ssh **用户@ip**进行远程连接

#### P255: 信息安全基础

例:什么是数字签名,什么是网络攻击,网络传输特性,是否具有保密性,什么是安全性

网络攻击:

  • 中断:正在传输的信息被中止。
  • 截获:在传输的过程中被其他窃听者获取敏感信息。
  • 修改:正在传输的信息被其他人修改后再发送给接收方。
  • 捏造:网络上的其他非法用户以真实用户的名义发送虚假信息。

网络传输特性:

  • Integrity(完整性):实现数据完整地传输给对方,即在传输的过程中不被修改。
  • Confidentiality(保密性):保证信息在传输的过程中不被其他人窃听获取。
  • Availability(可用性):网络上的服务器可以实时被利用。

加密方式:

  • 对称加密(单钥)
    • 同一个密钥去加密和解密数据。发送方在发送信息前使用密钥(只有发送方和接收方知道)对数据进行加密,然后传输密文给接收方,接收方使用同样的密钥来解密密文,得到明文信息。
    • 好处:算法成熟,易于实现;弊端:密钥管理
    • DES, 3DES, AES
  • 非对称加密(双钥)
    • 发送方在发送信息前使用接收方的公钥(所有人都知道)进行加密,然后传输密文给接收方,接收方使用自己的私钥(只有接收方自己知道)来解密密文,得到明文信息。
    • 好处:不进行密钥传输,降低密钥管理风险;弊端:算法实现难度,速度慢
    • 背包算法,RSA

    一般使用非对称方式加密密钥进行数据传输,使用传递的密钥来加密数据。

数字签名:

解决问题:发送方否认问题,即发送方否认发送过某一信息;接收方否认问题,即接收方否认接收到某个消息

  • 消息加密:整个消息的密文作为认证符。
  • 消息认证码:MAC消息和密钥的公开函数,产生定长的值作为认证符。
  • Hash 函数:将任意长的消息映射为定长的 hash值的公开函数,以该hash值作为认证符。目前主要使用的数字签名算法有以下几种:
  • RSA算法:是目前应用最广泛的数字签名,Linux 下的 OpenSSH 中即使用这一算法。DSA (Digital Signature Algorithm)算法:基于有限域上的离散对数问题即 DSS(数字签名标准)。
  • GOST 算法:俄罗斯采用的数字签名标准算法。
P266: FTP

**主要功能:**

  1. 不同等级的使用者。
    • 实体账号 real user
    • 访客 guest
    • 匿名登录者 anonymous
  2. 命令记录与登录文件记录
  3. 限制或解除使用者所在的根目录。(提高安全性)

用户分类:

  • 实体用户(Real user)。系统本机用户。Linux系统一般不会针对实体用户进行限制,因此用户可以针对整个文件系统进行所有的工作。这是非常危险的,为禁止系统使用的账号登录,管理员可以在文件/etc/ftpusrs中设定不允许登录的账号,如root是不允许登录FTP的。
  • 访客(Guest)。访客用户。只能进行文件传输的用户,即虚拟用户,访问服务器时仍然需要验证。
  • 匿名者(anonymous)。对于公共性质的服务器可以提供匿名用户访问(一般服务器很少使用),但应对其进行尽可能多的限制,包括以下一些内容。
    • 允许的工作指令要减少很多。
    • 限制文件传输的数量,尽量不要允许其上传数据。
    • 设置匿名者同时登录的最大联机数量。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux 知识点汇总
    • P4: Linux的基本特征 8个
      • P25-26: 关机与注销
        • P57: Shell常用特殊符号 7个
          • P57: Shell常用操作 4个
            • P61: Shell常用命令 10个
              • P65-96: 编辑器 2个
                • P77: 挂载
                  • P81: swap交换分区
                    • P88-91: 压缩和解压 3个
                      • P105: Ubuntu用户系统概述
                        • P113: 用户管理命令
                          • P117: 组管理命令
                            • P118: 权限管理
                              • P127: 磁盘概述
                                • P128: 磁盘管理方法
                                  • P193-195: 进程管理
                                    • P200: 临时工作安排at
                                      • P212: IP地址表示形式及分类
                                        • P217: TCP包头
                                          • P220: ARP/RARP概念
                                            • P225-227: 网络配置文件
                                              • P228-P233: 常用网络管理工具
                                                • P250:SSH服务使用
                                                  • P266: FTP
                                                  领券
                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档