linux常用命令整理-02-服务器-系统-内存-磁盘-优化

ssh命令(远程连接主机)

linux中默认是用ssh来实现远程登陆服务器;
window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell ,xshell 等;

不指定用户:ssh 192.168.0.11 # 默认利用当前宿主用户的用户名登录
指定用户:ssh root@192.168.0.11
指定端口:ssh -p22 root@192.168.0.11

如何让两台机器建立连接:
ssh-copy-id 172.20.8.100
或者:
sudo ssh-copy-id 172.20.8.100
此命令可以把本地的ssh公钥文件安装到远程主机对应的账户下
(ssh-copy-id将公钥复制到远程机器中)

将44机器上的id_rsa.pub复制到48机器.ssh目录下:
root@mach4:/var/log# scp /root/.ssh/id_rsa.pub [email protected]:~/.ssh/abc
root@192.168.0.48's password: 
id_rsa.pub   

将公钥追加到authorized_keys中:将id_rsa.pub中的内容拷贝到 authorized_keys中
cat id_rsa.pub >> authorized_keys

https://www.freesion.com/article/8067237339/

免密登陆:

1:先要在各个服务器执行:如有三个服务器:101,102,103
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
~
2:将binghe102和binghe103服务器上的id_rsa.pub文件复制到binghe101服务器。
[root@binghe102 ~]# scp .ssh/id_rsa.pub binghe101:/root/.ssh/102
[root@binghe103 ~]# scp .ssh/id_rsa.pub binghe101:/root/.ssh/103
~
3:在binghe101服务器上执行如下命令。
cat ~/.ssh/102 >> ~/.ssh/authorized_keys
cat ~/.ssh/103 >> ~/.ssh/authorized_keys
~
4:然后将authorized_keys文件分别复制到binghe102、binghe103服务器。
[root@binghe101 ~]# scp .ssh/authorized_keys binghe102:/root/.ssh/authorized_keys
[root@binghe101 ~]# scp .ssh/authorized_keys binghe103:/root/.ssh/authorized_keys
~
5:删除binghe101节点上~/.ssh下的102和103文件。
rm ~/.ssh/102
rm ~/.ssh/103

内存磁盘使用情况 (df、du)
df -h :查看磁盘利用率
df 开头的是查看文件系统的使用情况
文件:file

du -sh * :可以进入目录后,查看该目录中各个文件的大小
du 开头的是查看文件打大小
du -sh /root
显示内存使用情况(free)
free -g :以G为单位显示
free -m :以MB为单位显示内存使用情况
free -h :便于阅读的方式显示 (常用)
查看linux cpu情况(lscpu)

在这里插入图片描述
该命令显示的信息包括,CPU 的数量,线程 (thread),核心 (core),Socket :

Socket 具体是指的主板上 CPU 的插槽数量,一般笔记本只有一个,而服务器可能会有多个。如果有两个插槽,通常称为两路;
Core 具体是指 CPU 的核心,也就是平常说的几核,比如八核之类;
thread 是指的每个 Core 的硬件线程数,超线程;

举例来说,如果某个服务器”2 路 4 核超线程”,也就是 2 个插槽,4 核心,默认为 2 thread,也就是 242 是 16 逻辑 CPU。对操作系统来说,逻辑 CPU 的数量就是 Socket * Core * Thread。
举例:
比如下面我的台式机,1 Sockets, 4 Cores,2 Threads,那么就是 4 核 8 线程。
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1

用户切换(su,sudo)

su(switch user,即切换用户的简写)是申请切换root用户,需要申请root用户密码。
而sudo 是当前用户暂时申请root权限,所以输入的不是root用户密码,而是当前用户的密码。sudo是用户申请管理员权限执行一个操作,而此处的操作就是变成管理员。

注意:
sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。

用法:su
su 用以切换成不同的用户的身份
su 默认切换root用户
su :切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
~
用法:sudo
sudo 一般加的是命令
sudo : 暂时切换到超级用户模式以执行超级用户权限,一般指的是root用户,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。要求执行该命令的用户必须在sudoers中才可以

其实很好理解:
这两个命令都是常用来切换到root用户的;
我觉得最大的区别就是一个是有时间限制,一个是永久切换过去;

1:sudo :
sudo入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。
~
2:sudo -i :
通过这种方法输入当前管理员用户的密码就可以进到root用户。
~
~
如果想一直使用root权限,要通过su切换到root用户。
3:su :
~
~
两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。
区别2:
sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。

引用:https://linux.cn/article-8404-1.html

查看服务器负载(top)- cpu 使用率

在这里插入图片描述
Load Average这一个指标就能说明系统负载高了;

load average :在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。三个数字分别代表了1分钟,5分钟,15分钟的统计值
*
所以,这个数值的确能反应服务器的负载情况。
但是,这个数值高了也并不能直接代表这台机器的性能有问题。可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。直接升级机器是简单粗暴,但是治标不治本。

top命令:
第一行:

第一行:top - 20:41:08 up 18 days, 5:24, 2 users, load average: 0.04, 0.03, 0.05
top:当前时间
up:机器运行了多少时间
users:当前有多少用户
load average:分别是过去1分钟,5分钟,15分钟的负载

具体需要关注的果然还是load average这三个数值。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。

第二行:

第二行:Tasks: 216 total, 1 running, 215 sleeping, 0 stopped, 0 zombie
Tasks:当前有多少进程
running:正在运行的进程
sleeping:正在休眠的进程
stopped:停止的进程
zombie:僵尸进程

running越多,服务器自然压力越大。

第三行:

第三行:%Cpu(s): 0.2 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us: 用户进程占CPU的使用率
sy: 系统进程占CPU的使用率
ni: 用户进程空间改变过优先级
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比
hi: 硬件的中断请求
si: 软件的中断请求
st: steal time

这一行代表了CPU的使用情况,us长期过高,表明用户进程占用了大量的CPU时间。us+sy如果长期超过80或者90,可能就代表了CPU性能不足,需要加CPU了。

第四行&第五行:

第四行&第五行:
KiB Mem : 65810456 total, 30324416 free, 9862224 used, 25623816 buff/cache
KiB Swap: 7999484 total, 7999484 free, 0 used. 54807988 avail Mem
total:内存总量
free:空闲内存
used:使用的
buffer/cache:写缓存/读缓存

第四第五行分别是内存信息和swap信息。
所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。
不过当内存的free变少的时候,其实我们并不需要太紧张。
真正需要看的是Swap中的used信息。
Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。
所以当这个数值变高的时候,说明内存是真的不够用了。

第五行往下:

第五行往下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1136 redis 20 0 53192 3876 2664 S 5.9 0.0 4274:56 redis-server
1560 root 20 0 7630136 1.113g 9540 S 5.9 14.3 4079:28 java
3028 root 20 0 100676 1164 0 S 5.9 0.0 3446:06 charger_alone
在这里插入图片描述
PID:进程id
USER:进程所有者
PR:优先级。数值越大优先级越高
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量
SWAP:进程使用的虚拟内存中被换出的大小
RES:进程使用的、未被换出的物理内存大小
SHR:共享内存大小
SHR:共享内存大小
S:进程状态。D表示不可中断的睡眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。
%CPU:上次更新到现在的CPU占用百分比 ;
%MEM:进程使用的物理内存百分比 ;
TIME+:进程使用的CPU时间总计,单位1/100秒;
COMMAND:命令名/命令行

这些就是进程信息了,从这里可以看到哪些进程占用系统资源的概况。

-----top 一般关注第三行 -----------------------
我们要考量 CPU 使用率是否已经满负荷,还有余力支撑新服务。如果有机房监控可以直接观察 CPU 使用率走势观察。没有的话,可以通过 top 命令行进行观察。

%Cpu(s): 22.1 us, 14.6 sy,  0.5 ni, 51.0 id,  9.6 wa,  0.0 hi,  2.3 si,  0.0 st

其中 51.0 id 为 CPU 空闲百分比,使用率为 100-51.0=49.0;

一般以 CPU 使用率在 65~70%- 为佳。这样的话,资源贴近合理分配:user 空间保持在 65%~70% ,system 空间保持在 30% ,空闲保持在 0%~5% 。

CPU 状态解释:
0.0%us【user space】— 用户空间占用CPU的百分比。
0.3%sy【sysctl】— 内核空间占用CPU的百分比。
0.0%ni【】— 改变过优先级的进程占用CPU的百分比
99.7%id【idolt】— 空闲CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
0.0%si【Software Interrupts】— 软中断占用CPU的百分比

CPU负载(w 命令)

需要观察首先机器的 CPU 负载,确保 CPU 还有余力去支撑新的服务。如果有机房监控可以直接观察最近 5 分钟负载走势观察。没有的话,可以通过 w 命令行进行观察。

w 命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

我们只需要关注头信息:

16:07:37 up 788 days, 3 min, 16 users,  load average: 3.59, 4.93, 5.48

Load average 为最近 1 分钟、5 分钟、15 分钟内机器的平均负载。

平均负载意味着,CPU 的负荷指数。
CPU 全负荷指数为 1 ,1.5 CPU 正在全力处理中且还有 一半的负载在等待。
如果把 CPU 当作一辆车,则 1 是满载, 1.5 是车已经满载了,地上还有半车等着拉…
可见,负荷指数 1 是个特殊值,一旦超过,就意味着服务任务已经超出 CPU 处理能力。一但负荷指数为 3+,那意味这服务已经接近死机,停服了…

故,这里负载最佳在 0.7-,让 CPU 畅畅快快的运行拉货,超过 0.7 就要考虑是否手动干预降低负载了,防止负荷升级。

长尾解释:
-h:不打印头信息
-u:当显示当前进程和cpu时间时忽略用户名
-s:使用短输出格式
-f:显示用户从哪登录
-o:老式输出
-i:显示IP地址而不是主机名(如果可能)
~
~
行意义解释:
USER:登陆用户名
TTY:登陆后系统分配的终端号
FROM:远程主机名,即从哪里登陆的
LOGIN@:何时登陆的
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,该计时器便会被重置
JCPU:和该终端连接的所有进程占用时间。包括正在运行和后台作业占用时间
PCPU:当前进程锁占用时间
WHAT:当前正在运行进程的命令

1:CPU 负载中最近 1 分钟、5 分钟、15 分钟数据以哪个为准呢?

通常以 5 分钟为准,1 分钟可能存在暂时现象,随后可能就恢复;15 分钟已经快凉了,意义不大

Guess you like

Origin blog.csdn.net/u010953880/article/details/116643864