Linux系统与网络管理

0. 背景

0.1 Unix

Unix诞生于1969年

特点

  • 多任务
  • 多用户
  • 多平台
  • 保护模式
  • 可移植操作系统接口(POSIX)

0.2 Linux

与Unix关系

类Unix系统,完全按照Unix的思想设计的

历史

诞生于1991年,创始人Linus

两大分支

BSD unix
unix System V

0.3 GPL规则

  • GPL允许软件自由传播,修改,但不能修改后以一定的权限许可来出售
  • GPL允许个人和组织为盈利而传播GPL软件
  • 使用该软件的源代码时,必须保证在新的软件中保证源代码可以被免费使用
  • 出售自由软件的的组织需要遵循一定的GPL规则:
    ①不能限制购买软件的用户自由权
    ②必须告诉用户软件属于GPL范畴
    ③必须提供软件完整的源代码

1. 基础知识

1.1 Shell

系统用户界面,是用户和内核交互的一种接口。解释命令给内核。
shell也有一套自己的语言。

shell快捷键

CTRL+<选项>:

  • h:删除前一个字符
  • u:删除整行
  • c:中断当前命令
  • d:结束输入(在shell会使用户注销)

此外

  • 上下键盘:上下光标,查看上一个或下一个命令
  • tab:命令补全
  • q:大部分程序退出命令

1.2 退出命令

1.2.1 注销

exit或者loglout
只是切断前台,后台继续执行任务。
eg:发出shutdown命令后使用exit,用户退出后依旧会关机

1.2.2 关闭系统

shutdown [options] [time] [message]

选项[options]

options 含义
-r 关机后重启
-h 关机后停机
-k 只发送警告,不关机

选项[time]

格式 用法 备注 例子
时间串 hhmm/小时分钟 默认24h制,若使用12小时制需要后面加入am/pm
特别的时间串:
NOON(12:00)
MIDNIGHT(0:00)
TEATIME(16:00)
NOW(现在,一般省略不写)
1130表示11:30
日期串 MMDDYY/月日年 TODAY
TOMORROW
月可以使用前三个首字母
星期可以使用英文缩写
偏移量 +<数目><时间单位> 时间单位默认为minute +1week

注意:在rh8,turbo Linux7之后的版本只有两种方法:

  • 标准的hh:mm格式
  • 偏移量:+n ,n的单位只能是分钟
  • 超过15分钟关机警告无提示

shutdown相似命令

  • halt:等价于shutdown -h now
  • reboot:等价于shutdown -r now

1.3 其他命令

1.3.1 passwd

格式:passwd [用户名]
root用户才可执行

1.3.2 date

  • date [opion]
    date默认显示当前位置时间
    eg:data -u 显示格林威治时间

  • date [时间格式]
    时间格式:MMDDhhmm[[CC]YY][.ss]
    月日时分[[年份前两位]年份后两位][秒](括号内是可以省略的)
    eg:date 0903123312
    2012年9月3日12点33分

1.3.3 cal

cal [option] [月] [年]
查看日历

选项

  • -y:显示整年日历
  • -j:从该年1.1开始到今日作为日期的Julian式日历
    年需要使用完整格式

1.3.4 logname/whoami

  • logname:当前登录系统的用户的名字
  • whoami:当前用户登录的身份
  • who/w:当前登录的所有用户

logname和whoami区别

假设有以下三种情况
①:普通的登录(区别于以下的两种情况),只登陆root/普通用户
image
此时两者一致
②:假设现在已经登录普通用户gx,使用su命令切换到root
image

③假设现在登录了root,使用su登录到gx
image

总而言之whoami显示当前使用的用户角色,logname显示最早登录的用户角色

1.3.5 write

write username [终端号]
向同一系统的用户进行通讯
mesg [选项]
设置是否屏蔽消息
-y为开启,-n为关闭。root无视屏蔽
who -w
查看用户信息屏蔽情况

1.3.6 uname

uname [选项]
查看主机信息
-a 所有信息
-n 系统名(计算机在网络中的节点名)
-s 操作系统的名字
-r 操作系统的版本号
-v 操作系统的版本信息
-m 机器的硬件
-p 处理器类型

1.3.7 man

帮助命令
使用man进入man page

1.4 文件系统简介

1.4.1 ext2和ext3

ext3相比ext2加了日志
ext4相比ext3修改了重要的数据结构,提供更佳的性能和可靠性

1.4.2 XFS

高性能,架构和扩展性
缺点:不能缩小,删除大量文件会下降性能

XFS和ext4区别

  • 单个文件大小:
    ext4是16GB~16TB
    XFS是16TB~16EB

  • 最大文件系统大小
    ext4可以是1EB
    XFS可以是8EB

  • 可扩展性
    ext4不如XFS

1.4.3 Linux目录

/etc:系统配置文件目录
/var:含系统变化信息
/home:本地用户目录
/bin:可执行文件目录
/lib:系统共享库开发库
/sbin:系统执行程序

文件名格式

  • 文件名不可使用特殊字符(符 !@#$%^&*()[]{}’ ”/;<> 空格)
  • 不规定扩展名
  • 用.开头的为隐藏文件

绝对路径和相对路径

绝对路径:固定从根目录开始的路径
相对路径:从当前目录开始的路径

目录捷径

.表示当前目录
..表示上一级目录

设当前目录为/home/gx
..表示/home
../lyq表示/home/lyq
./abc表示/home/gx/abc

1.4.4 有关文件的操作命令

ls cd pwd cp

ls

ls [option]

选项 含义
-l 长格式完全属性列表
-a 列出包含隐藏文件的所有文件
-C/x 按列输出,纵向/横向排序
-F 标记文件类型
-R 递归列出所有子目录
-t 按照时间排序
-d 只列出目录,不列出自身
i 查看inode
cd pwd cp

cd [路径]
变换目录
pwd
显示当前路径
cp -t 文件名 目的地
eg:cp 1.txt /home/a 复制文件
eg:cp -r ttt /home 复制目录

mv/rm

mv [option] source dest
eg:mv 1.txt /home/abc/2将1.txt移动到/home/abc下并重命名为2
eg:mv * /home/abc将当前目录下所有文件移动到/home/abc下

eg:mv abc net03把目录abc改名成net03

rm [option] file
删除文件
选项
-r :删除目录
-f :强制删除

eg:rm /home/g*删除以g开头的文件
eg:rm -f /home/* 删除home下所有文件
eg:rm -rf /home 无需提示立刻删除

mkdir/rmdir

mkdir建立目录
rmdir删除空目录

ln

ln [options] file target
ln用于给文件多个名字,可以使用不同名字引用同一文件

  • 硬连接:ln file targetfile
    源文件和目标文件需要在同一个文件系统
    源文件和目标文件引用同一个inode(索引节点)和盘上相同的数据
  • 符号连接:ln -s file target
    目标文件指向源文件的路径和名字而不是数据。
    目标文件会指向一个新的inode,不同于源文件的inode

ls -i在列表中包含索引节点号inode
ls -lL查看原始连接属性

例题

1.5 用户,组和文件

每个用户都有一个UID(User ID)和GID(Group ID),通过/etc/passwd修改UID和GID。判断文件权限是通过识别用户UID和GID实现的,与当前组的名字无关
可以使用id查看用户和组的值

1.5.1 文件属性

image

image
第一位

d 目录
- 文件
l 连接文件
b 可供存储的设备
c 外围设备,如鼠标

其他九位三三一组,为权限字

  • 2~4 文件拥有者属性
  • 5~7 文件所属组的属性
  • 8~10 其他人对此文件的属性

1.5.2 文件保护标志

权限 含义 允许
r 可读 访问和复制
w 可写 更新和删除
x 可执行 执行程序

1.5.3 目录保护标志

权限 含义 允许
r 列表 列出内容,还不能进入目录
rx 查找 定位和对文件操作
w 可写 在目录中增删改查

tip:如果没有x权限,即使拥有w权限也无法访问

1.5.4 例题

假设mike用户试图删除/home/mike目录下一个文件1.txt目录mike和1.txt的属性分别是如下几种情况,问他是否能删
除该文件?
image
A)mike是目录的所有者,并且目录有写权限(由d和w表示),所以mike可以删除1.txt文件。

B)虽然mike不是目录的所有者,但是该目录对所有用户都开放了写权限(由最后的rwx表示),所以mike可以删除1.txt文件。

C)mike是目录的所有者,并且目录有写权限,但是1.txt文件的所有者是root,不过这并不影响删除操作,所以mike仍然可以删除1.txt文件。

1.5.5 修改权限

  • chown 用户 文件改变文件的拥有权
    改变用户和组,使用chown 用户.组 文件
  • chrgp 组 文件改变组拥有权
  • chmod 模式 文件改变文件访问权限

如果是目录 使用 -R会递归处理所有文件

文字设定法

chmod 用户类别[+=-][标志][,第二个权限] 文件

用户类别 u用户
g组
o其他
a所有
+=- = 设置保护 注意:一旦设置会覆盖之前的权限
+ 添加保护
- 删除保护
标志 r
w
x 执行
文件 支持通配符
其他标志
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。(设置文件suid或sgid
t 保存程序到交换设备上
u 与文件主属性有相同的权限
g 与和文件属主同组的用户拥有一样的权限
o 和其他用户有相同的权限
文字设定法举例
  • chmod ug+w,o-x text
    设置text属性为:主用户和同组用户增加写权限,其他用户删除执行权限

  • chmod og=rx *
    当前目录所有文件:同组用户和其他可以进行读和执行权限,覆盖之前的权限

  • chmod u+s a.out
    假设执行后 a.out权限为
    image
    设另外一个文件1.c,其权限为–rw-------,属主为mike。当另一个用户gx执行此文件a.out,他的身份会暂时变成mike,则可以运行1.c文件
    使用s命令,当用户使用该文件时其身份会暂时变更和文件主属一致。

数字设定法

数字 属性
0 无权限
1 可执行
2 可写
4 可读

确定权限后将其相加,数字属性格式是从0~7,顺序为u g o
设置suid和sgid:suid前面加4,sgid前面加2

举例
  • chmod 644 mm.txt-rw-r--r--

  • chmod 750 wch.txt-rwxr-x---

  • chmod 4544 1.txt-r-sr--r--

  • chmod 2755 1.txt -rwxr-s-rx

  • chmod 6751 1.txt -rwsr-s--x

  • chmod 4644 1.txt -rwSr--r--
    由于该用户组没有x权限,所以这段是没有意义的,大写S也代表着无效

1.6 文件备份和压缩

1.6.1 tar

tar [option] 文件/目录

option 意义
c 创建一个档案
x 从档案解开文件
v 显示详细信息
f 指定操作的tar文件名
t 浏览档案内容
-N/--newer 'date' 备份指定日期后变化的文件

工具命令

选项 工具 扩展名 备注
z 用gzip压缩 .gz gzip [] 文件
-d 解压缩
-c 标准输出
Z 用compress压缩 .Z 最传统的压缩工具
j 用bzip .bz2 压缩比最高的工具

1.6.2 举例

  • tar cvf /dev/ftape /home
    将home压缩到该文件内

  • tar zcvf home.tar.gz /home
    备份文件名为home.tar.gz

  • tar -N ‘2012-09-10’ -cvf home.20120910.tar /home
    对/home目录进行增量备份,备份2012年9月10日以来变化的文件,备份文件名为home.20120910.tar

2 vi编辑器

目前使用的vi实际上是vim(Vi Improved)

2.1 常用命令

vi file 以普通方式打开文件
view file以只读打开文件

2.2 三种模式

  • 命令模式:进入vi默认模式,可以输入命令和移动光标
  • 插入模式:输入文本
  • ex模式:输入扩展命令

2.3 光标移动命令

2.3.1 按字符移动

image

2.3.2 按行移动

0 移动至行首
$ 移动至行尾
nG 移动到第n行
G 移动最后一行

2.3.3 按单词移动

b 移动到词首
e 移动到词尾
w 移动到下一词词首

2.4 删除

x 删除光标下字符
X 删除光标前字符
dd 删除整行
dw 删除到下一词首
d[n] 删除指定行

2.5 查找与替换

2.5.1 查找

/string 从当前光标位置向下查询
?string 向上查询

2.5.2 替换

:n,ms/oldstring/newstring/g
从n到m行,将所有的oldstring都替换为newstring

2.6 其他命令

:w 保存
:w! 强制保存
:wq 保存退出
:wq! 保存强制退出
:q 退出
:q! 强制退出

image

3 Linux安装与启动

3.1 安装中虚拟控制台

ALT+F1 安装主程序窗口
ALT+F2 Shell环境(第二阶段)
ALT+F3 调试信息
ALT+F4 系统核心信息
ALT+F5 mke2s的输出信息

tips:只有文本安装时才可以调换,GUI模式不可以

3.2 硬盘

3.2.1 硬盘代号

Linux最多有4个primary分区,所以第一个extend分出来的logical分区为/dev/hda5

硬盘安装点 Linux代号
第一个IDE的Master hda
第一个IDE的Slave hdb
第二个IDE的Master hdc
第二个IDE的Slave hdd
sata

若bios为兼容模式,第一个sata硬盘代号为hde
若为非兼容,第一个为sda

SCSI

第一个SCSI硬盘为sda

3.2.2 硬盘分区

分区 大小
/boot 不小于64M(r8.3最低200M)
/swap 内存的2~3倍
/var 存储日志,多留空间。若为邮件服务器,需要独立分区
/usr 作为开发平台需要多预留空间
/home 需要多人使用就独立分区

3.3 运行级别

运行级别是在/etc/inittab系统操作的不同模式。本质是过滤器,有所选择的选取进程运行
image

4 Shell编程

4.1 变量

字符串赋值

h=哈哈 h="哈哈" h='哈哈'
三者都可以赋值

变量引用

hhh是变量名,$hhh是变量的值
显示变量的值:echo $hhh
设置全局变量:export hhh

4.1.1 PATH变量

和windows的相似(实际上就是win模仿的Linux),在shell中使用命令时,会首先查找PATH路径的可执行程序。
默认PATH为;
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

type和which命令

  • type:会告知命令是内建还是外部的,如果是外部还会得知完整路径
  • which:只会查找外部的命令

修改PATH

PATH=$PATH:新的路径

4.2 提示符

bash有两层提示符,主提示符是等待命令输入时的提示符。缺省提示符是$,超级用户是#

4.2.1 PS1变量

  • PS1='$PWD>' 把当前路径作为提示符
    image

  • PS1='\d>' 把当前日期作为提示符
    image

  • PS1=\t> 把当前时间作为提示符
    image

image

4.3 环境文件

  • /etc/profile/etc/bashrc
    系统变量,由管理员维护

  • $HOME/.bash_profile
    用户可修改

  • $HOME/.bashrc
    由ENV定义,bash的特征

profile和bashrc区别

bashrc只在启动系统被读取一次
bashrc在系统启动时,或shell调用时都会被读取

image

4.4 更换目录快捷方式

HOME 主目录(用户目录)
PWD 当前目录
OLDPWD 先前工作目录

image

4.5 扩展通配符

查询,匹配的字符,在数据库也经常用到

* 匹配任意字符(包含0)
匹配任意1个字符
[list] 匹配其中之一的字符
[!list] 匹配不在其中的字符

tips:

  • []只会匹配一个字符
  • 不可使用汉字做字符串(汉字俩字符)
  • 定义一个范围,可以使用- ,例如[1-4]则是匹配1,2,3,4任意一个

4.6 shell别名/自定义命令

alias defineName=‘cmd’

4.7 输入输出流

作用 默认指向 编号
stdin 标准输入 键盘输入 0
stdout 标准输出 终端屏幕 1
stderr 标准错误输出 终端屏幕 2

4.7.1 重定向

和C++的流的重定向类似

  • stdout重定向
    >file这个符号用于将命令的输出重定向到一个文件。如果文件已经存在,它会被覆盖。例如,ls > file.txt会将ls命令的输出保存到file.txt文件中。(还可以使用1>file)

  • stdin重定向
    < file这个符号用于将文件的内容作为命令的输入。例如,sort < file.txt会将file.txt文件的内容作为sort命令的输入。

  • stderr重定向
    2>file这个符号用于将命令的错误输出重定向到一个文件。例如,ls /nonexistent 2> error.txt会将错误信息保存到error.txt文件中。

  • stdout和stderr重定向
    &>这个符号用于将命令的标准输出和错误输出都重定向到一个文件。例如,ls /nonexistent &> output.txt会将所有输出(包括错误信息)保存到output.txt文件中。(重定向是从左至右使用的)

  • stdout/stderr追加重定向
    >>file这个符号也用于将命令的输出重定向到一个文件。但是,如果文件已经存在,新的输出会被追加到文件的末尾,而不是覆盖它。例如,ls >> file.txt会将ls命令的输出追加到file.txt文件的末尾。(stderr为2>>file

4.7.2 管道

管道和重定向作用类似,但原理不同
管道如名字,命令的输出对准下一个命令的输入
eg:ls|less此命令将ls的输出作为less的输入
可以多次连接

tips:

  • 命令不知道输入输出是连接一起的
  • 同步运行
  • 不可操控标准错误输出流
  • 可以多次连接

4.8 shell 脚本

shell类似于win的批处理文件

执行脚本
chmod +x file
sh file
. file

4.8.1 编写脚本

第一行

指定哪一种shell脚本解释shell程序

#! /bin/bash#! /bin/csh还是#!/bin/tcsh

注解

用#开头的,表示注释

4.8.2 特殊参数

  • 命令行参数$1-$9
    eg:假设这么运行脚本./myscript.sh arg1 arg2 arg3 其中,arg1等为变量
    。那么在脚本内部
    $1将表示第一个参数,即arg1
    $2将表示第二个参数,即arg2
    $3将表示第三个参数,即arg3
    $0为保留段,$0实则是脚本本身,可以使用超过$9的参数。使用方法为{$11},{$12}

  • $# 传参数量

  • $@ 表示所有的位置参数,作为一个列表

  • $$当前shell的PID

  • $?上一个命令的返回状态

4.8.3 read 语句

类似于c++的std::cin,接收标准输入并且赋予给变量,可以赋值给多个变量,中间用空格分隔
read $a $b $c赋值给a,b,c三个变量
tips:

  • 如果参数多于变量数,多余的参数合并起来赋予给最后一个变量
  • 如果参数小于变量,则给多余的变量赋予空字符串

4.8.4 test语句

test常用作判断,可判断字符,数值,文件三类,如果为真返回1,为假返回0。
test 判断句

num1=10
num2=20
if test $num1 -lt $num2; then
    echo "$num1 is less than $num2"
fi

输出$num1 is less than $num2
-lt表示"less than"(小于)

4.8.5 expr语句

计算算术运算符
将其返回为标准输出

$ expr 4+5
9
$

tips:在*和/之前需要用反斜线,防止被解释

4.8.6 exit 结束脚本,可以带返回值

4.8.7 判断句

if [ 条件判断一 ] && (||) [ 条件判断二 ];
then 执行命令的语句序列1
elif [条件判断三] && (||) [ 条件判断四 ];
then 执行命令的语句序列2
else 执行命令的语句序列3
fi

image

4.8.8 循环

for ….do….done
while….do….done
until….do….done
image

4.8.9 shell脚本几个例子

下载系统

#!/bin/bash
if [$1 -eq -d]
then
	wget 链接
else
	wget 链接
fi

文件压缩系统

image

5 RPM管理文件

5.1 安装 -i

rpm -i/--install [options] file.rpm

可以使用wget命令来下载rpm文件

5.1.1 options

  • -v
    显示附加信息

  • -h/--hash
    输出50个hash记号,可以在安装中,使用hash符号显示安装百分比

  • --nodeps
    不检查依赖性

  • --replacepkgs
    强制重新安装已经安装的安装包

  • replacefiles
    替换属于其他软件包文件

5.2 卸载 -e

rpm -e/--erase [options] pkg

选项
--nodeps: 不检查依赖性

5.3 升级 -U

rpm -U/--upgrade [options] file.rpm

5.3.1 选项

  • -v
    显示附加信息

  • -h/--hash
    输出50个hash记号,可以在安装中,使用hash符号显示安装百分比

  • --nodeps
    不检查依赖性

  • --replacepkgs
    强制重新安装已经安装的安装包

  • replacefiles
    替换属于其他软件包文件

5.4 查询 -q

rpm -q/--query option pkg

5.4.1 选项

  • -f:file
    查询file属于哪个软件包
  • -i
    显示软件包的概要信息
  • -l
    显示软件包的文件列表
  • -p
    查询软件包的文件

5.5 验证 -V

rpm -V/--verify options pkg1

5.5.1 选项

  • -f
    验证特定文件
  • -a
    验证所有安装文件包
  • -p Package_file
    验证package——file所属的软件包

5.5.2 验证后输出

. 测试通过
5 MD5属性已经改变
S 文件大小发生变化
L 链接属性改变
T 创建时间改变
D 设备名称改变
U 文件所有者改变
G 所属组改变
M 访问许可访问类型等文件属性改变

5.6 YUM

image

6 Linux GUI

远程X

host:display_number.screen_number

  • host
    可以省略,表示本地系统
    服务器端主机的名字和IP地址

  • display_number
    设备ID号,一般为0

  • screen_number

屏幕ID号

两种办法远程X

  • 软件名 -display ipaddress:screen_number
    eg:xeyes -display 192.168.1.3:0

  • 设置DISPLAY变量
    DISPLAY=192.168.1.3:0 xeyes

DISPLAY=192.168.1.3:0
export DISPLAY
xeyes

安全控制

xhost +允许任何人访问
xghost -限制访问
在限制访问下:
xghost +主机名/IP
xghost -主机名/IP

image

image

7 用户管理

7.1 用户

用户名存储在/etc/passwd
密码/口令存储在/etc/shadow

工作环境包括:

  • 用户家目录
    用户登录后存在的目录,存放用户个人配置,在/etc/passwd中设定
  • 用户使用的shell
    /etc/passwd
  • 用户脚本
    在用户家目录中,从/etc/skel进行复制
  • 登录欢迎信息
    存放在/etc/motd文件中

7.2 用户的数据库

7.2.1 /etc/passwd

用户可读,只有root可写
文件的每一行用于描述一个账号,按照以下格式
用户名:口令:UID:GID:注释信息:家目录:shell
image

7.2.2 /etc/shadow

口令从passwd分离到shadow内,减少字典攻击的可能性
shadow只有超级用户有权限
存储:

  • 用户名
  • 口令(加密)
  • 从1970.1.1开始计算,修改口令已经多少天
  • 需要多少天后才能修改口令
  • 多少天后口令会被破解
  • 多少天后向用户发出修改口令的警告
  • 多少天后禁用用户
  • 1970.1.1后,账号会被禁用
  • 保留字段
  • 每个用户占用一行

7.3 用户/组的增删改查

7.3.1 useradd

useradd [option] 用户名
增加用户,一般不使用选项etc/defaults/useradd内文件补充缺省值
useradd -D [选项]
已有用户修改属性

u uid 指定uid
g group 指定组
c comment 注释用户
-d home 用户家目录
-m 不在自动创建家目录
-k skel 指定用户模版,默认/etc/skel
-s shell 指定shell
-e date 账号停用日期 YYYY-MM-DD
-f day 账号多日后停权

7.3.2 usermod

修改用户属性 用法同上
usermod -G 组1,组2--- 用户名
编辑组成员

7.3.3 chage

chage [] 用户名
更改口令期限 一般为交互选项

7.3.4 userdel

userdel [-r] 用户名
删除一个用户,-r可以清楚用户的家目录

7.3.5 groupadd

groupadd -g gid
增加组的gid

7.3.6 groupdel

groupdel gid

7.3.7 gpasswd

gpasswd -a user 组名// 添加用户到指定组
gpasswd -d user 组名//指定组删除用户

7.3.8 groupmod

groupmod -g gid 组名 //修改组的gid
groupmod -n 组名 新组名 //修改组名

image

7.4 umask

umask是通过8进制数666减去后所描述的权限,默认
为022,即缺省权限为644。
n系统的umask在系统环境文件设置,用户可以用户环境
文件重新设置

8 进程管理

8.1进程和线程

进程:一个程序在数据集合上的一次执行。一个进程被分成三大部分:代码段、数据段和PCB(进程控制块)
线程:通过调度和分派合理利用资源实现多任务

8.1.1 区别

  • 进程拥有资源,线程共享进程拥有的资源
  • 进程间切换必须保存PCB,同进程不需要。

8.2 PCB

  • 进程ID(PID
  • 父进程(PPID)
  • 实际用户和组ID(UID和GID)
  • 有效用户和组ID(EUID和EGID)
  • 进程状态
  • 信号状态

8.2.1 PID

PID是跟踪进程的唯一整形数

  • 按次序分配
  • 最大为32767
  • 达到最大从1开始继续按次循环

8.2.2 PPID

父进程的PID。

每个进程都有一个唯一的进程 ID(PID),并且每个进程都知道其父进程的 ID,即 PPID。这种机制允许进程跟踪其创建者或父进程。

8.2.3 uid euid

uid:登录id
suid:有效id
使用su切换用户时,uid才和euid不同

8.2.4 ps 查看进程

选项

-e/-A 显示所有进程
-f 全格式
a 显示现在包括其它用户的所有程序
u 以用户为主的格式显示程序状况
x 显示所有程序,不以终端机区分
-H/f 树状结构显示程序相互关系
-l 长格式
e 列出程序的环境变量
c 显示每个程序的真正指令

最常见的参数组合是ps -ef和ps aux。对于一个系统管理员,掌握ps aux尤为重要,通过aux组合参数可以检查出进程的故障。ps -ef是用于了解当前进程的基本情况,对于处理系统故障用处不大

8.2.5 top

动态显示进程状态
image


image

8.2.6 nice/renice

niceness 静态优先级

以niceness为基础,CPU再根据实际情况分配资源(即内置动态优先级)。niceness越小,优先级更高

nice

运行一个程序并且改变优先级
nice [option] 运行程序命令
默认状态 niceness增加10
-n值为-20~19.可以指定n
image

renice

改变运行中程序的niceness值
renice n [[-p]pid]
n为-20~19
image

8.2.7 jobs 查看后台运行任务

使用&在命令后结束会使其在后台运行

8.2.8 fg

将后台任务至前台
只有一个后台任务可以直接fg
若有多个,则
image

8.2.9 bg

前台到后台
%任务号 &%命令名 &
ctrl-z挂起,再bg也可以

8.2.10 nohup

当用户退出shell,后台进程也会终止。若不想终止后台,可以使用:
nohup ls -LR /&
输出到nohup.out

8.2.11 kill

信号

内核和进程之间通讯通过信号实现,如终止进程发送信号等。
有两种信号:
SIGSTOPSIGKILL,是超级用户停止,杀死进程的后门
kill -l 获取所有信号名
image
kill -s 信号名/编号/信号名字去掉SIG
发出信号
killall 程序名

9 磁盘控制

9.1对目录的访问控制

image

9.2 粘滞位

使用粘滞位创建的文件说明用户是唯一可以删除他的用户
标识为t(最后一位),例如
drwxrwxrwt

9.2.1 设置

chmod +t 目录名
chmod 1777 目录名

image
大写T代表没有执行权限,但是又设置了t权限

9.3 文件系统

9.3.1 df(disk free)

检查文件磁盘占用情况。查看磁盘占用多少空间,还剩下多少空间。

  • -k 以k字节显示
  • -m 以m字节为显示
  • T 文件系统类型
  • t fstype 指定文件的分区报告

9.3.2 mkfs

在磁盘/分区上创建(格式化)文件系统。
mkfs [-V] [-t 文件系统类型] [fs-options] filesys[blocks]

  • -V 显示详细模式
  • -t 给定文件系统类型,默认为ext2
  • -c 检查该分区是否坏轨
  • filesys:硬盘名
  • blocks:逻辑块大小
    关于逻辑块:默认1024byte,逻辑块越大性能越好,但是磁盘空间越小
    image

9.3.3 mount

挂载指定的文件系统
mount [选项] [设备名] [挂载点]

  • -a 加载/etc/fstab中所有设备
    使用mount时,fstab就会记录相关内容,也就是说mount加载设备的记录都在fstab内

umount就是卸载
image

9.4 Samba

实现Linux和windows设备和驱动的共享

9.4.1 SMB接口的监控进程

  • smbd:SMB的监控进程
  • nmbd:给客户机提供NetBIOS名字服务支持

10 调度与备份

10.1 调度

调度就是处理一堆任务时,预先或者是一次性发出任务的请求,相当于把所有命令组合到一起。
Linux实现调度方法是使用cron和at系统

10.2 cron

cron由:

  • 守护进程(crond)
  • 用户的配置文件(crontab)

组成
cron作用是记录系统状态日志,启动备份,轮换日志文件和开始允许系统清理脚本

10.2.1 cron的守护进程

  • cron由守护进程提供,叫crond/cron,由版本决定

  • crond在crond初始化只检查crontab文件,可以使用crontab命令更改文件,并且热更新到crond

  • cron可以配置为运行或拒绝特定用户的调度事件

  • cron有一个调度池(spool),相当于crontab的容器,每个用户都有一个专属的文件。/var/spool/cron

  • 区别于上点,也有一个全局的crontab(/etc/crontab)。两者语法不同

  • 以邮件形式发送给用户

crontab

  • crontab告诉cron,用户什么时候运行什么程序

  • crontab由两种类型条目:环境变量定义和事件

  • 环境变量告诉cron,事件启动的环境和环境变量
    是为了方便程序顺利执行而设置
    为了特定目的而设置

crontab条目

image

  • crond每分钟自检,匹配则执行对应脚本

  • 5个时间域,minute和weekday是逻辑或关系,其余时间都是逻辑与关系。(时间域与的关系需要全匹配,或仅需匹配其中一个)

  • 使用*来表示匹配任意值。用-表示范围,,分割列表。使用\数字表示表示数字的倍数。*\5表示5的倍数

image

*crontab命令*

crontab [-u user] file
crontab [-u user] {-l|-r|-e}
  • -u user指定用户,默认为当前用户,指定file到crontab表
  • -i 列出crontab文件
  • -r 删除crontab文件
  • -e 编辑crontab文件

10.3 at/batch

10.3.1 与cron区别

at只执行一次,cron可重复执行

posted @ 2023-12-15 17:28  魔法少女小胖  阅读(62)  评论(0编辑  收藏  举报