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/普通用户



此时两者一致

②:假设现在已经登录普通用户gx,使用su命令切换到root

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

总而言之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 文件属性



第一位

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的属性分别是如下几种情况,问他是否能删

除该文件?



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权限为



    设另外一个文件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 按字符移动

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! 强制退出

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系统操作的不同模式。本质是过滤器,有所选择的选取进程运行

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>' 把当前路径作为提示符

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

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

4.3 环境文件

  • /etc/profile/etc/bashrc

    系统变量,由管理员维护

  • $HOME/.bash_profile

    用户可修改

  • $HOME/.bashrc

    由ENV定义,bash的特征

profile和bashrc区别

bashrc只在启动系统被读取一次

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

4.4 更换目录快捷方式

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

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

4.8.8 循环

for ….do….done

while….do….done

until….do….done

4.8.9 shell脚本几个例子

下载系统

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

文件压缩系统

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

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

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

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 组名 新组名 //修改组名

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

动态显示进程状态


8.2.6 nice/renice

niceness 静态优先级

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

nice

运行一个程序并且改变优先级

nice [option] 运行程序命令

默认状态 niceness增加10

-n值为-20~19.可以指定n

renice

改变运行中程序的niceness值

renice n [[-p]pid]

n为-20~19

8.2.7 jobs 查看后台运行任务

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

8.2.8 fg

将后台任务至前台

只有一个后台任务可以直接fg

若有多个,则

8.2.9 bg

前台到后台

%任务号 &%命令名 &

ctrl-z挂起,再bg也可以

8.2.10 nohup

当用户退出shell,后台进程也会终止。若不想终止后台,可以使用:

nohup ls -LR /&

输出到nohup.out

8.2.11 kill

信号

内核和进程之间通讯通过信号实现,如终止进程发送信号等。

有两种信号:

SIGSTOPSIGKILL,是超级用户停止,杀死进程的后门

kill -l 获取所有信号名



kill -s 信号名/编号/信号名字去掉SIG

发出信号

killall 程序名

9 磁盘控制

9.1对目录的访问控制

9.2 粘滞位

使用粘滞位创建的文件说明用户是唯一可以删除他的用户

标识为t(最后一位),例如

drwxrwxrwt

9.2.1 设置

chmod +t 目录名
chmod 1777 目录名



大写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,逻辑块越大性能越好,但是磁盘空间越小

9.3.3 mount

挂载指定的文件系统

mount [选项] [设备名] [挂载点]

  • -a 加载/etc/fstab中所有设备

    使用mount时,fstab就会记录相关内容,也就是说mount加载设备的记录都在fstab内

umount就是卸载

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条目

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

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

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

*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可重复执行

Linux系统与网络管理的更多相关文章

  1. 基于Linux系统的Nagios网络管理模块的实现

    基于Linux 系统的Nagios网络管理模块的实现 1.引言 随着计算机网络的普及,网络管理已成为信息时代中最重要的问题之一.在现有的技术条件下,人们希望有一个更加稳定可靠的网络环境.计算机网络管理 ...

  2. linux运维的认知及RHEL7 Unix/Linux 系统 介绍和安装

    如何成为一个优秀的linux运维人员?      如果你有机会和条件:环境能够磨练一个人的能力和意志.      大胆的做你从未做过的项目,每一个项目都是对自身的极大提升.      有好的环境资源不 ...

  3. 【转】用capability 特征加强Linux系统安全

    用capability 特征加强Linux系统安全 摘要:传统UNIX系统的访问控制模型非常简单——普通用户对超级用户.在这种模型中,一个进程或者帐户要么只有很小的权限,要么具有全部的系统权限.显然, ...

  4. Linux 系统从入门到精通的学习大纲;

    以前没有接触过Linux,生产环境需要,有时候遇到问题,百度一下,问题解决了,在遇到问题,在百度,有时候问题是如何解决的,为什么会解决有点丈二的和尚摸不着头脑, 为此,想用一段时间,系统的学习下Lin ...

  5. 带你领略Linux系统发展及版本更迭

    Linux的出现是在1991年,Linus Torvalds的学生开发的,最初的Linux是类似Unix操作系统,可用于386,486或奔腾处理器的计算机上.Linus Torvalds是一个伟人,他 ...

  6. 老司机浅谈linux系统学习技巧

    Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...

  7. linux系统PKWindows系统,从各方便分析linux和Windows的优劣

    服务器系统linux系统和linux系统哪个好用,公说公有理婆说婆有理,今天鼎峰凡凡大概对Linux系统与Windows系统的优缺点PK!可以从以下几个方面来看 ①成本  赞成Linux的声音Linu ...

  8. linux系统服务器可能被攻击的几种攻击方式

    linux系统随着Linux企业应用的扩展,有大量的网络服务器使用Linux操作系统.Linux服务器的安全性能受到越来越多的关注,这里根据Linux服务器受到攻击的深度以级别形式列出,并提出不同的解 ...

  9. 第三天 RHEL7-Unix/Linux系统 介绍

    如何称为一名优秀的linux运维人员? 如果你有机会和条件:环境能够磨练一个人的能力和意志. 大胆的做你从未做过的项目,每一个项目都是对自身的极大提升. 有好的环境资源不要浪费,好好把握,慢慢进步. ...

  10. (转)浅谈 Linux 系统中的 SNMP Trap

    原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...

随机推荐

  1. [FAQ] 清理 Docker 环境长期构建占用磁盘空间过大问题

      $ docker system df 长时间积累多次运行 docker 构建过程,Build Cache 缓存几乎占据了硬盘 1/3 的容量. $ docker system  prune 此命令 ...

  2. [Go] Golang Context 包的注意点

    Golang context 包,定义了context 类型,携带截止日期,取消信号,和其它跨API请求作用域及进程间的值. 到服务器的请求应该创建一个 Context,服务器对外的调用应该接受一个C ...

  3. dotnet 已知问题 使用 Directory.EnumerateXXX 方法枚举 C 盘根路径可能错误的问题

    在 dotnet 里面,可以使用 Directory.EnumerateXXX 系列方法进行枚举文件或文件夹.在准备枚举驱动器根路径的文件或文件夹时,可能获取到错误的路径.错误的步骤在于传入的是如 C ...

  4. IIncrementalGenerator 获取项目默认命名空间

    本文将告诉大家如何在分析器里面获取到项目的默认命名空间 在 Roslyn 分析器里面读取项目的默认命名空间,可以通过读取项目的属性配置实现.通过 IIncrementalGenerator 增量 So ...

  5. Ubuntu 通过本机代理修复 NuGet 还原 error NU1301 失败

    在国内垃圾的网络环境下,我在虚拟机里面安装了 Ubuntu 系统,准备用来测试 MAUI 在 Linux 上的行为,然而使用 dotnet restore 构建时,提示 NU1301 失败.我通过配置 ...

  6. kafka connect gui 可视化管理工具

    kafka connect gui 可视化管理工具 官网地址:http://www.redisant.cn/ka 连接到 Kafka Connect 支持各种认证方式,支持 SSL/TLS 安全连接 ...

  7. 【web安全】隐藏nginx头文件信息

    摘要 Nginx作为开源web中间件,被广泛应用.因此源编译或者yum安装,都会带有其原有的nginx版本.很容易被针对,因此,通过修改nginx的源码.隐藏nginx版本和头部信息,保障nginx的 ...

  8. 【git】建立分支

    1.git clone现有的项目 git clone git@github.com:zhangshengdong/Zflask.git 2.建立关联 git remote add origin git ...

  9. Swift Charts 报错:Initializer ... requires that .. conform to ‘Identifiable‘

    目录 1. 问题描述 2. 解决办法 1. 问题描述 在运行Swift Charts官方折线图示例时,出现了如下错误. Initializer 'init(_:content:)' requires ...

  10. Golang csv操作

    目录 csv读写 追加写入 追加写入封装 csv读写 封装成工具包 package utils import ( "encoding/csv" "fmt" &q ...