目录

破解密码

命令别名

快捷键

文件目录相关

文件类型

查看文件信息---ls命令

查看文件的方法

vim

find

创建文件与目录

复制文件

移动文件

删除文件

目录类型

切换目录

用户相关

用户分类

创建用户

查看用户

删除用户

用户密码

修改用户

用户组相关

创建用户组

修改用户组

查看用户组

删除用户组

组成员管理

文件权限

设置权限

更改权限

权限案例 UGO

rwx对普通文件的影响

rwx对目录的影响

权限掩码

高级权限

sudo

文件属性 chattr

NAT模式下配置固定ip

重定向

输出重定向> ,>> (覆盖,追加)

输入重定向 < ,<<

管道符|

参数传递:xargs

软件安装

rpm介绍

rpm安装

rpm查询和卸载

yum

yum操作命令

更换yum源

aliyun

清华源

制作本地yum源

通过镜像制作本地yum源

通过开启yum下载缓存功能制作自己的yum源

源码包安装nginx

进程管理

查看进程 process

静态查看进程ps

动态查看进程top

进程控制

作业控制之jobs

常用命令

查看端口

计划任务

一次调度执行-----at

循环调度执行cron

日志相关

常见的日志文件(系统、进程、应用程序)

日志优先级

logrotate日志轮转

ssh远程管理服务

打包压缩

链接文件

硬链接

软链接

存储管理

磁盘分区

fstab开机自动挂载

/etc/rc.d/rc.local开机自动挂载

逻辑卷LVM

LVM逻辑卷扩容

交换分区swap(虚拟内存)

mount详解

文件服务器

1.构建NFS远程共享存储

ftp及lftp

Ftp 介绍

Vsftp 服务器

vsftpd配置

ftp配置本地用户登录

系统优化检测常用命令

WEB服务器

Apache 服务的搭建与配置

apache目录介绍

修改默认网站发布目录

虚拟主机

基于域名

基于端口

基于IP

Nginx 服务的搭建与配置

传输介质

OSI七层模型

TCP/IP:传输控制协议

HTTP协议


破解密码

1.重启系统
2.选择要使用的内核
3.按e
4.找到linux16那一行,把光标移动到最后,添加init=/bin/sh
5.ctrl+x  保存退出
6.mount -o remount,rw /  进入系统后,以rw方式重新挂载/分区
7.vim /etc/sysconfig/selinux  永久关闭selinux
8.passwd  修改密码
9. touch /.autorelabcl  #重新识别新的root密码
10.exec /sbin/init

命令别名

查看别名:[root@qfedu.com ~]# type -a ll
ll is aliased to `ls -l --color=auto'
设置别名语法:alias 别名='命令'
[root@qfedu.com ~]# alias ddd='df -Th'
[root@qfedu.com ~]# ddd
取消别名:[root@qfedu.com ~]# unalias -a ddd

快捷键

Ctrl + a  :移到命令行首
Ctrl + e  :移到命令行尾
Ctrl + u  :从光标处删除至命令行首
Ctrl + k  :从光标处删除至命令行尾
Ctrl + w :从光标处删除至字首
Ctrl + d :删除光标处的字符
Ctrl + h :删除光标前的字符
ESC + .:打印之前执行过的命令的最后一部分  以空格为分隔符
Ctrl + l:清屏
Ctrl + c:终止命令
关机:init  0    poweroff
重启: reboot、init 6
历史命令:history

文件目录相关

文件类型

- 普通文件(文本文件,二进制文件,压缩文件,电影,图片。。。)
d 目录文件(蓝色)
b 设备文件  block device 设备文件,如硬盘,U盘;
c 设备文件 字符设备文件,比如我们的终端tty1,打印机。
l symbolic link 即符号链接文件,又称软链接文件 (浅蓝色)
s socket 即套接字文件,用于实现两个进程进行通信
p  管道文件

查看文件信息---ls命令

#ls                 #查看当前目录下的文件
#ls  -l     //长格式显示(显示文件的详细信息)
-rw-r--r--          1       root       root     10086   May 7 12:15:16      alan.txt
文件类型\权限    硬链接个数   所有者   所属组    大小   修改时间     名字
#ll -d /home/  #显示目录的详细信息
#ls -h     //-h 人性化显示 (显示文件大小)
#ls -a      //all 显示所有文件 (包括隐藏文件)
#ls ./file*    #以file开头的所有文件    *通配符。表示所有字符(隐藏文件除外)
#ls ./*.txt     #以任意开头以.txt结尾的所有文件
# ll -d /home/  #查看目录详细信息
# ll -t         #按最新的修改时间排序
# ls -i /etc/hosts  #查看inode号
#隐藏文件的特点:文件名称前面加“.”
stat
访问时间:atime,查看内容
修改时间:mtime,修改内容
改变时间:ctime,文件属性,比如权限,mv改名 

查看文件的方法

cat

完整查看
-n    显示行号
-A    包括控制字符/制表符

head

默认查看前10行
-n      查看前n行

tail

默认查看后10行
-n      查看后n行
-f      动态查看文件的尾部

grep

过滤查看, 符合关键字的行
过滤文件中带有QF2301的内容:          例如: grep ‘QF2301’  /etc/group
过滤以root开头的行:^ --以什么开头     例如:  grep '^root' /etc/passwd
过滤以bash结尾的行:$ --以什么结尾     例如:  grep 'bash$' /etc/passwd

less

翻页查看,针对行数较多的大文件
空格键是翻页  回车键是翻行
上下箭头可以来回翻
/关键字     #搜索 (n按关键字往下翻   N按关键字往上翻)
快捷键:q -quit 退出

more

分页显示文件内容
空格键是翻页  回车键是翻行

sort

排序,默认升序
-t 指定分隔符
-k 指定列
-n 按数值
-r 降序
例如:     sort -t":" -k3 -n /etc/passwd |tail #以: 分隔,将第三列按字数升序看后十行

vim

可以查看文件内容,也可以编辑文件内容

进入编辑模式的方法

i    #在光标所在处进入编辑模式
a    #在当前光标后面进入编辑模式
A    #在行尾进入编辑模式
o    #在光标的下一行进入编辑模式
大O  #在光标的上一行进入编辑模式

命令模式下

0        #行首
$      #行尾
p       #粘贴到本行的下一行
大写P      #粘贴到本行的上一行
x       #删除光标所在的字符
D       #从光标处删除到行尾
u       #undo撤销
r       #可以用来修改一个字符
gg          #页首--文本顶端
G(shift+g)  #页尾--文本底部
3G           #进入第三行
yy      #复制
dd      #删除一行
ctrl+r   取消撤销

尾行模式下

shift+:进入尾行模式
:w  保存
:q  退出
:wq  保存并退出
“wq!  强制保存退出
:set   nu    设置行号
:set   list  设置控制字符
:set nonu  取消设置行号
:set  noh取消高亮
:s/要更改的文字/更改后的文字       替换当前光标所在行的第一个关键字
:ns/要更改的文字/更改后的文字      替换第n行所在行的第一个关键字
:N,Ms/要更改的文字/更改后的文字   替换N到M行的所在行的第一个关键字
:%s/要更改的文字/更改后的文字      替换所有行所在行的第一个关键字
:%s/要更改的文字/更改的文字/g      替换所有行的所有关键字
:%s/要更改的文字/更改的文字/gi   替换所有行的所有关键字不区分大小写
%表示替换所有行  g表示行内所有关键字    i表示不区分大小写
可视化模式
ctrl+v     #进入可视块模式
shift+v    #进入可视行模式

find

语法:
#find 路径 条件 跟条件相关的操作符   [-exec 动作]
路径:
1.默认不写路径时查找的是当前路径.
2.加路径。
条件:
1.指定的名称  -name
2.文件类型  -type
3.权限    -perm 644
4.时间    -atime(访问时间),-mtime(改变时间),-ctime(修改时间)
5.文件大小  -size   -o(或)  -a(且)find /home/ -name test* -exec rm -rf {} \; #{}为前面查找到的内容,\; 格式-exec和xargs的区别
-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件.

创建文件与目录

普通文件:记录数据
touch /root/{zhangsan,lisi,wangwu}  创建的是普通文件
创建多个文件
例如:touch  /root/{1..10}
创建目录文件
例如:没有目录的情况下  mkdir -p /A/B/C   存储文件连级创建
echo  加内容   >  加文件名    #覆盖:把之前的内容替换掉
echo  加内容  >> 加文件名     #追加:保留之前的内容,在后面添加新内容
使用pwd命令查看当前所在的绝对路径

复制文件

针对目录复制时,必须添加该选项 -r
案例1: cp  -r  文件1   目标地址
案例2: cp  -r  文件1   文件2 .....  文件N  目标地址
案例3: cp  -r  文件1   目标地址/新文件名

移动文件

移动文件  mv(移动文件后原目录下的文件会删除)
移动单个文件mv  文件1  目标地址
移动多个文件到同一目录mv  文件1   文件2  .....  文件N   目标地址
不移动文件,单改变文件名(改名)mv   原文件名  新文件名

删除文件

rm -rf  文件存放路径

目录类型

bin 普通用户使用的命令 /bin/ls, /bin/date
sbin 管理员使用的命令 /sbin/service
dev 设备文件 /dev/sda,/dev/sda1
/root  #root用户的家目录
/home  #存储普通用户家目录
lost+found 这个目录平时是空的,存储系统非正常关机而留下“无家可归”的文件
/usr         #系统文件,相当于C:\Windows
/usr/local   #软件安装的目录,相当于C:\Program
/usr/bin    #普通用户使用的应用程序
/usr/sbin   #管理员使用的应用程序
/usr/lib       库文件Glibc 32bit
/usr/lib64    库文件Glibc 64bit
/boot        存放的系统启动相关的文件,例如kernel
/etc         #配置文件(系统相关如网络/etc/sysconfig/network)
/tmp         临时文件(系统:程序产生的临时文件)
/opt         空目录
/var  #存放的是一些变化文件,比如数据库,日志,邮件....
/proc  虚拟文件系统,系统程序文件所处目录 。虚拟文件系统:只要关机就会没有。
/mnt   #系统提供这个目录是让用户临时挂载其他的文件系统

切换目录

# .     表示当前目录
# cd .. 回到上一级目录等同于相对路径
# cd 或者 cd ~    直接回到家目录
# cd /home/alice  切换目录=绝对路径
# cd -  回到原来目录

用户相关

用户分类

账户为分三类:
超级用户(管理员):享有最高权限,具备系统中的所有权限(一般为root),UID为0
系统用户 :别称“伪用户”,无法登录系统,其主要作用是支撑系统运行,方便系统管理。uid号码小于1000.
普通用户:有权限限制,只能对自己目录下的文件进行操作,可以登录系统。uid 大于1000,登陆shell是bin/bash。
任何一个账户在创建的同时都会在系统里面创建一个同名的组。

创建用户

useradd    用户名   -u    用户ID             指定用户id
useradd    用户名   -g    主组id             指定用户主组
useradd    用户名   -G    附属组             指定用户附属组
useradd    用户名   -s    /sbin/nologin   指定登录shell
useradd    用户名   -M                   不给用户设置家目录
useradd    用户名   -r                   指定该用户为系统用户

查看用户

/etc/passwd  ---->查看账户是否存在的文件
/home/  ---->用户的家目录,每创建一个用户会在/home目录下面创建对应的家目录
/etc/shadow   --->用户的密码文件
grep “用户名”/etc/passwd
1.判断用户是否存在:id user01  查看用户的uid、gid、和所在组
2.查看现在所使用的的账户: whoami 查看我现在所使用的账户
此文件里面除了密码字段能删除不能直接修改之外,其他字段全部都能直接修改[root@linux-server ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell

删除用户

userdel -r user02  //删除用户user2,同时删除用户家目录

用户密码

# passwd alice  #root用户可以给任何用户设置密码
# passwd   #root用户给自己设置密码
$ passwd  #普通用户只能给自己修改密码,而且必须提供原密码
# echo "密码" | passwd --stdin 用户   给多位用户快速设置密码

修改用户

1.修改用户名: usermod    用户名   -l   新用户名
2.修改GID:   usermod    用户名   -G  新附属组id
3.修改UID:   usermod    用户名   -u   新id
4.修改用户的登录shell  usermod    用户名    -s   /sbin/nologin  (用户的shell)
5.修改用户的主组  usermod    用户名   -g  新主组id

用户组相关

创建用户组

groupadd     hr   创建一个用户组叫hr
groupadd    用户组  -g   指定组id

修改用户组

groupmod   用户组   -n      新用户组名     修改组名
groupmod   用户组   -g      新用户组id     修改组id

查看用户组

grep  “组名”  /etc/group
cat   /etc/group  ----->查看组的文件组名:代表组密码:gid:组员

删除用户组

groupdel  用户组  (用户的主属组不能删除)

组成员管理

只针对已存在的用户
1.给组添加账户    gpasswd  用户组  -a   用户      给组添加用户
2.同时添加多个用户到组   gpasswd  用户组  -M    用户1   用户2。。。        同时添加多个用户到组(具有覆盖效果)
3.从组删除用户    gpasswd  用户组  -d   用户                           (删除多个  用 -M  "" 覆盖)

文件权限

权限对象:
属主------->u
属组------->g
其他人------>o
基本权限类型:
读(read):r   ---->4
写(write):w  ---->2
执行: x(exec) ----->1
r w x        rw-        r--       alice   hr    file1.txt
属主权限    属组权限   其他人权限     属主  属组      文件

设置权限

chown:改变文件或目录的所属主以及所属组
[root@linux-server ~]# chown alice.hr file1.txt  //修改属主、属组
[root@linux-server ~]# chown tom  file1.txt  //修改属主
[root@linux-server ~]# chown .it file1.txt   //只改属组
[root@linux-server ~]# chown -R alice.hr dir1 //递归修改---针对目录

更改权限

chmod:为文件或目录设置访问权限
[root@linux-server ~]# chmod u+x file1.txt     //属主增加执行
[root@linux-server ~]# chmod a=rwx file1.txt  //所有人等于读写执行
[root@linux-server ~]# chmod a=- file1.txt   //所有人都没有权限
[root@linux-server ~]# chmod ug=rw,o=r file1.txt  //属主属组等于读写,其他人只读

权限案例 UGO

rwx对普通文件的影响

r相当于用户是否有cat、grep等查看文件的权限
w相当于用户是否有echo "内容" >> 文件路径  向文件内增加内容。
x用户是否有权限将该文件内的每行内容当做命令来执行。
【注意】如果只有x权限没有r权限,则无法执行文件。

rwx对目录的影响

r想当于用户是否有ls查看目录内容的权限     (注意)当只有r没有x权限时,我们可以查看到文件名,但是无法详细查看文件属性
w相当于用户是否可以使用touch、mkdir、rm等命令创建文件、修改文件、删除文件      【注意】当需要对A目录内的文件进行增、删、改,则需要看该用户对A目录是否有W权限,其中w权限需要配合X权限才有效果
x相当于用户是否可以使用cd命令进入目录内部

权限掩码

#查看umask
[root@qfedu.com ~]#umask
0022 root账户默认
0002 普通用户默认
#root用户默认最高权限
目录777 文件666
#通过计算得出root用户创建目录和文件的权限为:
也是现在root用户创建完目录和文件的默认权限:
目录:755
文件:644
#修改umask
[root@qfedu.com ~]#umask 0111

高级权限

suid ==== 4 提权 (只对二进制命令文件生效,其他不管用)
chmod u+s /usr/bin/cat
1、SUID权限仅对命令文件(二进制文件)有效;
2、执行者将具有该程序拥有者(owner)的权限。sgid ==== 2 组继承    (只能对目录设置)
chmod g+s /opt/dir1/
SGID主要用在目录上-----如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的群组相同。sticcky == 1 (t权限)  权限控制
chmod o+t dir2/
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。

sudo

visudo    #打开配置文件  找到93行
jack     ALL=(ALL)       NOPASSWD: ALL   #添加内容
使用方法  sudo 命令
配置解释:
root表示用户名
第一个 ALL 指示允许从任何终端、机器访问 sudo
第二个 (ALL) 指示 sudo 命令被允许以任何用户身份执行
第三个 ALL 表示所有命令都可以作为 root 执行

文件属性 chattr

查看文件属性 lsattr file1 file2 file3
设置权限
chattr +a file1  #不允许修改,只允许追加
chattr +i file2  #不允许做任何操作
chattr +A file3  #告诉系统不要修改对这个文件的最后访问时间

NAT模式下配置固定ip

1、网络地址(子网):192.168.200.0
2、网关:192.168.200.2
3、根据以上信息,推出自己想要的IP:192.168.200.40
【重新配置IP地址】
# cd  /etc/sysconfig/network-scripts/
# vim ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.200.40
GATEWAY=192.168.200.2
PREFIX=24
DNS1=114.114.114.114
【重启网卡】
systemctl restart network
【永久关闭防火墙】
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vi /etc/sysconfig/selinux SELINUX=enforcing  -----》SELINUX=disabled保存退出
【安装初始化服务工具】
# yum -y install vim wget unzip  net-tools
关闭虚拟机,然后打快照

重定向

文件描述符
0,标准输入(键盘)
1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件。
&:表示正确错误混合输出
echo $?  检查上面的结果是否正确  ,正确显示0,失败显示其他数字

输出重定向> ,>> (覆盖,追加)

date 1> date.txt  #正确输出--覆盖
date >> date.txt #正确输出--追加
错误输出重定向
ls  /aaaaaaaaa 2>error.txt #重定向到不同的位置
ls /home/  /aaaaaaaaa &>/dev/null #空设备,将正确与错误的输出丢掉

输入重定向 < ,<<

(cat > file << EOF )是用来创建文件或者在脚本中使用,并向文件中输入信息输入的任何东西会被写入文件中,EOF命令结束。
语法:cat >> file5 <<EOF  #可以写到脚本或者文件里面
EOF:开始和结束的标记。
成对使用
结尾的另一个必须定格写。

管道符|

管道符的作用:是用于两个命令或者多个命令相链接,将前边的命令的执行结果传递到后边的命令
[root@qfedu.com ~]# ls /etc  |grep 'sys'  #查询目录内符合要求的文件

参数传递:xargs

对:ls cp rm  mv 管道不能执行。所以通过xargs。
语法:cat a.txt | xargs  -i cp {} /目录  {}:前面传过来的内容-i :为了让大括号生效目录时  -r解释:前面传过来的东西交给大括号cat file.txt |xargs ls -l          前面是目录或者目录的路径。  ls - l  后面可以不加大括号,直接执行。

软件安装

安装软件的方式:
1、rpm
2、yum
3、源码安装
4、二进制安装

rpm介绍

rpm软件包名称:
软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律
#有依赖关系,不能自动解决依赖关系。
举例:openssh-6.6.1p1-31.el7.x86_64.rpm
数字前面的是名称
数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几---操作系统的版本。
noarch : 32位64位都支持
x86_64 :  64位
i4-686的包 :32位
devel:表示这个RPM包是软件的开发包#用rpm安装需要考虑如下信息:
1.需要考虑系统的版本需要与rpm对应
2.系统的架构:如32位还是64位
3.需要考虑依赖关系

rpm安装

语法 # rpm -ivh 软件包名称
-i install
-vh verbose human
-U  upgrade  升级查找rpm包的网站:http://rpmfind.net/  http://pkgs.org
1.通过rpm安装
wget   下载地址    -O 指定存放路径
curl   下载地址  -o  另存为的文件路径
rpm -ivh    安装包
2.直接通过连接安装rpm包
rpm -ivh   下载地址

rpm查询和卸载

-q query (查询)
-l list (列出)
-f file
-a all
rpm -e 软件名称   卸载rpm软件
rpm -qa | grep 软件名    # 查找软件是否安装
rpm -ql httpd           #查询http安装的文件
rpm -qf /usr/share/httpd/noindex     #查询该文件属于哪个包
rpm -qf /etc/passwd  #查询某一个文件是哪个软件产生的:只能查询已经安装好的软件

yum

分类:本地yum和远程yum
本地yum:     file://
远程yum:     http://    ftp://

yum操作命令

清理yum缓存:(元数据建立)  # yum clean all
缓存软件包信息:         # yum makecache   提高搜索/安装软件的速度
查询yum源信息:         # yum repolist
查看命令属于哪个软件     # yum provides rz
查看系统已经安装好的软件和没有安装的软件(源里存在即可查到):# yum list
安装软件:    # yum -y install 软件名称
重装:      # yum -y reinstall 软件名
卸载软件: # yum erase  软件名 # yum remove 软件名 

更换yum源

aliyun

cd /etc/yum.repos.d/   进入配置文件目录
yum -y  install wget    安装wget
mkdir  back     创建备份目录
mv   *.repo   back   移动本地yum源到备份目录
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载aliyun的yum云
yum clean all &&  yum makecache    清理原来缓存,建立aliyun的缓存
yum  -y install epel-release   本地yum安装yum扩展源

清华源

cd /etc/yum.repos.d/   进入配置文件目录
yum -y  install wget    安装wget
mv   *.repo   back   移动本地yum源到备份目录
vim  qinghua.repo文件内 复制下载地址到文件内并保存退出
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum  -y install epel-release   本地yum安装yum扩展源

制作本地yum源

通过镜像制作本地yum源

cd /etc/yum.repos.d/   #yum源配置文件存放目录
vim CentOS.Base.repo  #在编写yum配置文件是必须是.repo
文件里写入:
[centos7u4]  #yum源区别名称,用来区分其他的yum源
name=centos7u4  #yum源描述   yum源名字
baseurl=file:///mnt/centos7u4  #指定本地yum源的路径
enabled=1  #是否使用此yum源(1为打开,0为关闭)
gpgcheck=0 #检查软件
mkdir /mnt/centos7u4    在/mnt下创建本地yum源存放目录
将本地镜像上传到虚拟机中的/root目录中
挂载镜像
# 语法: mount            挂载设备                  挂载点
#       mount    CentOS-7-x86_64-DVD-1708.iso /mnt/centos7u4/

通过开启yum下载缓存功能制作自己的yum源

打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包)   vim /etc/yum.conf  修改下面参数的值为1,软件会被保存到cachedir指定的目录下
修改keepcache=1
mkdir   /yum_cache   创建存放yum的目录
find        搜索范围           选项     参数
find      /var/cache/yum/   -name "*.rpm" | xargs -i mv {}  /yum_cache/
vim /etc/yum.repos.d/myyum.repo
[myyum]
name=缓存yum源
baseurl=file:///yum_cache/
enabled=1   #默认是开启的
gpgcheck=0
yum install -y createrepo   #创建repo文件工具
createrepo /yum_cache/     //此目录就可以作为yum源了
yum clean all &&  yum makecache  

源码包安装nginx

yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel  #编译环境的准备
wget http://nginx.org/download/nginx-1.16.1.tar.gz  安装压缩包
tar   xzf   nginx-1.16.1.tar.gz   解压安装包
cd nginx-1.16.1   进入到目录
./configure   --user=www   --group=www   -- prefix=/usr/local/nginx
make   #编译文件
make install  #安装文件
useradd www   #创建nginx用户
systemctl stop firewalld  #关闭防火墙
/usr/local/nginx/sbin/nginx  #启动nginx
/usr/local/nginx/sbin/nginx   -s    stop  停止nginx

进程管理

查看进程 process

静态查看进程ps

ps aux | less
参数解释:
a 只能查看系统里面运行的所有终端进程
u 显示进程拥有者
x 显示系统内所有进程
f 显示进程之间的父子关系
[root@linux-server ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
USER:   #运行进程的用户
PID:   #进程ID
%CPU:   #CPU占用率
%MEM:   #内存占用率
VSZ     进程占用的虚拟内存大小
RSS     占用的物理内存大小
STAT:  #进程状态  ---了解
?    表示没有占用终端
R   运行
S   可中断睡眠 Sleep
D   不可中断睡眠
T   停止的进程
Z   僵尸进程
X    死掉的进程
START:  #进程的启动时间
TIME:    #进程占用CPU的总时间
COMMAND: #进程文件,进程名
进程状态--了解
Sl  以线程的方式运行
Ss  s进程的领导者,父进程
R+ +表示是前台的进程组
S< <优先级较高的进程
SN  N优先级较低的进程
#   S   可中断睡眠 Sleep----类似于挂起,等待接收socket链接或者是一些信号从而重新被唤起
#   D   不可中断睡眠 --不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不允许其他进程或中断打断这个进程。 进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。
ps -ef
参数解释:
-e 显示所有进程
-l 长格式显示
-f 完整格式UID       用户ID
PID       进程ID
PPID      父进程ID
C         CPU占用率
STIME     开始时间
TTY       开始此进程的TTY----终端设备
TIME      此进程运行的总时间
CMD       命令名

动态查看进程top

[root@linux-server ~]# top   每3秒刷新一次
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出
z 彩色显示
W 保存
PR   优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES  进程使用的、未被换出的物理内存大小,单位kb。
SHR  共享内存大小,单位kb
ni :nice值
id: cpu空闲率
wa:cpu等待,等待输入/输出的进程占用的 CPU 百分比。如果使用率过高,表示硬盘该换了
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
在工作中必须监控的东西 load average(平均负载)等待cpu处理的队列长度 也是个数。
1分钟   第一个数字
5分钟   第二个数字
15分钟  第三个数字
计算cpu负载:load average的三个值: 0.10, 0.16, 0.12,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。

进程控制

语法:
kill 信号 PID
pkill   指定进程名字
-1   HUP  重新加载进程或者重新加载配置文件,PID不变
-9   KILL 强制杀死
-15  TERM 正常杀死(这个信号可以默认不写)
-18  CONT 激活进程
-19  STOP 挂起进程

作业控制之jobs

作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
sleep 7000 &   #&:让命令或者程序后台运行
#ctrl+z 把程序放到后台(这方法会让程序在后台暂停)
[root@linux-server ~]# jobs  #查看后台的工作号
[1]-  Running                 sleep 7000 &
[2]+  Stopped                 sleep 8000
[root@linux-server ~]# bg %2  #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号)
[root@linux-server ~]# fg %1  #将后台的程序调到前台
sleep 7000

常用命令

查看当前CPU负载     uptime 查看内存使用        free -mecho 3 > /proc/sys/vm/drop_caches   临时清理内存cat /etc/redhat-release  #查看版本uname -a #看查正在运行的内核版本uname -r  #查看内核版本修改主机名
1、hostnamectl set-hostname  xxxx   #主机名,修改完之后断开与终端连接,然后在重新连接即可。
2、hostname  主机名
3、vi /etc/hostnameyum install -y lrzsz
上传:  rz      下载: sz 文件
查找命令         which
查询命令和配置文件的位置    whereis

查看端口

#查网络进程和正在监听的端口
[root@linux-server ~]# netstat -tanlp
(该命令对应的包名:net-tools)
参数详解:
-a  显示全部的进程
-u  显示udp
-n  以数字的新式显示协议名称
-t   tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口yum install lsof  #安装软件包
lsof -i:80   #端口号,这能查看带端口的进程

计划任务

一次调度执行-----at

作用:  计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据
语法格式:
yum -y install at
systemctl start atd
at  now +5min(时间点)
at> useradd uuuu
at> <EOT>
Ctrl+D  退出编辑
查看一次性计划任务  atq
删除一次性计划任务  atrm  序号

循环调度执行cron

安装软件 yum -y install crontabs  #如果软件不存在安装
启动服务systemctl start crond
开机启动 systemctl enable crond
#crond进程每分钟会处理一次计划任务
存储位置: cd /var/spool/cron/
语法:
crontab -l     列出当前用户的计划任务
crontab -r     删除当前用户所有的计划任务
crontab -e     编辑当前用户的计划任务
crontab -u     去管理其他用户的计划任务语法格式 :
Minutes   Hours    Day-of-Month    Month    Day-of-Week    Command 分钟        小时         日            月         周           执行的命令,最好是命令的绝对路径0-59    0-23        1-31         1-12       0-7*       *           *              *        *
时间:
*:每
*/5 每隔分钟
,:不同的时间段
- : 表示范围

日志相关

常见的日志文件(系统、进程、应用程序)

tail -f /var/log/messages  #动态查看日志文件的尾部,系统主日志文件
tail -f /var/log/secure    #记录认证、安全的日志
tail /var/log/maillog        #跟邮件postfix相关
tail /var/log/cron           #crond、at进程产生的日志
tail /var/log/dmesg          #和系统启动相关
tail -f /var/log/mysqld.log     #MySQL日志
tail /var/log/xferlog           #和访问FTP服务器相关
/var/log/boot.log              #系统启动过程日志记录存放
[root@linux-server ~]#w          #当前登录的用户 /var/log/wtmp
[root@linux-server ~]#last   #最近登录的用户 /var/log/btmp
第一列,用户名;
第二列,终端位置,/pts/0 (伪终端)意味着从诸如ssh或者telnet的远程链接的用户,tty(teletypewriter)意味着直接连接到计算机或者本地链接的用户;
第三列,登录的ip或者内核。
第四列,开始时间;
第五列,结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机);
lastlog     #所有用户的登录情况 /var/log/lastlog

日志优先级

日志级别分为:7种日志级别代号0-7
0 debug             #有调试信息的,日志信息最多
1 info              #一般信息的日志,最常用
2 notice            #最具有重要性的普通条件的信息
3 warning           #警告级别
4 err               #错误级别,阻止某个功能或者模块不能正常工作的信息
5 crit              #严重级别,阻止整个系统或者整个软件不能工作的信息
6 alert             #需要立刻修改的信息
7 emerg             #内核崩溃等严重信息
none                #什么都不记录

logrotate日志轮转

logrotate 配置文件:
主配置文件:/etc/logrotate.conf (决定每个日志文件如何轮转)
配置日志轮转
[root@linux-server ~]# vim /etc/logrotate.conf
weekly              #轮转的周期,一周轮转,单位有年,月,日
rotate 4            #保留4份
dateext             #使用日期作为后缀
#compress           #日志轮替时,旧的日志进行压缩
include /etc/logrotate.d            #包含该目录下的配置文件,会引用该目录下面配置的文件
/var/log/wtmp {                     #对该日志文件设置轮转的方法   monthly                         #一月轮转一次  minsize 1M                        #最小达到1M才轮转,否则就算时间到了也不轮转create 0664 root utmp         #轮转后创建新文件,并设置权限 missingok                           #丢失不提示
}
logrotate   -f  /etc/logrotate.conf  手动轮转
ll  /var/log/          查看日志

ssh远程管理服务

无密码登陆(ssh密钥认证)
1.产生公钥和私钥:  生成一对密钥:公钥+私钥
[root@linux-server ~]# ssh-keygen  #一直回车
2.查看钥匙的目录:
[root@linux-server ~]# cd /root/.ssh/
id_rsa  ---私钥
id_rsa.pub  ---公钥
known_hosts  ----确认过公钥指纹的可信服务器列表的文件
authorized_keys ---授权文件,是传输过公钥到对方服务后会自动重命名生成的
3.拷贝公钥给对方机器:
[root@linux-server ~]# ssh-copy-id 对方机器ip地址
ip地址:指的是对方服务器
4.远程连接的时候就不用输入密码了
修改端口号:
修改配置文件:
# vim /etc/ssh/sshd_config
17 #Port 22   #将注释去掉,修改端口号可以修改为自定义的。
[root@linux-server ~]# systemctl restart sshd
远程登录
-p:prot端口,指定端口,如果端口修改了需要指定
案例:
[root@linux-server ~]# ssh root@192.168.246.158 -p 2222
远程拷贝:
# scp  -P 端口号 /a.txt    ip:/路径    源文件      目标地址
[root@linux-server ~]# scp -r -P 2222 test/ 192.168.246.158:/root/
谁是远程加谁ip
远程拷贝目标机器改了端口加-(大)P
目录加 -r
实现服务器时间对时(ntp)
[root@localhost ~]# yum install ntp
[root@localhost ~]# ntpdate cn.pool.ntp.org
#如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:
00 12 * * * /sbin/ntpdate cn.pool.ntp.org
cn.pool.ntp.org是ntp网络授时组织的中国授时源

打包压缩

文件格式结尾:.tar.gz      .tar.bz2     .zip
打包
#tar cvf xxxx.tar filename   被打包的文件 ...
c :create  创建
v :verbose 详细信息
f :file  文件解包
#tar xf filename.tar [-C /root/Desktop]
x: 解压缩  解包
-C: 指定解包路径压缩
#gzip  源文件   #格式  file.gz结尾
#bzip2 源文件   #格式  file.bz2结尾
bzip2需要安装   yum -y install bzip2解压缩
#gunzip    压缩文件
#bunzip2   压缩文件
#gzip   -d  压缩文件
#bzip2  -d 压缩文件
-d: 解压缩打包压缩一起
#tar czf file.tar.gz  源文件
#tar cjf file.tar.bz2 源文件
z:表示gz压缩
j:表示bz2压缩解压解包一起
#tar xzf 压缩文件 [-C 解压路径]
#tar xjf 压缩文件 [-C 解压路径]tar czf /tmp/`date +%F-%T`-etc.tar.gz /etc/  #将打包的文件放到/tmp目录下,并以当前时间开头命名

链接文件

硬链接

ll -i /file2                 #-i:显示inode编号
语法:
ln   源文件   链接文件
ln  /file2   /file2-h1
rm -rf /file2        #删除源文件
硬链接
1. 不能跨文件系统
2. 不支持目录做硬链接

软链接

语法:
ln -s    源文件   链接文件
ln -s   /file1   /file11        #将文件file1软链接到file11
rm -rf  /file11             #取消软连接
给目录设置软链接必须是绝对路径   ln -s /root/aaa/ /usr/bbb
# rm -rf /usr/bbb  #取消链接,注意:删除目录链接时目录后面加“/”是删除目录,不加是删除链接

存储管理

磁盘分区方式 :
MBR  (MSDOS根据分区表来分区的,又叫做主引导扇区) <2TB
分区工具:fdisk
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)
MBR 小于2TB的可以。
一块硬盘最多分4个主分区。GPT>2TB和<2TB
分区工具:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。
#注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

磁盘分区

MBR方式分区
lsblk  #查看磁盘设备
fdisk  /dev/sdb  进入磁盘文件进行分区
如果分区后无法发现分区结果,请刷新分区表后再次查看  partprobe /dev/sdbGPT方式分区
yum -y install gdisk  #安装分区工具
gdisk /dev/sdb创建文件系统(格式化)centos7默认使用xfs
mkfs.ext4 /dev/sdb1   #格式化成ext4格式的文件系统
mkfs.xfs /dev/sdc2    #格式化成xfs格式的文件系统
mkdir /mnt/disk1   #创建挂载目录
mount -o rw /dev/sdb1 /mnt/disk1/  #-o 指定读写权限(ro只读,rx读写)
df -Th  查看磁盘挂载与使用空间
umount -l /mnt/disk1/ #强行卸载,即使目录有资源被进程占用,也可以卸载

fstab开机自动挂载

blkid /dev/sdb1  #查看uuid和文件系统类型
vim /etc/fstab
/dev/sdc2   /mnt/disks  xfs   defaults     0  0
第1列:挂载设备
(1)/dev/sda5
(2)UUID=设备的uuid   rhel6/7的默认写法   同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查
mount -a #自动挂载

/etc/rc.d/rc.local开机自动挂载

 vim /etc/rc.d/rc.local #将挂载命令直接写到文件中touch /var/lock/subsys/localmount -O  rw /dev/sdb1   /mnt/disk1/ chmod +x /etc/rc.d/rc.local #添加执行权限reboot

逻辑卷LVM

blkid  查看磁盘格式化类型
创建LVM   如果没有pv命令安装 #yum install -y lvm2
创建pv   pvcreate /dev/sdb
pvs  #查看pv
创建vg   vgcreate vg1(卷组名)  /dev/sdb
vgs    #查看vg
vgdisplay #查看vg
lvcreate -L 150M -n lv1 vg1  #创建lv
lvcreate -l 20 -n lv2 vg1  #采用PE方式在创建一个lv
lvs     #查看lv
制作文件系统并挂载
mkfs.xfs /dev/vg1/lv1
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1
df -Th

LVM逻辑卷扩容

扩大VG vgextend
pvcreate /dev/sdc
vgextend vg1 /dev/sdc #vg1卷组名字,将/dev/sdc扩展到vg1中
vgs  查看vg
lvextend -L 850M /dev/vg1/lv1  #扩展到850M。
lvextend -L +850M /dev/vg1/lv1 #在原有基础上加850M
文件系统扩容
xfs_growfs /dev/vg1/lv1  #xfs扩容
resize2fs /dev/vg1/lv2   #ext4扩容
lv移除
lvremove /dev/vg2/lv2  先移除lv
vgremove /dev/vg2      先移除vg
pvremove /dev/sdc      先移除pv

交换分区swap(虚拟内存)

swapon -s  #查看交换分区信息
mkswap /dev/sdd1  #初始化
blkid /dev/sdd1  #查看UUID
vim /etc/fstab    #制作开机挂载
/dev/sdd1       swap    swap    defaults        0 0
swapon -a #激活swap分区(读取/etc/fstab)
swapon -s
#swapoff /dev/sdd1  #关闭swap分区file制作
dd    if=/dev/zero of=/swap2.img bs=1M count=512
dd 读入  从空设备里面拿空块 到交换分区      块多大  一共多少兆
mkswap /swap2.img  #初始化
vim /etc/fstab
/swap2.img      swap    swap    defaults        0 0
hmod 600 /swap2.img #交换分区权限需要设置为600,默认644权限不安全。
swapon -a

mount详解

-t         指定挂载方式
-o         指定文件系统属性
rw         读写
ro         只读
noexec     不允许执行二进制文件
exec       允许执行二进制文件
auto       mount -a 开机自动挂载
remount    在线重新挂载
mount /dev/vg1/lv1 /mnt/lv1/        #挂载默认是有执行权限的
mount -o noexec /dev/vg1/lv2 /mnt/lv2  #不允许执行二进制文件
umount /mnt/lv2/   取消挂载

文件服务器

1.构建NFS远程共享存储

centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
#systemctl stop firewalld
#systemctl disable firewalld
#setenforce 0
NFS-server操作
[root@nfs-server ~]# yum -y install rpcbind nfs-utils #安装rpc协议的包,nfs服务,提供文件系统
启动服务
[root@nfs-server ~]# systemctl start nfs  rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html  #制作test文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件
/nfs-dir  192.168.246.0/24(rw,no_root_squash,sync)
可选参数注释:
ro:只读
rw:读写
*:表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。
单独给一个人: 共享的哪个目录  ip地址 (rw,no_root_squash,sysnc)
单独给所有人: 共享的哪个目录   *   (rw,no_root_squash,sysnc)
单独网段: 共享的哪个目录   192.168.246.0/24 (rw,no_root_squash,sysnc) 
[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #制作开机启动
[root@testpm-server ~]# exportfs -v   #确认 NFS 服务器启动
/nfs-dir 192.168.246.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
web1  客户端操作
[root@web1 ~]# yum -y install rpcbind nfs-utils
[root@web1 ~]# mkdir /qf #创建挂载点
[root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir     /qf  #挂载
[root@web1 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
192.168.246.160:/nfs-dir nfs4       17G  1.4G   16G   8% /qf
[root@web1 ~]# ls /qf
index.html
[root@web1 ~]# umount /qf  #取消挂载
制作开机挂载
[root@client.qfedu.com ~]# vim /etc/fstab
192.168.246.160:/nfs-dir /qf  nfs  defaults 0 0
[root@client.qfedu.com ~]# mount -a

ftp及lftp

Ftp 介绍

文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。作用:提供文件共享服务,实现上传下载
端口:21号,建立tcp连接  默认端口   20号:传输数据

一、FTP基础

软件包:          vsftpd
FTP端口:         控制端口 command 21/tcp
配置文件:        /etc/vsftpd/vsftpd.conf

ftp主动模式

ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
21端口建立连接
20端口传输数据

ftp被动模式

ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据

Vsftp 服务器

vsftpd配置

FTP Server(服务端)关闭防火墙和selinux
#systemctl stop firewalld
#systemctl disable firewalld
#setenforce 0
[root@ftp-server ~]# yum install -y vsftpd
[root@ftp-server ~]# systemctl start vsftpd
FTP默认共享目录:/var/ftp
[root@ftp-server ~]# touch /var/ftp/pub/test.txt  #创建文件到共享目录
[root@ftp-server ~]# systemctl enable vsftpd
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub
[root@ftp-server ftp]# chown ftp.ftp pub/ -R  #修改根目录的属主与属组
[root@ftp-server ftp]# ll
total 0
drwxr-xr-x. 2 ftp ftp 22 Aug  3 03:15 pub
重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。
注意:修改完配置之后需要重启完服务才能生效。
还需要重新从客户端登陆,否则修改后的配置看不到效果。

编辑配置文件

[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf ----找到29行将下面的注释取消
34 anon_other_write_enable=YES
anon_umask=000  #匿名用户上传下载目录权限掩码
[root@ftp-server ~]# systemctl restart vsftpd
FTP Clinet(客户端)关闭防火墙和selinux
[root@client ~]# yum -y install lftp #安装客户端
get命令(下载,首先要开启下载功能)
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
lftp 192.168.246.160:/> cd pub/
lftp 192.168.246.160:/pub> ls
-rw-r--r--    1 14       50              0 Aug 02 19:14 test.txt
lftp 192.168.246.160:/pub> get test.txt   #下载
lftp 192.168.246.160:/pub> exit
[root@client ~]# ls  #会下载到当前目录
anaconda-ks.cfg  test.txt[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:/pub> mkdir dir  #也可以创建目录
mkdir ok, `dir' createdput命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)
[root@client ~]# touch upload.txt  #创建测试文件
[root@client ~]# mkdir /test/  #创建测试目录
[root@client ~]# touch /test/test1.txt #在测试目录下面创建测试文件
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> cd pub/
lftp 192.168.246.160:/pub> put /root/upload.txt  #上传文件
lftp 192.168.246.160:/pub> ls
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt
drwx------    2 14       50              6 Aug 02 19:17 dir
lftp 192.168.246.160:/pub> mirror -R /test/  #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
lftp 192.168.246.160:/pub> ls
drwx------    2 14       50             23 Nov 16 12:18 test
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt
mirror 下载目录

ftp配置本地用户登录

创建测试用户

创建 zhangsan、lisi 密码都设置为 “123456”

[root@ftp-server ~]# useradd zhangsan
[root@ftp-server ~]# useradd lisi
[root@ftp-server ~]# echo '123456' | passwd --stdin  zhangsan  #设置密码
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
[root@ftp-server ~]# echo '123456' | passwd --stdin  lisi
Changing password for user lisi.
passwd: all authentication tokens updated successfully.

配置本地用户ftp配置文件

[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf  ---添加注释并修改
anonymous_enable=NO           #将允许匿名登录关闭
#anon_umask=022                #匿名用户所上传文件的权限掩码
#anon_upload_enable=YES        #允许匿名用户上传文件
#anon_mkdir_write_enable=YES   #允许匿名用户创建目录
#anon_other_write_enable=YES    #是否允许匿名用户有其他写入权(改名,删除,覆盖)
新添加
local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制

重启vsftpd

[root@ftp-server ~]# systemctl restart vsftpd

客户端操作

[root@ftp-client ~]# lftp 192.168.153.137 -u zhangsan
Password:
lftp zhangsan@192.168.153.137:~> ls
lftp zhangsan@192.168.153.137:~> mkdir aaa
mkdir ok, `aaa' created
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
lftp zhangsan@192.168.153.137:~> put /root/test.txt
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
-rw-r--r--    1 1000     1000            0 Aug 02 20:59 test.txt服务器端查看
[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ls
aaa  test.txt
[root@ftp-server zhangsan]# ll
total 0
drwxr-xr-x. 2 zhangsan zhangsan 6 Aug  3 04:55 aaa
-rw-r--r--. 1 zhangsan zhangsan 0 Aug  3 04:59 test.txt

系统优化检测常用命令

知识点:

(简介:系统优化其本质是系统在提供服务的同时,承受压力过大需进行参数调优)

1、查看平均负载

系统负载System Load:系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度,平均负载(Load Average):一段时间内系统的平均负载,这个一段时间一般取1分钟、5分钟、15分钟
[root@linux-server ~]# uptime
20:42:26 up  6:12,  2 users,  load average: 0.00, 0.01, 0.05
1分钟平均负载,5分钟平均负载,15分钟平均负载分别是0.00,0.01,0.05

2、释放buffer和cache

[root@linux-server ~]# echo 3 > /proc/sys/vm/drop_caches

3、带宽使用情况

[root@linux-server ~]# yum install -y epel-release

[root@linux-server ~]# yum install -y iftop.x86_64
第一行:界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间部分:中间的<= =>这两个左右箭头,表示的是流量的方向。=>代表发送,<=代表接收。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cum:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

4、网络接口统计报告

[root@linux-server ~]# yum install -y nethogs.x86_64
[root@linux-server ~]# nethogs
 实例1:监视ens33网络带宽
# nethogs ens33
实例2:同时监视ens33和ens34接口
# nethogs ens33 ens34

WEB服务器

目前最主流的三个Web服务器是Apache、Nginx、 IIS。
Web服务器一般指网站服务器,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。
服务器是一种被动程序只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应
​
web服务器:apache (参考服务器配置、优化。静态并发量最高2000) nginx(tengine) IIS  #端口全部为80!https为443端口

Apache 服务的搭建与配置

[root@qfedu.com ~]# systemctl stop firewalld
[root@qfedu.com ~]# systemctl disable firewalld
[root@qfedu.com ~]# setenforce 0
[root@qfedu.com ~]# yum install -y httpd
[root@qfedu.com ~]# systemctl start httpd
[root@qfedu.com ~]# netstat -lntp | grep 80 #查看apache端口
tcp6       0      0 :::80                   :::*                    LISTEN      2776/httpd
#端口80.可以改
​
index.html:默认主页名称
默认发布网站的目录:/var/www/html
系统产生apache账户,家目录是:/usr/share/httpd
/etc/httpd/conf.d/welcome.conf      删除此配置文件,主页显示是拒绝访问
1、允许大部分人、拒绝小部分人访问的控制<RequireALL>Require not  ip 10.8.161.204Require all granted</RequireALL>
1、允许小部分人、拒绝大部分人访问的控制<RequireAny>Require ip 10.8.161.204Require all denied</RequireAny>

apache目录介绍

apache的工作目录(基准目录)
conf   存储配置文件
conf.d 存储配置子文件
logs   存储日志
modules 存储模块
run    存储Pid文件,存放的pid号码。是主进程号
认识主配置文件:
​
# vim /etc/httpd/conf/httpd.conf
​
ServerRoot "/etc/httpd"             #工作目录
Listen 80                           #监听端口
Listen 192.168.2.8:80 指定监听的本地网卡 可以修改
User apache                         # 子进程的用户,有可能被人改称www账户
Group apache                        # 子进程的组
ServerAdmin root@localhost          # 设置管理员邮件地址
DocumentRoot "/var/www/html"        # 发布网站的默认目录,想改改这里。
IncludeOptional conf.d/*.conf       # 包含conf.d目录下的*.conf文件
​
# 设置DocumentRoot指定目录的属性
​
<Directory "/var/www/html">         # 网站容器开始标识
Options Indexes FollowSymLinks      # 找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
AllowOverride None                  # 对目录设置特殊属性:none不使用.htaccess控制,all允许
Require all granted                 # granted表示运行所有访问,denied表示拒绝所有访问
</Directory>                        # 容器结束
DirectoryIndex index.html           # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问
curl -I  192.168.200.100  #用另外一台机器测试访问成功
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,它支持文件的上传和下载,是综合传输工具,习惯称url为下载工具。
-o:指定下载路径
-I:查看服务器的响应信息
404  没有访问
403  没有访问的权限
200  正常访问

修改默认网站发布目录

[root@qfedu.com ~]# vim /etc/httpd/conf/httpd.conf
119  DocumentRoot "/www"                                        # 修改网站根目录为/www
131  <Directory "/www">                                         # 把这个也对应的修改为/www
​
[root@qfedu.com ~]# mkdir /www    ##创建定义的网站发布目录
[root@qfedu.com ~]# echo "这是新修改的网站家目录/www" > /www/index.html #创建测试页面
[root@qfedu.com ~]# systemctl restart httpd      #重启服务

虚拟主机

虚拟主机:多个网站在一台服务器上。web服务器都可以实现。
三种:基于域名 基于端口 基于Ip

基于域名

[root@qfedu.com conf.d]# vim /etc/httpd/conf.d/test.conf  #创建配置文件
<VirtualHost *:80>   #指定虚拟主机端口,*代表监听本机所有ip,也可以指定ip
DocumentRoot /soso     #指定发布网站目录,自己定义
ServerName www.soso666.com  #指定域名,可以自己定义
<Directory "/soso/">AllowOverride None    #设置目录的特性,如地址重写Require all granted   #允许所有人访问
</Directory>
</VirtualHost>
​
<VirtualHost *:80>.
DocumentRoot /soho
ServerName test.soso666.com
<Directory "/soho/">AllowOverride NoneRequire all granted
</Directory>
</VirtualHost>
[root@qfedu.com ~]# mkdir /soso #创建发布目录
[root@qfedu.com ~]# mkdir /soho
[root@qfedu.com ~]# echo qianfen > /soso/index.html #创建测试页面
[root@qfedu.com ~]# echo qfedu > /soho/index.html
[root@qfedu.com ~]# systemctl restart httpd
​
vim /etc/hosts  输入
192.168.200.100  test.soso666.com

基于端口

vim /etc/httpd/conf/httpd.conf  ---添加
Listen  81
​
[root@qfedu.com ~]# vim /etc/httpd/conf.d/test.conf
<VirtualHost *:80>DocumentRoot /sosoServerName www.soso666.com
<Directory "/soso/">AllowOverride NoneRequire all granted
</Directory>
</VirtualHost>
​
<VirtualHost *:81>   #修改端口DocumentRoot /sohoServerName test.soso666.com
<Directory "/soho/">AllowOverride NoneRequire all granted
</Directory>
</VirtualHost>
[root@qfedu.com ~]# systemctl restart httpd
注意:解析并没有变
​
访问: test.soso666.com:81

基于IP

[root@qfedu.com ~]# ifconfig ens33:0 192.168.153.123  #添加一个临时ip
[root@qfedu.com ~]# ip a a 192.168.153.124/24 dev ens33  #添加一个临时ip
[root@qfedu.com ~]# vim /etc/httpd/conf.d/test.conf
<VirtualHost 192.168.153.144:80>   #指定ipDocumentRoot /sosoServerName www.soso666.com
<Directory "/soso/">AllowOverride NoneRequire all granted
</Directory>
</VirtualHost>
​
<VirtualHost 192.168.153.123:80>   #指定ipDocumentRoot /sohoServerName test.soso666.com
<Directory "/soho/">AllowOverride NoneRequire all granted
</Directory>
</VirtualHost>
[root@qfedu.com ~]# systemctl restart httpd
​
#取消添加的ip地址
#ifconfig ens33:0 192.168.153.123 down
可以配置本地解析,也可以不配本地解析
进程和线程的区别:
线程:线程来源于进程
线程模式需要事先开启进程
线程模式并发量高
进程:进程稳定性高,线程稳定性低
进程独占内存
线程共享进程内存,一个进程可有有多个线程

Nginx 服务的搭建与配置

获取Nginx
Nginx的官方主页: http://nginx.org
​
关闭防火墙关闭selinux
[root@qfedu.com ~]# systemctl stop firewalld  #关闭防火墙
[root@qfedu.com ~]# systemctl disable firewalld #开机关闭防火墙
[root@qfedu.com ~]# setenforce 0  #临时关闭selinux
[root@qfedu.com ~]# getenforce   #查看selinux状态
​
Nginx安装:
[root@qfedu.com ~]# yum install -y epel-release  #安装扩展源
[root@qfedu.com ~]# yum install -y nginx  #安装nginx
[root@qfedu.com ~]# systemctl start nginx  #启动
[root@qfedu.com ~]# systemctl restart nginx #重启
[root@qfedu.com ~]# systemctl enable nginx  #开机启动
[root@qfedu.com ~]# systemctl stop nginx  #关闭
​
​
nginx主配置文件
/etc/nginx/nginx.conf
nginx虚拟主机配置文件
[root@qfedu.com ~]# vi /etc/nginx/conf.d/default.conf
​
server {listen       80;   #监听的端口server_name  localhost;  #设置域名或主机名
​#charset koi8-r;#access_log  /var/log/nginx/host.access.log  main; #日志存放路径
​location / {                        #请求级别:匹配请求路径root   /usr/share/nginx/html;   #默认网站发布目录index  index.html index.htm;    #默认打开的网站主页}}}

传输介质

传输介质包括电缆、双绞线和光纤等。
1.双绞线:有效传输长度100M
线序:
标准568A:绿白绿,橙白蓝,蓝白橙,棕白棕。
标准568B:橙白橙,绿白蓝,蓝白绿,棕白棕。
2.光纤
​
3.单位换算
带宽:带宽是以比特为单位的 而我们常看到的下载速度显示的几KB是以字节为单位
KB--千字节
B---拜特--byte(字节)
b---比特--bit (位)---> 1比特=1位
1字节(byte)=8比特(bit)
1KB=1024字节(byte)
​
网关:网络的出口(路由器的ip地址)
DNS:域名服务器
端口号:1-65535 http---80 https--443 telnet--23 ftp--21、20 ssh--22 mysql--3306 php--9000 tomcat---8080 8005 8009

OSI七层模型

OSI七层: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层(由低到高)
应用层:针对应用约定的标准 HTTP(超文本传输协议) Telnet(远程协议)
表示层:约束数据格式,负责格式转化,加密。解密。
会话层:建立、维护、管理(解除)会话。数据的传输通道。
传输层:约定数据采用何种方式进行传递
TCP协议:传输控制协议,实现数据的可靠传输
UDP协议:用户数据报协议,实现数据的快递传输,不可靠
网络层:提供逻辑地址(IP地址,用于在网络中标识每一台设备,作用于网络间的通信,提供路由和选路)
数据链路层:提供MAC(物理)地址,每个MAC地址写在网卡上
物理层:约定接口类型,传输速度

TCP/IP:传输控制协议

TCP\IP模型
应用层:将OSI上三层融合,用于产生需要传递的数据
传输层
网络层
链路层(网络接口层):将OSI下两层融合

HTTP协议

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通 信的规则,通过因特网传送万维网文档的数据传送协议,于1990年提出.
• 是一个基于TCP/IP通信协议来传递数据,(HTML文件,图片等)
HTTP是一个属于应用层的协议
​
HTTP协议的主要特点:
1.支持客户/服务器模式 (浏览器/服务器模式) 及c/s模式
2.简单快速:
客户向服务器请求服务时,只需传送请求和路径。通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。(文件,视频,会议)
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

linux的一些命令相关推荐

  1. linux下find命令的使用和总结

    背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样&quo ...

  2. linux 判断某个命令是否安装

    linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' ...

  3. linux下比较文件并输出,Linux使用diff命令比较文件找出文件之间相同的部分

    如果你需要比较系统文件的内容,那么你就会是使用到diff命令,可找出文件之间相同的部分,下面小编就给大家详细介绍下Linux diff命令的用法. diff 命令是 linux上非常重要的工具,用于比 ...

  4. Linux的watch命令--实时监测命令的运行结果

    watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.直接在 watch 后面接你想运行的 ...

  5. linux的strace命令

    linux的strace命令 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不 ...

  6. Linux下addr2line命令用法

    Linux下addr2line命令用于将程序指令地址转换为所对应的函数名.以及函数所在的源文件名和行号.当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2li ...

  7. Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...

  8. linux命令注入,Linux kernel本地命令注入漏洞

    Linux kernel本地命令注入漏洞 2005-10-19 eNet&Ciweek Linux kernel 2.2.6 Linux kernel 2.2.5 Linux kernel 2 ...

  9. linxu passwd 给linux用户设置密码 命令

    [root@localhost ~]# passwd # 修改 root 用户的密码 passwd 给linux用户设置密码 命令 passwd www 直接passwd是当前用户设置密码 非交互式修 ...

  10. Linux之链接命令

    Linux之链接命令 1. 链接命令的介绍 链接命令是创建链接文件,链接文件分为: 软链接 硬链接 命令 说明 ln -s 创建软链接 ln 创建硬链接 2. 软链接 类似于Windows下的快捷方式 ...

最新文章

  1. java拍照搜题软件下载_拍照即可秒出答案,搜题类App:是教辅“神器”还是偷懒“神器”?...
  2. poj3074(数独)
  3. 静态资源跨域解决方案
  4. 计算机发展史的十大成就,2019中国十大科技成就:数个“第一”创造历史
  5. 3d展示网页开发_超实用:一篇文章带你了解市面上主流通用的3D模型格式
  6. 师从施一公,4年8篇CNS,西湖大学博士后获世界最具潜力女科学家奖
  7. mac linux win三系统安装教程,【教程】macbook pro上安装三系统详解教程(mac os x+windows+linux ubuntu)...
  8. Luogu P3521 [POI2011]ROT-Tree Rotations
  9. phpcmsV9 公告内容(图片不显示问题)
  10. AntV 数据可视化解决方案发布
  11. 在记事本++中删除重复的行
  12. ios 表情符号 键盘_iOS自定义的emoji表情键盘
  13. 一种全景视频的主观质量评价方法(译)
  14. Android 仿美团选择城市、微信通讯录、饿了么点餐列表的导航悬停分组索引列表
  15. 中国电信IPTV标准研究之机顶盒
  16. Confluence安装与破解
  17. 后缀自动机+DP BZOJ 3238 差异
  18. feifeicms 火车头文章采集 自动图片本地化
  19. 惊呆了!难道还有这么云盘的软件???再也不怕视频被和谐了!!
  20. C语言学习day1、2

热门文章

  1. 测试工程师面试一般常用问题
  2. 【死磕 Spring】----- IOC 之 Factory 实例化 bean
  3. 微信小程序 - 在自定义组件中请求后端 API 数据接口(引入该组件的页面触发)组件在哪个生命周期钩子函数中请求接口数据呢?
  4. CTO 说公司的 ES 性能不够好、集群不够稳定!直到我用了这些调优技巧后。。。...
  5. linux下下载fnl数据,使用python直接提取fnl再分析资料的气象因子数据
  6. dpdk:vfio-pci模式下iommu(N+Y)-Huge配置-numa配置
  7. The Innovation | Volume 3 Issue 3 Live Now
  8. 浅析某城商行手机银行水平授权漏洞问题
  9. 四平师院计算机学院,永远的四平师院
  10. java玩hypixel_著名服务器Hypixel入驻《我的世界》中国版