一、Linux的安装及相关配置


计算机操作系统简介:

操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间

内核的定义:

管理和控制程序,负责管理计算机的所有物理资源,其中包括文件系统、内存管理、设备管理和进程管理

操作系统用户界面:

图形界面、命令行界面

LINUX主要发行版:

CENTOS、RHEL、FEDORA、UBUNTU、SUSE

安装过程中的各选项含义:

a) install or upgrade an existing system:安装或升级现有的系统
b) install system witn basic video driver:安装系统和基本的视频驱动程序
c) rescue installed system:救援安装系统
d) boot from local drive:从本地硬盘启动

二、UNIX和Linux操作系统概述


UNIX的定义:

计算机操作系统,用来协调、管理和控制计算机硬件和软件资源的控制程序

Linux简介:

是一套免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux操作系统主要用途:

主要用于服务器,特别是网络服务器

切换虚拟终端: Ctrl+Alt+F[1~6]

三、Linux命令及获取帮助


Linux命令的语法格式:

命令 【选项】 【参数】

whoami命令:

列出目前登陆Linux系统所使用的用户名(账号)

date、cal、和clear命令:

date:显示系统当前的日期和时间
cal:显示某月的日历
clear:清除屏幕

su和passwd命令

su命令:从当前的用户切换到另一个指定的其他用户,
切到root用户的命令:su – root
ubuntu版本切换到root用户:su
passwd命令:
修改dog用户密码的命令:passwd dog
useradd tom命令:新建tom用户

man命令:

获取某个Linux命令的使用说明
查看su命令的使用说明的命令为:man su
查看ls命令帮助的命令为:(不使用man方法)
ls –-help

ssh连接服务器命令:

ssh lh@192.168.121.128

四、目录文件的浏览、管理及维护


Linux文件系统的层次结构:

文件和目录都被组织成一个以根节点开始的倒置的树状结构

目录的定义:

可以存放文件和其他的子目录

顶层根目录:

用“/”来表示根目录

文件系统中的两个特殊目录:

. 表示当前目录,即用户所在的工作目录
.. 表示父目录,即当前目录的上一层目录

Linux中重要目录:

bin目录:用来存放常用的可执行文件
sbin目录:用来存放系统的可执行文件
家目录:超级用户root的家目录是/root,普通用户家目录存放在/home,使用用户名作为最后一级目录,如cat用户的家目录为/home/cat
dev目录:设备文件目录
etc目录:配置文件目录
挂载点(目录):可移除式硬件会被挂载在/media或/mnt目录之下
绝对和相对路径: 绝对路径以一个正斜线(/)开始,文件系统的根节点开始找,是文件位置的完整路标,相对路径不是以正斜线(/)开始,从当前目录到要查找的对象

pwd命令:确定现在所在的工作目录

cd: 切换当前目录
cd .. 进入上一级目录
cd ~ 切换到用户的家目录
cd – 切换到用户之前的工作目录
cd 目录名 切换到指定的目录
ls命令: 列出当前目录(默认为当前目录)或指定目录中的内容
ls -a 列出目录下的所有文件,包括以“.”开头的隐含文件
ls –l 列出某个目录中每一个文件的详细资料
cp命令 将文件(可以是多个)复制成一个指定的目的文件或复制到一个指定的目标目录中
格式: cp 源文件 目标文件
cp –r 递归地复制目录
cp –f 目标文件已经存在的时候不询问直接强制复制
mv命令 :移动文件和目录,重命名文件和目录
mkdir命令:创建目录
touch命令:创建文件
rm命令:删除文件
–r:递归地删除目录
–f:强制删除
rmdir或rm –r命令:删除目录
cat命令: 以只读的方式显示整个文件的内容
head命令浏览文件中的内容:默认显示文件前10行, -n 改变显示的行数
tail命令: 浏览文件中的内容,默认显示文件最后10行,-n 显示从文件末尾算起的n行
more命令: 分页浏览

五、用户、群组和权限


用户及passwd文件:用户信息数据库

a) 第1个字段(列)记录的是这个用户的名字(在创建用户时root用户起的)。
b) 第2个字段(列)如果是x,表示该用户登录Linux系统时必须使用密码;如果为空,则该用户在登录时无须提供密码。
c) 第3个字段(列)记录的是这个用户的uid。
d) 第4个字段(列)记录的是这个用户所属群组的gid。
e) 第5个字段(列)记录的是有关这个用户的注释信息(如全名或通信地址)。
f) 第6个字段(列)记录的是这个用户的家目录的路径。
g) 第7个字段(列)记录的是这个用户登录后,第一个要执行的进程。

shadow文件:用户密码的数据库

a) 第1个字段(列)是用户名。
b) 第2个字段(列)是MD5加密过的密码

群组及group文件:存放群组信息的数据库:

a) 第1个字段是这个群组的名字。
b) 第2个字段中的x表示这个群组在登录Linux系统时必须使用密码。
c) 第3个字段记录的是这个群组的gid。
d) 第4个字段记录的是这个群组里还有哪些群组成员。

useradd添加用户命令:

a) –u:指定用户的UID
b) –g:指定用户所属的群组
c) –d:指定用户的家目录
d) –c:指定用户的备注信息
e) –s:指定用户所用的shell
例如:在系统中新增一个用户user01,属组为police以及uid为600的命令:
useradd –u 600 –g police user01

usermod命令修改用户账户:

a) –u:修改用户的UID
b) –g:修改用户的GID
c) –G:将一个用户加入到指定的群组中
d) –d:修改用户的家目录
e) –c:修改用户的备注信息
f) –s:修改用户所用的shell
-L:将用户的账号锁住
-U:将用户的账号解锁

a) 修改babydog4用户的家目录为/home/babies的命令:
usermod –d /home/babies babydog4
b) 将babydog4这个用户添加到babydog6这个群组中的命令:
usermod –G babydog6 babydog4
c) 将babydog4这个用户的的gid变更为dog群组的命令:
usermod –g dog babydog4

userdel命令:删除用户账号

–r 删除用户的同时删除这个用户的家目录及其邮箱

groupadd命令:群组的管理

groupadd命令的功能:创建一个新的群组账号
–g:指定群组的GID
–n:修改群组的名称

groupdel命令的功能:删除一个群组账号

六、用户、群组及权限的深入讨论


ls –l命令:查看文件上所设定的权限

root用户及文件的安全控制

Linux系统所有用户分3类:所有者(属主)、同组用户(属组)、非同组的其他用户(访问用户)
Linux操作系统在权限:
r:表示read权限,阅读文件或者ls命令列出目录内容的权限
w:表示write权限,编辑文件或者在一个目录中创建和删除文件的权限
x:表示execute权限,执行程序或者使用cd命令切换到这个目录以及使用

chown修改文件的属主

chown 属主:属组 文件
chown :属组 文件
chown 属主 文件
例:修改文件file1的属主为root的命令为:chown root file1

chgrp修改文件的属组:

chgrp 属组 文件
例:修改文件file1的属组为wg的命令为:chgrp wg file1

chmod命令:设定或更改文件或目录上的权限

  • 要设定或更改谁的权限状态:

u:表示所有者(owner)的权限。
g:表示群组(group)的权限。
o:表示既不是owner也不与owner在同一个group的其他用户(other)的权限。
a:表示以上3组,也就是所有用户(all)的权限。

  • 运算符:

+:表示加入权限
-:表示去掉权限
=:表示设定权限

  • 权限:

r:表示read(读)权限。
w:表示write(写)权限。
X:表示execut(执行)权限。

例:
a) 在dog_wolf文件上添加所有者和同组用户的可执行权限的命令:
chmod ug+x dog_wolf
b) 在babydog目录上为其他用户添加写权限的命令:
chmod o+w babydog

数字表示法:使用一组三位数的数字来表示文件或目录上的权限状态:
第1个数字代表所有者(owner)的权限(u)。
第2个数字代表群组(group)的权限(g)。
第3个数字代表其他用户(other)的权限(o)。
4:表示具有读(read)权限。
2:表示具有写(write)权限。
1:表示具有执行(execute)权限。
0:表示没有相应的权限。

例:
使用数字表示法对owner开放/home/dog/babydog目录和其中所有文件的一切权限,
但是对同组用户开放读和执行权限,而对其他用户只开放读权限的命令:
chmod -R 754 /home/dog/babydog

七、正文处理命令及tar命令


cat命令实现文件的纵向合并:

例如:使用cat命令将baby.age、baby.kg和baby.sex这三个文件纵向合并为baby文件的方法:
cat baby.age baby.kg baby.sex >baby

使用cat命令将baby.age文件的内容添加到baby2文件中的方法:
cat baby.age >>baby2

归档文件和归档技术:

tar命令的常用选项:(zxvf常用于解压的参数组合)
z:使用gzip压缩算法来压缩打包后的文件。
x:从tar文件中抽取文件。
v:显示所打包的文件的详细信息,v是verbose的第1个字母。
f:指定归档文件或磁带(也可能是软盘)设备(一般都要选)。
t:列出tar文件中目录的内容。
c:创建一个新的tar文件。
j:使用bzip2压缩算法来压缩打包后的文件。

例如:使用tar命令将arch目录打包成一个名为arch.tar的归档文件的方法(要求显示所有打包的文件和目录):
tar cvf arch.tar arch
例如:使用tar命令显示arch.tar这个归档文件(包)中的所有文件的方法:
tar tf arch.tar
例如:使用tar命令恢复arch.tar中的全部内容的方法:
tar xvf arch.tar -C 路径

文件的压缩和解压缩:

  • gzip命令和gunzip命令:

例如:将文件file1压缩成.gz格式的压缩包应该使用的命令为:
gzip file1 –c > /路径/name.gz
例如:将压缩文件file1.gz解压缩的命令为:
gunzip file1.gz >

  • bzip2命令和bunzip2命令

例如:将文件file1压缩成.bz2格式的压缩包应该使用的命令为:
bzip2 file1 >
例如:将压缩文件file1.bz2解压缩的命令为:
bunzip2 file1.bz2 >

  • tar命令的同时进行压缩和解压缩

例如:使用tar命令将arch目录打包而且同时使用gzip的技术压缩打包后文件的方法(打包后的文件名为arch.tar.gz):
tar cvfz arch.tar.gz arch
例如:使用tar命令将arch目录打包而且同时使用bzip2的技术压缩打包后文件的方法(打包后的文件名为rch.tar.bz2):tar cvfj arch.tar.bz2 arch

八、利用vi编辑器创建和编辑正文文件


vi是一个UNIX和Linux系统内嵌的标准正文(文字)编辑器,用来创建和修改正文文件

vi编辑器的3中基本模式

命令行模式:可执行修改、复制、移动、粘贴和删除正文等命令
编辑模式:可往一个文件中输入正文,使用ESC键返回命令行模式
扩展模式:使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等,在命令行模式中输入冒号(:)

vi编辑器中光标的移动

$:光标移动到当前行的结尾
0:光标移动到当前行的开始

插入模式

a:进入插入模式并在光标之后进行添加。
i:进入插入模式并在光标之前进行插入。
o:进入插入模式并在当前(光标所在)行之下开启新的一行

命令行模式下删除与复制:

dd:删除光标所在那一行
ndd:n为数字,删除光标所在的向下n行,例:20dd表删除20行
yy:复制光标所在那一行
nyy:n为数字,复制光标所在的向下n行

粘贴命令

p:将已复制的数据在光标下一行粘贴
P:将已复制的数据在光标上一行粘贴

复原和重做命令

U:复原前一个操作
ctrl+r:重做上一次操作

扩展模式与文件的存储和退出

:w 将文件存入/写入磁盘
:q 退出vi编辑器(并不存盘)
:wq 将文件存入/写入磁盘并退出vi编辑器
:q! 不保存并退出

快速移动光标在文件中的位置

H 光标移动到屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下那一行的第一个字符

九、系统的初始化和服务


Linux系统引导的顺序 :

BIOS——MBR——init程序
BIOS:硬件与软件之间的接口
GRUB:多重操作系统启动管理器,grub的配置文件为:grub.conf
内核的初始化和init的初始化,init的配置文件为:/etc/inittab

关闭系统及重启系统:

  • 关闭系统的命令:
    systemctl poweroff -i
    halt
    poweroff
    init 0
  • 重启系统的命令:
    shutdown -r now
    reboot
    init 6
    Ctrl+Alt+Delete键

十、系统监控


系统监视和进程控制工具—top:

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

  • top命令 系统状态:
    第一行是任务队列信息
    第二、三行为进程和CPU的信息
    第四五行为内存信息

cpu利用率与load average

cpu利用率:正常情况,cpu利用率<70%

  • cpu负载:
    cpu负载<=1:能正常应付; cpu负载>1:超负荷运转
    多核cpu, load average 应该 <= cpu核数 * 0.7
    cpu利用率和cpu负载过高,都是不好的现象,但也可能出现,低利用率,高负载的情况

free命令:显示内存的使用状态

buffer和cache:buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。
free表示的是当前完全没有被程序使用的内存;而cache在有需要时,是可以被释放出来以供其它进程使用。

系统中进程的监控—ps:显示当前进程的状态

Ps –aux 显示所有的与用户相关的完整信息
kill命令终止进程
kill -9命令杀死进程

pgrep命令的功能:通过名称或其他属性查找进程
如:查找名为firefox的进程的命令为:pgrep firefox

pkill命令:通过名称或其他属性发信号给进程
如:杀死名为firefox的进程的命令为:pkill firefox

结合效果:ps -aux | grep 进程号
ps -ef | grep ssh # 过滤进程

十一、硬盘分区、格式化及文件系统的管理一


硬件设备与文件名的对应关系:

在Linux系统中,每个设备都被当作一个文件来对待。
IDE硬盘: /dev/hd[a-a]
SCSI硬盘: /dev/sd[a-p]
U盘: /dev/sd[a-p]
CDROM: /dev/sr0

硬盘的结构及硬盘分区:进行硬盘分区

更容易管理和控制系统,因为相关的文件和目录都放在一个分区中。
系统效率更高。
可以限制用户使用硬盘的份额(磁盘空间的大小)。
更容易备份和恢复。

硬盘的逻辑结构:

划分成块、磁道、磁柱和分区
块:块是盘片上寻址(访问)的最小单位,一个块可以存储一定字节的数据
磁道:磁道是由一系列头尾相连的块组成的圆圈
磁柱:磁柱是由一叠磁道,由在相同半径上每个盘面的磁道所组成
分区:分区是由一组相邻的磁柱所组成

Linux系统中硬盘的分区:

硬盘的分区可以分为主分区、扩展分区和逻辑分区。
在一个硬盘上最多可以划分出4个主分区。
Linux内核在每个硬盘上可以最多支持:

  • a) 在SCSI硬盘上划分15个分区(优势好)。
  • b) 在IDE硬盘上划分63个分区(Partitions)。

fdisk和partprobe命令来管理硬盘分区:

  • fdisk命令:创建磁盘分区
    d:删除一个(已经存在的)分区,其中d是delete的第1个字母。
    l:列出(已经存在的)分区的类型,其中l是list的第1个字母。
    m:列出fdisk中使用的所有命令,其中m是menu的第1个字母。
    n:添加一个新的分区,其中n是new的第1个字母。
    p:列出分区表的内容,其中p是print的第1个字母。
    q:退出fdisk,但是不存储所做的变化,其中q是quit的第1个字母。
    t:改变分区系统的id,其中t是title的第1个字母。
    w:退出fdisk并存储所做的变化,其中w是write的第1个字母。

partprobe命令:重新初始化内存中内核的分区表

创建文件系统

  • 格式化的定义:将分区中的硬盘空间划分成大小相等的一些数据块(Blocks),以及设定这个分区中有多少个i节点可以使用。
  • 文件系统的定义:是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。
  • 常用的文件系统类型:
    ext2:Linux系统中标准的文件系统
    ext3:一种日志式文件系统
    ext4:一种针对ext3系统的扩展日志式文件系统
    lvm:逻辑盘卷管理
    iso9660:目前唯一通用的光盘文件系统
  • mkfs命令:格式化磁盘
    例如,将分区/dev/sdb1格式化为ext4文件系统的命令为:
    mkfs.ext4 /dev/sdb1

为一个分区设定label(分区名):

  • e2label命令:设定或查看一个设备的label名称
    a) 例如:查看/dev/sdb1分区的label的命令为:
    e2label /dev/sdb1
    b) 例如:将/dev/sdb1分区的label设定为wg的命令:
    e2label /dev/sdb1 wg

十二、硬盘分区、格式化及文件系统的管理二


文件系统的挂载与卸载:

定义:挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上

mount命令:实现文件系统的挂载
例如:将/dev/sdb1分区挂载到/wg目录上的命令:
mount /dev/sdb1 /wg

umount命令:实现文件系统的卸载
例如:卸载/wg上的文件系统的命令:
umount /wg

虚拟内存的概念以及设置与管理:

虚拟内存的定义:虚拟内存就是一块硬盘空间被当做内存使用,也被称为交换分区(swap),Linux交换分区的类型为:0x82

mkswap命令:设置交换分区
例如:将分区/dev/sdb2设置为交换分区的命令:mkswap /dev/sdb2

swapon –a命令:启动全部的交换分区
例如:启用交换分区/dev/sdb2的命令:swapon /dev/sdb2

swapon –s命令:列出当前正在使用的所有系统交换分区的状态

i节点:

i节点的定义:i节点实际上是一个数据结构,它存放了有关一个普通文件、目录或其他文件系统对象的基本信息

符号(软)链接:

定义:符号链接是指向另一个文件的一个文件

ln命令:创建软连接
例如:为wolf/dog.wolf.baby文件建立一个dog_ wolf.boy符号链接并放在bodydog目录中的命令:
ln –s wolf/dog.wolf.baby bodydog/dog_ wolf.boy

硬链接:

定义:一个硬链接(hard link)是一个文件名与一个i节点之间的对应关系,也可以认为一个硬链接是在所对应的文件上添加了一个额外的路径名

ln命令创建硬连接
为wolf/wolf.dog文件在backup目录中建立一个名为wolf.dog2的硬链接命令:
ln wolf/wolf.dog backup/wolf.dog2

Linux系统中的文件类型:

常见的文件类型:
-:普通文件(regular file),也称为正规文件。
d:目录(directory)。
l:符号(软)链接。
b:块特殊文件(b是block的第1个字符),一般指块设备,如硬盘。
c:字符特殊文件(c是character的第1个字符),一般指字符设备,如键盘。

检查磁盘空间:

df命令:显示文件系统中磁盘使用和空闲区的数量
-a 显示所有磁盘
-h 单位转换
du命令:显示目录和文件的大小
ah同上

十三、Linux网络原理及基础设置


ifconfig命令:显示所有正在启动的网卡的详细信息或设定系统中网卡的IP

如:修改eth0网卡的IP地址为172.18.48.56和子网掩码255.255.255.128的命令:
ifconfig eth0 172.18.48.56 netmask 255.255.255.128

ifup和ifdown命令:启动和停止网卡:

ifup命令:启动系统上指定的网卡
如:启动eth0网卡的命令:ifup eth0

ifdown命令:停止系统上指定的网卡
停用eth0网卡的命令:ifdown eth0

网络配置文件:

配置文件存放在/etc/sysconfig/network-scripts目录,每个网卡对应的配置文件的文件名以ifcfg-开始

网络配置的定义:
修改网卡所对应的网络配置文件,可以通过使用文字编辑器(vi)直接编辑网络配置文件来重新配置网络

十四、软件包的管理


RPM的定义:RPM就是Red Hat Package Manger(红帽软件包管理工具)

rpm的文件名分为5部分:

第1部分是name,表示这个rpm软件包的名称;
第2部分是version,表示这个rpm软件包的版本编号;
第3部分是release,表示这个rpm软件包的版本发布次数(修正号码);
第4部分是architectures,表示这个rpm软件包适用于哪些平台;
最后一部分是rpm,表示这个rpm软件包的文件扩展名。

rpm软件安装与移除工作中经常使用的选项:

–i:安装(Install)软件。
–U:升级(Upgrade)旧版本的软件。
–e:移除/删除(Erase)软件。
–v:显示详细的处理信息。
–h:显示安装进度。卸载不能用

查看RPM软件包中的信息:

rpm –qa:显示目前操作系统上安装的全部软件包,其中q是query(查询)的第1个字母,a是all(全部)的第1个字母

rpm –qf 文件名:显示这个文件是由哪个软件包安装的,f是file(文件)的第1个字母。
如:列出安装/bin/tar文件的软件包的命令为:rpm –qf /bin/tar

rpm –qi 软件包名:显示这个软件包的信息,i是information(信息)的第1个字母
如:列出tar-1.14-10.RHEL4这个软件包的详细信息的命令:rpm –qi tar-1.14-10.RHEL4

rpm –ql 软件包名:列出这个软件包中所包含的全部文件,其中l是list的第1个字母。
如:列出tar-1.14-10.RHEL4这个软件包中所包含的全部文件的命令:rpm –ql tar p数据包

RPM包的属性依赖性问题:

定义:所谓的RPM软件包的属性依赖性问题,即这个软件包的安装依赖于其他软件包的安装

十五、yum管理RPM包


rpm 只能安装已经下载到本地机器上的rpm 包. yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm 工具所不具备的。

yum:解决RPM的依赖关系的问题,方便使用者进行软件的安装、升级等等工作

光盘挂载:

mount /dev/sr0 挂载点或者mount /dev/cdrom 挂载点

镜像文件的挂载:

mount -o loop -t iso9660 镜像文件 挂载点
-o loop:用来把一个文件当成硬盘分区挂接上系统

yum的配置:

直接配置/etc目录下的yum.conf文件
在/etc/yum.repos.d目录下增加.repo文件

本地yum配置:

mount /dev/cdrom /mnt # 挂载光盘到/mnt目录
cd /etc/yum.repos.d/
ls
rhel-source.repo
cp rhel-source.repo rhel.repo #拷贝一份配置文件

  • 编辑配置文件如下:
    vim rhel.repo
    [rhel-local] #模块名称,须修改不能与其他.repo文件中的重名
    name=Red Hat Enterprise Linux 6 local repo # 名称随便起
    baseurl=file:///mnt #指定rpm仓库的位置
    enabled=1 #1开启该配置,0为关闭
    gpgcheck=1 #1为校对软件

yum install vsftpd httpd # 安装vsftpd及httpd服务

用vsftpd搭建yum源服务器:

Vsftpd默认的配置文件是允许匿名访问
umount /dev/cdrom #卸载光盘
mount /dev/cdrom /var/ftp/pub/ #挂载光盘到vsftpd的公众目录
service vsftpd restart # 重启vsftpd服务

  • 必须关闭防火墙和selinux
    Service iptables stop
    Getenforce :查看selinux状态
    临时关闭:不用重启:setenforce 0
    0 permissive允许 1 enforcing 执行
  • 配置客户机:
    [root@localhost ~]# cd /etc/yum.repos.d/
    [root@localhost yum.repos.d]# ls #rhel.repo是按照本地yum配置生成的
    rhel.repo rhel-source.repo
    [root@localhost yum.repos.d]# cat rhel.repo #修改为以下内容
    [rhel-ftp]
    name=Red Hat Enterprise Linux 6
    baseurl=​​ftp://192.168.8.42/pub​​ #指定yum源地址
    enabled=1
    gpgcheck=1
    测试:
    [root@localhost ~]# yum install bind #安装DNS服务

yum安装软件:

yum –y install 软件名

用yum删除软件:

yum –y remove 软件名

用yum安装组件

yum –y groupinstall 组件名

用yum删除组件

yum –y groupremove 组件名

清除yum缓存:

yum clean all

用yum查找软件包

yum search

十六、Samba服务


samba是一个网络服务器,用于Linux和Windows之间共享文件。

samba服务的启动、停止、重启

service smb start|stop|restart

samba的主配置文件:/etc/samba/smb.conf

comment = ......   设置共享注译
path = 设置共享目录的物理路径
valid users = @组名,用户名 设置允许哪些合法组或用户访问
public = yes|no 设置共享资源是否能给游客帐号访问
browseable = yes|no 设置该共享为隐藏共享
writable = yes|no

注意:
1 客户端要对目录是否有权限,必须samba软件放权+系统放权
2 每个用户的访问方式是:\服务端ip\用户名,默认访问自己的家目录(该用户对该目录有w权限,且samba对用户的家目录开启了writeable=yes的权限)
3 对于共享的目录,是所有人打开目录进行操作的,而不是一个打印机,所以printable一定要设置no4 writeable=yes代表对所有用户放行了写权限,write list=user1,user2无效,因为放行的所有用户中已然包含user1和user25 writeable=no,write list=user1,user2代表所有人都没有写权限,唯独user1有

windows客户端的访问方式:

\172.24.0.2\common

Linux客户端的访问方式:

smbclient //172.24.0.2/common -U user02

十七、nginx服务:


源码安装:

# 源码安装:
yum install gcc-* glibc-* openssl openssl-devel pcre pcre-devel zlib zlib-devel -y # 安装c++环境
ls
tar xvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
ls
./configure
./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --without-http_rewrite_module #--without-http_rewrite_module代表不使用重写功能,即不会引用pcre库,如果安装过程中出现pcre相关问题,可以指定该参数
pcre: 用来作地址重写的功能。zlib:nginx 的gzip模块,传输数据打包,省流量(但消耗资源)。openssl:提供ssl加密协议。
代理:A访问B,A把自己的请求让C代理,C去访问B
正向代理:A明确地知道自己的代理C的存在,A明确地指定自己的代理地址是C,让C去访问B,拿到结果再给A,通常用来FQ
反向代理:用户请求发给nginx后,由nginx负载给代理的机器,拿到结果,再由nginx返回给客户端(如此,nginx便把一堆自己代理的机器隐藏到后端,外界访问的就是nginx)
透明代理:用户不知道代理的存在,用户->交换机->路由器->代理服务器,代理服务器可以控制用户的上网行为,比如限制用户可以访问和不可以访问的网站,多用于用户行为管理LB:http://nginx.org/en/docs/http/load_balancing.html

十八、nfs服务


定义:

NFS(网络文件系统)通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据。
NFS在文件传送或信息传送过程中依赖于RPC协议

安装:
yum install rpcbind nfs-utils -y
配置:

配置文件为 /etc/exports
配置文件不存在时,用vim手动建立,再在文件里写入配置

/etc/exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
输出目录:指NFS系统中需要共享给客户机使用的目录
客户端:指网络中可以访问这个NFS输出目录的计算机。
**常用的指定方式:**
指定ip地址的主机:192.168.0.200
指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn

选项:设置输出目录的访问权限、用户映射等

访问权限选项:
- 设置输出目录只读:ro
- 设置输出目录读写:rw

用户映射选项:

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项:

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

配置流程:

修改配置:
cat /etc/exports
/share 192.168.31.0/24(rw,sync,fsid=0)

开权限:chmod -R o+w /share

为rpcbind和nfs做开机启动:
systemctl enable nfs-server.service
systemctl enable rpcbind.service

启动(必须先启动rpcbind服务):
systemctl start rpcbind.service
systemctl start nfs-server.service

确认nfs服务器启动成功:
rpcinfo
exportfs
/share 192.168.31.0/24

查看信息:
查看自己共享的服务: showmount -e
显示已经与客户端连接上的目录信息:showmount -a

案例展示:

=====================客户端
yum install rpcbind nfs-utils -y
systemctl enable rpcbind.service && systemctl start rpcbind.service
showmount -e NFS服务器IP #检查 NFS 服务器端是否有目录共享
mount -t nfs 192.168.31.106:/share /var/www/html/ # 将其它系统的共享文件挂载到当前系统

=====================测试
基于nginx的负载均衡配置,打开后端被代理服务的access.log日志,
tail -f access.log来观察访问,
访问LB刷新页面发现内容保持一致,
但是每台被代理的机器的access.log日志都有新的内容进来

十九、计划任务crond服务


计划任务:到预定时间就会自动执行的任务

crond服务相关的软件包:

rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64

计划任务分为两类:系统级和用户级:

系统的计划文件存放在/etc/crontab路径。
用户的计划文件放在/var/spool/cron/用户名。

查看全局计划任务: cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

run-parts命令:

可执行一个目录下所有的可执行文件,目录下文件必须有执行权限。
run-parts /test

crontab -u 命令:

通过命令查看用户tom的计划任务。
crontab -u tom -l

从文件中查看用户tom的计划任务
cat /var/spool/cron/tom

语法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

crontab任务配置基本格式:

*  *  *  *  *  command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
参数: 
-e  编辑该用户的计时器设置。
-l  列出该用户的计时器设置。
-r  删除该用户的计时器设置。
-u<用户名称>  指定要设定计时器的用户名称。
1 查看计划任务的执行:tail -f /var/log/cron
2 写计划任务时,命令必须加上绝对路径,否则会出现这种情况:
从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,
比如* * * * *

crontab例子:

(第二集)Linux基础_群组

常见的时间格式可以用如@yearly的方式代替:

@reboot 代表的意思Run once, at startup.
@yearly 代表的意思Run once a year, "0 0 1 1 *".
@annually 与@yearly相同意思
@monthly 代表的意思Run once a month, "0 0 1 * *".
@weekly 代表的意思Run once a week, "0 0 * * 0".
@daily 代表的意思Run once a day, "0 0 * * *".
@midnight 与@daily的意思相同
@hourly 代表的意思Run once an hour, "0 * * * *".

系统自带的计划任务:

hourly、daily、weekly、mouthly #默认配置文件为/etc/anacrontab

将需要执行的脚本放到相应的目录下即可,目录分别为:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/ect/cron.mouthly

查看cron服务是否起作用:

cat /var/log/cron #查看定时任务是否准时调用
tail -f /var/spool/mail/用户名 # 查看普通用户的计划任务执行情况

  • 注意:
    cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。
    如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了.
    crontab的用户手册中推荐每一个命令使用绝对路径,例如调用rm命令时写作:/bin/rm,
    这是为了防止由于每一个用户的PATH环境变量不同而导致命令无法找到的错误

crontab不执行的问题汇总:

脚本的原因:不能执行的概率占到 70%以上。
执行环境问题:在代码最前面执行 source /home/user/.bash_profile。
系统时间不正确:解决方案:date -s **
脚本是否有可执行权限:必须保证执行脚本的用户有执行改文件的权限。
crontab 守护进程死掉:解决方案:重启该进程。

脚本都正确,但不执行:
crontab -u root /var/spool/cron/root
service crond restart # 重启服务

crond没有启动

脚本编码问题:用vi编辑器新建新shell脚本,输入内容后保存

  • tar czf /tmp/​​date '+%Y'​​​ /etc
    该计划任务中命令的执行流程是crond->tar命令,
    而crond在执行tar命令时,无法识别通配符%的意思(shell能识别),
    所以该命令无法正常执行

改正结果:* * * * * tar czf /tmp/​​date '+\%Y'​​​ /etc
通常都会把要执行的操作放到文件中,然后/bin/bash a.sh去执行

  • /bin/bash a.sh
    这样的执行流程就变成了crond->bashshell->a.sh,这样a.sh内即便是写%号,也能被识别出来。

二十、linux系统启动流程


打开计算机电源,从主板的BIOS读取存储的程序。

从选择的存储设备中读取起始的512 bytes,512 bytes叫做主引导记录MBR。MBR告诉电脑从某一个分区来装载引导加载程序(boot loader)

boot loader会加载kernel,kernel充当软件和硬件的接口,操作系统上的任何操作都要通过kernel传达给硬件。

kernel会启动一个init进程,交接给init来管理。

nit会运行一系列的初始脚本,最后输入用户名(比如说vamei)和密码,DONE!

总结
BIOS -> MBR -> boot loader -> kernel -> init process -> login