linux的一些命令
目录
破解密码
命令别名
快捷键
文件目录相关
文件类型
查看文件信息---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的一些命令相关推荐
- linux下find命令的使用和总结
背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样&quo ...
- linux 判断某个命令是否安装
linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' ...
- linux下比较文件并输出,Linux使用diff命令比较文件找出文件之间相同的部分
如果你需要比较系统文件的内容,那么你就会是使用到diff命令,可找出文件之间相同的部分,下面小编就给大家详细介绍下Linux diff命令的用法. diff 命令是 linux上非常重要的工具,用于比 ...
- Linux的watch命令--实时监测命令的运行结果
watch 是一个非常实用的命令,基本所有的 Linux 发行版都带有这个小工具,如同名字一样,watch 可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.直接在 watch 后面接你想运行的 ...
- linux的strace命令
linux的strace命令 strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用. strace 显示这些调用的参数并返回符号形式的值.strace 从内核接收信息,而且不 ...
- Linux下addr2line命令用法
Linux下addr2line命令用于将程序指令地址转换为所对应的函数名.以及函数所在的源文件名和行号.当含有调试信息(-g)的执行程序出现crash时(core dumped),可使用addr2li ...
- Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息
java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...
- linux命令注入,Linux kernel本地命令注入漏洞
Linux kernel本地命令注入漏洞 2005-10-19 eNet&Ciweek Linux kernel 2.2.6 Linux kernel 2.2.5 Linux kernel 2 ...
- linxu passwd 给linux用户设置密码 命令
[root@localhost ~]# passwd # 修改 root 用户的密码 passwd 给linux用户设置密码 命令 passwd www 直接passwd是当前用户设置密码 非交互式修 ...
- Linux之链接命令
Linux之链接命令 1. 链接命令的介绍 链接命令是创建链接文件,链接文件分为: 软链接 硬链接 命令 说明 ln -s 创建软链接 ln 创建硬链接 2. 软链接 类似于Windows下的快捷方式 ...
最新文章
- java拍照搜题软件下载_拍照即可秒出答案,搜题类App:是教辅“神器”还是偷懒“神器”?...
- poj3074(数独)
- 静态资源跨域解决方案
- 计算机发展史的十大成就,2019中国十大科技成就:数个“第一”创造历史
- 3d展示网页开发_超实用:一篇文章带你了解市面上主流通用的3D模型格式
- 师从施一公,4年8篇CNS,西湖大学博士后获世界最具潜力女科学家奖
- mac linux win三系统安装教程,【教程】macbook pro上安装三系统详解教程(mac os x+windows+linux ubuntu)...
- Luogu P3521 [POI2011]ROT-Tree Rotations
- phpcmsV9 公告内容(图片不显示问题)
- AntV 数据可视化解决方案发布
- 在记事本++中删除重复的行
- ios 表情符号 键盘_iOS自定义的emoji表情键盘
- 一种全景视频的主观质量评价方法(译)
- Android 仿美团选择城市、微信通讯录、饿了么点餐列表的导航悬停分组索引列表
- 中国电信IPTV标准研究之机顶盒
- Confluence安装与破解
- 后缀自动机+DP BZOJ 3238 差异
- feifeicms 火车头文章采集 自动图片本地化
- 惊呆了!难道还有这么云盘的软件???再也不怕视频被和谐了!!
- C语言学习day1、2
热门文章
- 测试工程师面试一般常用问题
- 【死磕 Spring】----- IOC 之 Factory 实例化 bean
- 微信小程序 - 在自定义组件中请求后端 API 数据接口(引入该组件的页面触发)组件在哪个生命周期钩子函数中请求接口数据呢?
- CTO 说公司的 ES 性能不够好、集群不够稳定!直到我用了这些调优技巧后。。。...
- linux下下载fnl数据,使用python直接提取fnl再分析资料的气象因子数据
- dpdk:vfio-pci模式下iommu(N+Y)-Huge配置-numa配置
- The Innovation | Volume 3 Issue 3 Live Now
- 浅析某城商行手机银行水平授权漏洞问题
- 四平师院计算机学院,永远的四平师院
- java玩hypixel_著名服务器Hypixel入驻《我的世界》中国版