Linux基础之常用命令练习-init,who,date,cal,man,clear,passwd,su,whoami,mkdir,touch,rm,cp,mv,head,tail,more,less,echo
开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语
使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符
使用命令退出虚拟终端2上登录的用户
使用快捷键切换到虚拟终端5,使用管理员身份登录,查看系统提示符
使用命令退出虚拟终端5上登录的用户
切回图形界面,右单击桌面打开终端,输入关闭系统的命令
查看哪些用户在系统上工作
修改当前时间为2018年8月26号11:28
查看2015年10月份日历
使用两种方法查看ls命令的使用说明
清除屏幕
使用“useradd tom”命令新建tom用户,为tom用户设置密码“123”
切换当前用户为tom
查看当前登陆Linux系统所使用的用户名
使用“useradd tom”命令新建tom用户,为tom用户设置密码“123”
切换当前用户为tom
查看当前登陆Linux系统所使用的用户名
开启Linux操作系统,要求以root用户登录GNOME图形界面
右击桌面打开终端,使用“useradd lucy”命令创建lucy用户
使用鼠标点击的方法进入根目录
点击进入root用户的家目录
点击进入lucy用户的家目录
点击进入用来存放常用的可执行文件的目录
点击进入用来存放系统的可执行文件的目录
点击进入设备文件目录
点击进入配置文件目录
创建目录wg
使用绝对路径的方法在wg目录下新建文件a.txt
进入wg目录
使用相对路径的方法在当前目录下新建wg01目录和b.txt文件
以长列表格式列出当前目录下的内容
删除空目录wg01
进入上一级工作目录
强制删除非空目录wg
复制/etc/passwd到当前目录,名为file1
PS.更新,复制/etc/passwd到当前目录,名为file2
不停的以只读的方式查看file1文件的内容
查看file1文件的前3行内容
查看file1文件的后2行内容
以百分比的方式分页查看file1文件的内容
以上下翻页的方法分页查看file1文件的内容
创建如下目录结构
sh-3.2# tree /FtpServer/
/FtpServer/
├── bin
│ ├── register.py
│ └── start.py
├── conf
│ └── settings.py
├── core
│ └── server.py
├── db
│ └── user.db
├── lib
│ └── common.py
└── log
└── access.log
1:切换到路径/tmp下,以追加的方式往start.py内写入内容
2:查看当前所在的路径
3:切换到log目录下,新建目录access,然后把access.log移动到该目录下。
4:切换到core目录下,然后在该路径下新建auth.py文件
5. 开启两个终端,一个终端往access.log文件中追加内容,然后在另外一个终端动态查看access.log新增的内容。
6. 关闭上述的终端,然后以覆盖的方式往access.log中写入内容
7: 删除/FtpServer目录
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2017-05/144223p2.htm
Linux基础之常用命令练习-useradd(mod,del),groupadd(mod,del),chmod,chown
作业一:
1) 新建用户natasha,uid为1000,gid为555,备注信息为“master”
2) 修改natasha用户的家目录为/Natasha
3) 查看用户信息配置文件的最后一行
4) 为natasha用户设置密码“123”
5) 查看用户密码配置文件的最后一行
6) 将natasha用户账户锁定
7) 将natasha用户账户解锁
8) 新建组police,gid为999
9) 查看组配置文件的最后一行
10) 将natasha用户加入police组
11) 修改police组的组名为jingcha
12) 删除natasha用户,连家目录和邮箱一起删除
13) 删除jingcha组
作业二:
1) 在用户的主目录下创建目录test,进入test创建空文件file1
2) 以长格式形式显示文件信息,注意文件的权限和所属用户和组
3) 为文件file1设置权限,使其他用户可以对此文件进行写操作。
4) 查看设置结果,
5) 取消同组用户对文件file1的读取权限,并查看设置结果。
6) 用数字表示法为文件file设置权限,所有者可读、可写、可执行,所属组用户和其他用户只具有读和执行的权限。设置完成后查看设置结果。
7) 用数字形式更改文件file1的权限,使所有者只能读取此文件。其他任何用户都没有权限。查看设置结果。
8) 回到上层目录,查看test的权限
9) 为其他用户添加对此目录的写权限
作业三:
以操作文件的方式,新建一个用户alex
作业四:
1) 新建目录/test/dir,属主为tom,数组为group1,/test目录的权限为777
2) 新建用户jack,切换到jack用户下,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的others权限)
3)将jack加入group1组,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的group权限)
4)切换到tom用户,验证tom用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的user权限)
5)在dir目录内新建文件tom.txt,属主为tom,属组为group1,/test目录的权限为777
6)新建用户rose,切换到rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的others权限来配合验证过程)
7)将rose加入group1组,在rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的group1权限来配合验证过程)
8)切换到tom用户,验证tom用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的user权限来配合验证过程)
参考资料
http://www.linuxidc.com/Linux/2016-03/129089p4.htm
Linux基础之常用命令练习-文件管理:cat,tar,gzip,vim,ln
一. 文件合并
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
1.命令格式:
cat [选项] [文件]…
2.命令功能:
cat主要有三大功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
3.命令参数:
-A, –show-all 等价于 -vET
-b, –number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, –show-ends 在每行结束处显示 $
-n, –number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, –squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, –show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, –show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
二. 文件打包
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
1.命令格式:
tar[必要参数][选择参数][文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
3.命令参数:
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
–help 显示帮助信息
–version 显示版本信息
三. 文件压缩
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
1.命令格式:
gzip[参数][文件或者目录]
2.命令功能:
gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出”.gz”的扩展名。
3.命令参数:
-a或–ascii 使用ASCII文字模式。
-c或–stdout或–to-stdout 把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d或–decompress或—-uncompress 解开压缩文件。
-f或–force 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-h或–help 在线帮助。
-l或–list 列出压缩文件的相关信息。
-L或–license 显示版本与版权信息。
-n或–no-name 压缩文件时,不保存原来的文件名称及时间戳记。
-N或–name 压缩文件时,保存原来的文件名称及时间戳记。
-q或–quiet 不显示警告信息。
-r或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串>或—-suffix<压缩字尾字符串> 更改压缩字尾字符串。
-t或–test 测试压缩文件是否正确无误。
-v或–verbose 显示指令执行过程。
-V或–version 显示版本信息。
-num 用指定的数字num调整压缩的速度,-1或–fast表示最快压缩方法(低压缩比),-9或–best表示最慢压缩方法(高压缩比)。系统缺省值为6。
四. Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。 连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:
- 一般模式:
以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。 - 编辑模式:
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。 - 指令列命令模式:
在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!
简单的说,我们可以将这三个模式想成底下的图标来表示:
vim 键盘图:
vim命令合集 不保证准确性,仅供参考,验证。
五. i节点,软/硬链接
1. i节点实际上是一个数据结构,它存放了有关一个普通文件、目录或其他文件系统对象的基本信息;
2. Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
语法
ln [参数][源文件或目录][目标文件或目录]
其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[–help] [–version] [–]
命令功能 :
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软链接:
- 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 2.软链接可以 跨文件系统 ,硬链接不可以
- 3.软链接可以对一个不存在的文件名进行链接
- 4.软链接可以对目录进行链接
硬链接:
- 1.硬链接,以文件副本的形式存在。但不占用实际空间。
- 2.不允许给目录创建硬链接
- 3.硬链接只有在同一个文件系统中才能创建
命令参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
- -S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”
- -V “-V<备份方式>”或”–version-control=<备份方式>”
- –help 显示帮助信息
- –version 显示版本信息
实例
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
输出:
[root@localhost test]# ll
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
输出:
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log
Linux基础之常用命令练习-fdisk,mkfs,mlabel,mount,umount,mkswap,swapon,dd,top,free,ps,kill,rpm,yum,make
一. 硬盘分区、格式化及文件系统的管理
1. 在Linux系统中,一切皆文件。每个设备都被当作一个文件来对待。
常见的存储设备在Linux系统中的文件名如下表所示:
2. 对硬盘进行分区有以下优点:
a. 更容易管理和控制系统,因为相关的文件和目录都放在一个分区中;
b. 系统效率更高;
c. 可以限制用户使用硬盘的份额(磁盘空间的大小);
d. 更容易备份和恢复。
3. Linux系统中硬盘的分区:
a. 硬盘的分区有主分区,扩展分区和逻辑分区三种;
b. 一块硬盘最多可以分4个主分区;
c. Linux操作系统的内核支持每个硬盘上的分区数量还是有一定限制的,视硬盘类型而不同。
4. 使用fdisk和partprobe命令来管理硬盘分区:
a. fdisk
语法
fdisk [必要参数][选择参数]
必要参数:
- -l 列出素所有分区表
- -u 与”-l”搭配使用,显示分区数目
选择参数:
- -s 指定分区
- -v 版本信息
菜单操作说明
- m :显示菜单和帮助信息
- a :活动分区标记/引导分区
- d :删除分区
- l :显示分区类型
- n :新建分区
- p :显示分区信息
- q :退出不保存
- t :设置分区号
- v :进行分区检查
- w :保存修改
- x :扩展应用,高级功能
b. partprobe,重新初始化内存中内核的分区表。
5. 创建文件系统:
a. 所谓的格式化就是将分区中的硬盘空间划分成大小相等的一些数据块(Blocks),以及设定这个分区中有多少个i节点可以使用等;
b. 文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法;
c. 常用的文件系统类型:ext2:Linux系统中标准的文件系统;ext3:一种日志式文件系统;ext4:一种针对ext3系统的扩展日志式文件系统;lvm:逻辑盘卷管理 ;iso9660:目前唯一通用的光盘文件系统;
d. mkfs命令用于在特定的分区上建立 linux 文件系统:
使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
Linux mkfs命令用于在特定的分区上建立 linux 文件系统
参数 :
- device : 预备检查的硬盘分区,例如:/dev/sda1
- -V : 详细显示模式
- -t : 给定档案系统的型式,Linux 的预设值为 ext2
- -c : 在制做档案系统前,检查该partition 是否有坏轨
- -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
- block : 给定 block 的大小
例子:将sda6分区格式化为ext3格式:a. mfks -t ext3 /dev/sda6;b. mfks.ext3 /dev/sda6
e. mlabel,设定或查看一个设备的label名称。如果磁盘上设定过标签,mlabel 会将他显示给使用者。如果没有指定新标签并且没有指定 c 或 s 选项,mlabel 会提示使用者输入新的标签。如果直接按下 Enter ,就会将原本的标签删除。
语法
mlabel [-vcs] drive:[new_label]
参数说明:
- -v 更多的讯息。
- -c 清除原有的标签,不出现提示讯息。
- -s 显示目前的标签,不出现提示讯息。
实例
将 A 盘的标签更改为 newlabel。
mlabel a:newlabel
6. 文件系统的挂载与卸载(mount,umount):
挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上
语法
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
实例
将 /dev/hda1 挂在 /mnt 之下。
#mount /dev/hda1 /mnt
将 /dev/hda1 用唯读模式挂在 /mnt 之下。
#mount -o ro /dev/hda1 /mnt
将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
#mount -o loop /tmp/image.iso /mnt/cdrom
语法
umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数:
- -a 卸除/etc/mtab中记录的所有文件系统。
- -h 显示帮助。
- -n 卸除时不要将信息存入/etc/mtab文件中。
- -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
- -t<文件系统类型> 仅卸除选项中所指定的文件系统。
- -v 执行时显示详细的信息。
- -V 显示版本信息。
- [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
实例
下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:
# umount -v /dev/sda1 通过设备名卸载
/dev/sda1 umounted
# umount -v /mnt/mymount/ 通过挂载点卸载
/tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
# umount -v /mnt/mymount/
umount: /mnt/mymount: device is busy
umount: /mnt/mymount: device is busy
7. 虚拟内存的概念以及设置与管理:
a. 所谓虚拟内存就是一块硬盘空间被当做内存使用,也被称为交换分区(swap);
b. Linux交换分区的类型为:0x82;
c. mkswap,将磁盘分区或文件设为Linux的交换区
语法
mkswap [-cf][-v0][-v1][设备名称或文件][交换区大小]
参数:
- -c 建立交换区前,先检查是否有损坏的区块。
- -f 在SPARC电脑上建立交换区时,要加上此参数。
- -v0 建立旧式交换区,此为预设值。
- -v1 建立新式交换区。
- [交换区大小] 指定交换区的大小,单位为1024字节。
d. swapon,激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存
语法
/sbin/swapon -a [-v]
/sbin/swapon [-v] [-p priority] specialfile ...
/sbin/swapon [-s]
参数说明:
- -h 请帮帮我
- -V 显示版本讯息
- -s 显示简短的装置讯息
- -a 自动启动所有SWAP装置
- -p 设定优先权,你可以在0到32767中间选一个数字给他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中间一个数字),然后你就可以很方便的直接使用 swapon -a 来启动他们,而且有优先权设定。
swapon 是开启swap.
相对的,便有一个关闭swap的指令,swapoff。
练习项目:
1. 开启Linux系统前添加一块大小为20G的SCSI硬盘
2. 开启系统,右击桌面,打开终端
3. 为新加的硬盘分区,一个主分区大小为10G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G
4. 格式化主分区为ext3系统
5. 将逻辑分区设置为交换分区
6. 启用上一步的交换分区
7. 查看交换分区的状态
8. 使用”dd“命令来测试硬盘读写速度
dd命令用于读取、转换并输出数据。dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
参数说明:
- if=文件名:输入文件名,缺省为标准输入。即指定源文件。
- of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
- ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。 - cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
- skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
- seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
- count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
- conv=<关键字>,关键字可以有以下11种:–help:显示帮助信息
- conversion:用指定的参数转换文件。
- ascii:转换ebcdic为ascii
- ebcdic:转换ascii为ebcdic
- ibm:转换ascii为alternate ebcdic
- block:把每一行转换为长度为cbs,不足部分用空格填充
- unblock:使每一行的长度都为cbs,不足部分用空格填充
- lcase:把大写字符转换为小写字符
- ucase:把小写字符转换为大写字符
- swab:交换输入的每对字节
- noerror:出错时不停止
- notrunc:不截短输出文件
- sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
- –version:显示版本信息
二. 系统监控
1. top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
2. free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法
free [-bkmotV][-s <间隔秒数>]
参数说明:
- -b 以Byte为单位显示内存使用情况。
- -k 以KB为单位显示内存使用情况。
- -m 以MB为单位显示内存使用情况。
- -o 不显示缓冲区调节列。
- -s<间隔秒数> 持续观察内存使用状况。
- -t 显示内存总和列。
- -V 显示版本信息。
3. 系统中进程的监控与管理—ps,pstree,kill,pkill,pgrep
a. 进程是程序的一次动态执行;
b. 守护进程是在后台运行并提供系统服务的一些进程;
c. 当一个进程创建另一个进程时,第1个进程被称为新进程的父进程,而新进程被称为子进程;
d. ps命令用于显示当前进程 (process) 的状态
语法
ps [options] [--help]
参数:
- ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
- -A 列出所有的行程
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的行程
- au(x) 输出格式 :
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
e. pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程
语法
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
或
pstree -V
参数说明:
- -a 显示该行程的完整指令及参数, 如果是被记忆体置换出去的行程则会加上括号
- -c 如果有重覆的行程名, 则分开列出(预设值是会在前面加上 *)
f. kill命令用于删除执行中的程序或工作,kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看
语法
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
- -l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
g. pkill,通过名称或其他属性发信号给进程,例如:杀死名为firefox的进程的命令为:pkill firefox;
h. pgrep,通过名称或其他属性查找进程,例如:查找名为firefox的进程的命令为:pgrep firefox。
三. 软件包管理
1. 使用rpm安装及移除软件
a. RPM就是Red Hat Package Manger(红帽软件包管理工具)的缩写;
b. rpm的文件名分为5部分;name(软件包名称)-version(版本编号)-release(发布次数,修正号码)-architectures(适用平台)-rpm(文件格式,有时会隐藏掉)
语法
rpm [-acdhilqRsv][-b<完成阶段><套间档>+][-e<套件挡>][-f<文件>+][-i<套件档>][-p<套件档>+][-U<套件档>][-vv][--addsign<套件档>+][--allfiles][--allmatches][--badreloc][--buildroot<根目录>][--changelog][--checksig<套件档>+][--clean][--dbpath<数据库目录>][--dump][--excludedocs][--excludepath<排除目录>][--force][--ftpproxy<主机名称或IP地址>][--ftpport<通信端口>][--help][--httpproxy<主机名称或IP地址>][--httpport<通信端口>][--ignorearch][--ignoreos][--ignoresize][--includedocs][--initdb][justdb][--nobulid][--nodeps][--nofiles][--nogpg][--nomd5][--nopgp][--noorder][--noscripts][--notriggers][--oldpackage][--percent][--pipe<执行指令>][--prefix<目的目录>][--provides][--queryformat<档头格式>][--querytags][--rcfile<配置档>][--rebulid<套件档>][--rebuliddb][--recompile<套件档>][--relocate<原目录>=<新目录>][--replacefiles][--replacepkgs][--requires][--resign<套件档>+][--rmsource][--rmsource<文件>][--root<根目录>][--scripts][--setperms][--setugids][--short-circuit][--sign][--target=<安装平台>+][--test][--timecheck<检查秒数>][--triggeredby<套件档>][--triggers][--verify][--version][--whatprovides<功能特性>][--whatrequires<功能特性>]
参数说明:
- -a 查询所有套件。
- -b<完成阶段><套件档>+或-t <完成阶段><套件档>+ 设置包装套件的完成阶段,并指定套件档的文件名称。
- -c 只列出组态配置文件,本参数需配合”-l”参数使用。
- -d 只列出文本文件,本参数需配合”-l”参数使用。
- -e<套件档>或–erase<套件档> 删除指定的套件。
- -f<文件>+ 查询拥有指定文件的套件。
- -h或–hash 套件安装时列出标记。
- -i 显示套件的相关信息。
- -i<套件档>或–install<套件档> 安装指定的套件档。
- -l 显示套件的文件列表。
- -p<套件档>+ 查询指定的RPM套件档。
- -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
- -R 显示套件的关联性信息。
- -s 显示文件状态,本参数需配合”-l”参数使用。
- -U<套件档>或–upgrade<套件档> 升级指定的套件档。
- -v 显示指令执行过程。
- -vv 详细显示指令执行过程,便于排错。
- -addsign<套件档>+ 在指定的套件里加上新的签名认证。
- –allfiles 安装所有文件。
- –allmatches 删除符合指定的套件所包含的文件。
- –badreloc 发生错误时,重新配置文件。
- –buildroot<根目录> 设置产生套件时,欲当作根目录的目录。
- –changelog 显示套件的更改记录。
- –checksig<套件档>+ 检验该套件的签名认证。
- –clean 完成套件的包装后,删除包装过程中所建立的目录。
- –dbpath<数据库目录> 设置欲存放RPM数据库的目录。
- –dump 显示每个文件的验证信息。本参数需配合”-l”参数使用。
- –excludedocs 安装套件时,不要安装文件。
- –excludepath<排除目录> 忽略在指定目录里的所有文件。
- –force 强行置换套件或文件。
- –ftpproxy<主机名称或IP地址> 指定FTP代理服务器。
- –ftpport<通信端口> 设置FTP服务器或代理服务器使用的通信端口。
- –help 在线帮助。
- –httpproxy<主机名称或IP地址> 指定HTTP代理服务器。
- –httpport<通信端口> 设置HTTP服务器或代理服务器使用的通信端口。
- –ignorearch 不验证套件档的结构正确性。
- –ignoreos 不验证套件档的结构正确性。
- –ignoresize 安装前不检查磁盘空间是否足够。
- –includedocs 安装套件时,一并安装文件。
- –initdb 确认有正确的数据库可以使用。
- –justdb 更新数据库,当不变动任何文件。
- –nobulid 不执行任何完成阶段。
- –nodeps 不验证套件档的相互关联性。
- –nofiles 不验证文件的属性。
- –nogpg 略过所有GPG的签名认证。
- –nomd5 不使用MD5编码演算确认文件的大小与正确性。
- –nopgp 略过所有PGP的签名认证。
- –noorder 不重新编排套件的安装顺序,以便满足其彼此间的关联性。
- –noscripts 不执行任何安装Script文件。
- –notriggers 不执行该套件包装内的任何Script文件。
- –oldpackage 升级成旧版本的套件。
- –percent 安装套件时显示完成度百分比。
- –pipe<执行指令> 建立管道,把输出结果转为该执行指令的输入数据。
- –prefix<目的目录> 若重新配置文件,就把文件放到指定的目录下。
- –provides 查询该套件所提供的兼容度。
- –queryformat<档头格式> 设置档头的表示方式。
- –querytags 列出可用于档头格式的标签。
- –rcfile<配置文件> 使用指定的配置文件。
- –rebulid<套件档> 安装原始代码套件,重新产生二进制文件的套件。
- –rebuliddb 以现有的数据库为主,重建一份数据库。
- –recompile<套件档> 此参数的效果和指定”–rebulid”参数类似,当不产生套件档。
- –relocate<原目录>=<新目录> 把本来会放到原目录下的文件改放到新目录。
- –replacefiles 强行置换文件。
- –replacepkgs 强行置换套件。
- –requires 查询该套件所需要的兼容度。
- –resing<套件档>+ 删除现有认证,重新产生签名认证。
- –rmsource 完成套件的包装后,删除原始代码。
- –rmsource<文件> 删除原始代码和指定的文件。
- –root<根目录> 设置欲当作根目录的目录。
- –scripts 列出安装套件的Script的变量。
- –setperms 设置文件的权限。
- –setugids 设置文件的拥有者和所属群组。
- –short-circuit 直接略过指定完成阶段的步骤。
- –sign 产生PGP或GPG的签名认证。
- –target=<安装平台>+ 设置产生的套件的安装平台。
- –test 仅作测试,并不真的安装套件。
- –timecheck<检查秒数> 设置检查时间的计时秒数。
- –triggeredby<套件档> 查询该套件的包装者。
- –triggers 展示套件档内的包装Script。
- –verify 此参数的效果和指定”-q”参数相同。
- –version 显示版本信息。
- –whatprovides<功能特性> 查询该套件对指定的功能特性所提供的兼容度。
- –whatrequires<功能特性> 查询该套件对指定的功能特性所需要的兼容度。
实例
安装软件
# rpm -hvi dejagnu-1.4.2-10.noarch.rpm
警告:dejagnu-1.4.2-10.noarch.rpm: V3 DSA 签名:NOKEY, key ID db42a60e
准备...
########################################### [100%]
显示软件安装信息
# rpm -qi dejagnu-1.4.2-10.noarch.rpm
练习项目:
1. 挂载光盘文件到/media目录
2. 进去/media目录下的Packages目录
3. 查看系统已安装的所有rpm包
4. 查看系统是否安装dhcp软件包
5. 安装dhcp软件包
6. 查看dhcp软件包的信息
7. 查看dhcp软件包中所包含的所有文件
8. 查看/bin/ls文件是由哪个软件包产生
9. 卸载dhcp软件包
2. yun管理rpm软件包
a. yum是Yellow dog Updater, Modified的缩写,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装、升级等等工作;
b. yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件;
c. 本地仓库配置
[root@localhost ~]# mount /dev/cdrom /mnt #挂载光盘到/mnt目录
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
rhel-source.repo
[root@localhost yum.repos.d]# cp rhel-source.repo rhel.repo #拷贝一份配置文件
[root@localhost yum.repos.d]# vi rhel.repo #编辑配置文件如下[rhel-local] #模块名称,须修改不能与其他.repo文件中的重名name=Red Hat Enterprise Linux 6 local repo #名称随便起baseurl=file:///mnt #指定rpm仓库的位置
enabled=1 #1开启该配置,0为关闭
gpgcheck=1 #1为校对软件
[root@localhost ~]# yum install vsftpd httpd #安装vsftpd及httpd服务
d. yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 语法
yum [options] [command] [package ...]
- options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。
- command:要进行的操作。
- package操作的对象。
yum常用命令
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search <keyword>
- 8.清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
练习项目:
1. 自定义yum仓库:createrepo
2. 自定义repo文件
3. 使用yum命令安装httpd软件包
4. 卸载httpd软件包:yum –y remove 软件名
5. 使用yum安装组件’KDE 桌面’:yum –y groupinstall 组件名
6. 掌握使用yum删除组件‘KDE 桌面’:yum –y groupremove 组件名
7. 掌握清除yum缓存:yum clean all
8. 使用yum查找软件包:yum search 软件包名
3. 源码安装软件包
a. 计算机里面运行的所有东西都是用程序编出来的(包括操作系统,如Windows,还有Word等,网络游戏也一样),而编写程序要用到计算机语言,用计算机语言直接编出来的程序就叫源码,比如用VisualBasic编写的源码文件一般为.bas文件,而用C++编写的一般为.cpp文件,源代码不能直接运行,必须编译后才能运行。源码经过编译处理后就可以直接在操作系统下运行了;
b. 源码软件未经编译,方便人们修改;
c. 本实例为安装“Python3.6”源码软件包,需要Linux安装开发工具;
Linux基础之常用命令练习-nginx,nfs
一. Nginx
Nginx(“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗及并发能力强而闻名。
1. nginx的安装(yum安装)
首先需要安装epel软件源,因为它里面包含了许多基本源里没有的软件,方便nginx的安装;yum install epel-release -y
安装完epel后接着就可以安装nginx了;yum install nginx -y
nginx配置文件默认应该在”/etc/nginx/nginx.conf”,可以使用vim编辑修改配置
# Info : The conf for nginx
# Author : dingtm
# CTime : 2010.07.01
user www www; #运行NGINX所使用的用户和组
worker_processes 4; #nginx进程数,建议按照cpu数目来指定,一般为它的倍数,每个进程消耗约10M内存
error_log /data/logs/nginx/error.log crit;
pid /elain/apps/nginx/nginx.pid;
worker_rlimit_nofile 65535; #nginx能打开文件的最大句柄数,最好与ulimit -n的值保持一致,使用ulimit -SHn 65535 设置
events {
use epoll; #使用epoll的I/O模型
connections 20000; #每个进程允许的最多连接数
worker_connections 65535; #该值受系统进程最大打开文件数限制,需要使用命令ulimit -n 查看当前设置
maxclients=65535*2
}
http {
include mime.types; #mine.types内定义各文件类型映像
types {
text/html html;
image/gif gif;
image/jpeg jpg;
image/png png;
}
default_type application/octet-stream; #设置默认类型是二进制流,若未设置时,比如未加载PHP时,是不予解析,用浏览器访问则出现下载窗口
server_names_hash_bucket_size 128; #不能带单位!配置个主机时必须设置该值,否则无法运行Nginx或测试时不通过,该设置与server_names_hash_max_size 共同控制保存服务器名的HASH表,hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。若hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。若报出hash max size 或 hash bucket size的提示,则我们需要增加server_names_hash_max_size的值。
client_header_buffer_size 128k; #客户端请求头部的缓冲区大小,根据系统分页大小设置,分页大小可用命令getconf PAGESIZE取得
large_client_header_buffers 4 128k; #4为个数,128k为大小,默认是4k。申请4个128k。当http 的URI太长或者request header过大时会报414 Request URI too large或400 bad request,这是很有可能是cookie中写入的值太大造成的,因为header中的其他参数的size一般比较固定,只有cookie可能被写入较 大的数据,这时可以调大上述两个值,相应的浏览器中cookie的字节数上限会增大。
client_max_body_size 8m; #HTTP请求的BODY最大限制值,若超出此值,报413 Request Entity Too Large
open_file_cache max=65535 inactive=20s; #max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache_valid 30s; #指多长时间检查一次缓存的有效信息
open_file_cache_min_uses 1; #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例, 如果有一个文件在inactive时间内一次没被使用,它将被移除。
server_tokens off; #关闭错误时Nginx版本显示
#提高文件传输性能
sendfile on; #打开系统函数sendfile()支持
tcp_nopush on; #打开linux下TCP_CORK,sendfile打开时才有效,作减少报文段的数量之用
keepalive_timeout 60; #keepalive超时时间
tcp_nodelay on; #打开TCP_NODELAY在包含了keepalive才有效
fastcgi_connect_timeout 300; #指定连接到后端FastCGI的超时时间
fastcgi_send_timeout 300; #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。
fastcgi_read_timeout 300; #接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。
fastcgi_buffer_size 64k; #这里可以设置为fastcgi_buffers指令指定的缓冲区大小
fastcgi_buffers 16 16k; #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答
fastcgi_busy_buffers_size 128k; #建议为fastcgi_buffers的两倍
fastcgi_temp_file_write_size 128k; #在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍,设置上述数值设置太小时若负载上来时可能报 502 Bad Gateway
fastcgi_cache dingtm #开启FastCGI缓存并且为其制定一个名称,有效降低CPU负载,并且防止502错误
fastcgi_cache_valid 200 302 1h; #指定应答代码缓存时间为1小时
fastcgi_cache_valid 301 1d; #1天
fastcgi_cache_valid any 1m; #其它为1分钟
fastcgi_cache_min_uses 1; #缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数 f
gzip on; #打开GZIP压缩,实时压缩输出数据流
gzip_min_length 1k; #从Content-Length中数值获取验证,小于1K会越压越大
gzip_buffers 4 16k; #以16K为单位4倍的申请内存做压缩结果流缓存
gzip_http_version 1.1;
gzip_comp_level 3; #压缩比率1-9,1压缩比最小处理速度最快,9压缩比最大但处理最慢且耗CPU
gzip_types text/plain application/x-Javascript text/css application/xml; #压缩类型
include vhosts/*.conf; #虚拟主机
}
#虚拟主机
server {
listen 80;
server_name www.elain.org; #多域名用空格隔开
index index.php index.html index.shtml;
root /elain/data/htdocs/elain;
#limit_conn connlimit 20; #限制一个IP只能最多只能发起20个连接,超过报 503 Service unavailable,可防止恶意连接
access_log /elain/logs/nginx/access_www.elain.org.log access;
error_log /elain/logs/nginx/error_www.elain.org.log;
location / {
ssi on; #WEB文档根目录打开SSI支持
ssi_types text/html;
ssi_silent_errors off; #处理SSI出错时不提示
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
access_log off;
expires 30d;
}
location ~ .*.(js|css)?$ {
expires 1h;
add_header Cache_Control private;
}
location ~ /.ht {
deny all;
}
location /NginxStatus { #设定查看Nginx状态的地址
stub_status on;
access_log off;
auth_basic “NginxStatus”; #标识
auth_basic_user_file conf/.htpasswd; #网页加密,提示登录框,输入用户名和密码可查看
}
location ~ .*.(php|php5)?$ { #匹配文件后缀php, php5
#fastcgi_pass unix:/tmp/php-cgi.sock; #SOCKET方式转交fastcgi处理
fastcgi_pass 127.0.0.1:9000; #9000端口方式fastcgi
fastcgi_index index.php;
include fastcgi_params; #包含fastcgi配置
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
设置完nginx.conf后应该先将linux系统的防火墙关掉,因为其会阻止远程对nginx默认端口80的访问;命令:systemctl stop firewalld(关掉防火墙),systemctl disable firewalld(开机不启动防火墙)selinux 阻止了html文件下几个html文件的远程被访问,需要修改selinux配置文件;命令:vim /etc/selinux/config,将第二个SELINUX=disabled,保存退出,重启系统;
此时,就可以启动nginx服务了,命令:systemctl start nginx(启动nginx),systemctl enable nginx(设为开机启动)。
2. nginx的安装(源码安装)-这位大神已经写得很详细了。
3. nginx的配置使用
4. nginx均衡负载(LB)
负载均衡技术是构建大型网站必不可少的架构策略之一。它的目的是,把用户的请求分发到多台后端的设备上,用以均衡服务器的负载。
Nginx负载均衡器的特点是:
1). 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;
2). Nginx安装和配置比较简单,测试起来比较方便;
3). 也可以承担高的负载压力且稳定,一般能支撑超过上万次的并发;
4). Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测;
5). Nginx对请求的异步处理可以帮助节点服务器减轻负载;
6). Nginx能支持http和Email,这样就在适用范围上面小很多;
7). 默认有三种调度算法: 轮询、weight以及ip_hash(可以解决会话保持的问题),还可以支持第三方的fair和url_hash等调度算法;
二. nfs
NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
1. nfs安装,yum install rpcbind nfs-utils -y
2. nfs配置,vim /etc/exports
配置文件格式:<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
a. 输出目录:
输出目录是指NFS系统中需要共享给客户机使用的目录;
b. 客户端:
客户端是指网络中可以访问这个NFS输出目录的计算机
客户端常用的指定方式
- 指定ip地址的主机:192.168.0.200
- 指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
- 指定域名的主机:david.bsmart.cn
- 指定域中的所有主机:*.bsmart.cn
- 所有主机:*
c. 选项:
选项用来设置输出目录的访问权限、用户映射等。
NFS主要有3类选项:
访问权限选项
- 设置输出目录只读: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服务器也不检查其父目录的权限,这样可以提高效率;
3. nfs启动
1). 假如我们设置了 /share 为共享目录,因为其它用户需要权限进行访问,所以需要修改该目录及其子目录文件的读写权限;命令:chmod -R o=rw- /share
2). 启动服务
首先需要先启动相关服务rpcbind,命令:systemctl start rpcbind.service(启动),systemctl enable rpcbind.service(设为开机启动)
然后再启动nfs,命令:systemctl start nfs-server.service(启动),systemctl enable nfs-server.service(设为开机启动)
确认nfs启动成功,命令:rpcinfo,exportfs(有输出,例如:/share 192.168.31.0/24)
查看服务信息,命令:showmount -e #默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错;showmount -a #显示已经与客户端连接上的目录信息
3). 客户端配置
客户端按照同样的方法安装好nfs服务并启动,无需修改exports配置文件,但需要将主机的共享目录挂载在自己的默认访问的html里
命令:mount 192.168.47.133:/share /usr/nginx/html(绿色字体依自己机器的设置而定)
4). 接下来就可以在浏览器中验证结果了
5). nginx+nfs共享集群配置
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144223.htm