显卡GPU
查看显卡信息
sudo lshw -numeric -class video
# 查看显卡型号
lspci | grep -i nvidia
# 查看驱动版本
sudo dpkg --list | grep nvidia-*
或者 ubuntu-drivers devices
#查看显卡使用情况
nvidia-smi(显示一次当前GPU占用情况)
nvidia-smi -l(每秒刷新一次并显示)
watch 命令周期性执行某一命令,并将输出全屏显示
watch的基本用法是
watch [options] command
最常用的参数是 -n, 后面指定是每多少秒来执行一次命令。
#监视显存,设置为每 10s 显示一次显存的情况
watch -n 10 nvidia-smi
第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温
第二栏的Temp:是温度,单位摄氏度。
第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。
第四栏下方的Pwr:是能耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
第五栏的Bus-Id是涉及GPU总线的东西
第六栏的Disp.A是Display Active,表示GPU的显示是否初始化。
第五第六栏下方的Memory Usage是显存使用率。
第七栏是浮动的GPU利用率。
第八栏上方是关于ECC的东西。
第八栏下方Compute M是计算模式。
下面一张表示每个进程占用的显存使用率。
#显卡被占满,进程看不出来:
sudo fuser /dev/nvidia*
top命令,查看进程
ps -aux 查看所有进程,每行一个程序
top 显示当前运行程序
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
#显示参数:
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
#或者安装htop,使用htop更直接
free 查看内存使用情况
$ free 说明:free命令用来显示内存的使用情况,使用权限是所有用户。
free [-b-k-m] [-o] [-s delay] [-t] [-V]
主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
uptime 更新系统运行时间,负载信息
18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21
现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载
参数: -V 显示版本资讯。
vmstat 显示磁盘活动 情况
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70
磁盘活动情况主要从以下几个指标了解:
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。
推荐:查看cpu活动情况,使用vmstat比top更能反映出cpu的使用情况:
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。
sy:系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的 话,就需要注意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相 影响。
id:cpu空闲的时间比例。
wa:cpu等待未决的磁盘IO的时间比例。
iostat 用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量
-c 只显示CPU行
-d 显示磁盘行
-k 以千字节为单位显示磁盘输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标
avg-cpu: %user %nice %sys %iowait %idle
20.25 0.18 2.61 76.39 0.57
%iowait 等待本地I/O时CPU空闲时间的百分比
%idle 未等待本地I/O时CPU空闲时间的百分比
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
hda 9.86 284.34 84.48 685407 2036
每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。
6 gnome-system-monitor 打开ubuntu下的任务管理器
SCP:
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。
两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。
#在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下
scp -r [email protected]:/home/lk /root
#在A服务器上将/root/lk目录下所有的文件传输到B的/home/lk/cpfile目录下
scp -r /root/lk [email protected]:/home/lk/cpfile
1.命令格式:
scp [参数] [原路径] [目标路径]
2.命令功能:
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
3.命令参数:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
4.使用实例:
从本地服务器复制到远程服务器:
(1) 复制文件:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
(2) 复制目录:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;
SSH
安装ssh
#本地主机运行此条,实际上通常是默认安装client端程序的
sudo apt install openssh-client
#服务器运行此条命令安装
sudo apt install openssh-server
安装完默认启动,也可以手动启动
输入"sudo ps -e |grep ssh"-->回车-->有sshd,说明ssh服务已经启动,如果没有启动
sudo /etc/init.d/ssh start #服务器启动ssh-server服务,
sudo /etc/init.d/ssh stop #server停止ssh服务
sudo /etc/init.d/ssh restart #server重启ssh服务
连接ssh
ssh [email protected]
要输入的密码是服务器主机本身的登陆密码:
退出
用Ctrl+D或者exit
压缩与打包
zip是比较常用的文档压缩格式,最大的有点是跨平台,缺点是支持的压缩率不是很高。
#压缩
zip -r studio.zip directory_to_compress
#解压
unzip studio.zip
TAR好处是只消耗非常少的CPU及时间打包,只是一个打包工具,并不负责压缩。
tar -cvf studio.tar directory_to_compress
#解包到当前目录下
tar -xvf studio.tar
#到指定目录下
tar -xvf studio.tar -C /tmp/extract/
TAR.GZ 压缩时不会占用太多的CPU,就可以得到一个非常理想的压缩率。
#压缩
tar -zcvf studio.tar.gz directory_to_compress
#解压
#到当前目录
tar -zxvf studio.tar.gz
#到指定目录
tar -zxvf studio.tar.gz -C /tmp/extract/
TAR.BZ2 这种压缩格式是这几种方式中压缩率最好的
tar -jcvf studio.tar.bz2 directory_to_compress
#解压
#到当前目录
tar -jxvf studio.tar.bz2
#到指定目录
tar -jxvf studio.tar.bz2 -C /tmp/extract/
关于端口
查看服务端口
#查看已经连接的服务端口(ESTABLISHED)
netstat -a
#查看所有的服务端口(LISTEN,ESTABLISHED)
netstat -ap
查看指定端口
#查看指定端口,可以结合grep命令
netstat -ap | grep 8080
#也可以使用lsof命令
lsof -i:8080
关闭端口使用
#若要关闭使用这个端口的程序,使用kill + 对应的pid
kill -9 PID号
ps:kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。
关于本机或者服务器硬件信息查看
#如何查看电脑CPU核数
more /proc/cpuinfo |grep "physical id"|uniq|wc -l
#每个cpu是几核(假设cpu配置相同)
more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l
cat /proc/cpuinfo | grep processor
#1. 查看物理CPU的个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
#2. 查看逻辑CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l
#3. 查看CPU是几核
cat /proc/cpuinfo |grep "cores"|uniq
#4. 查看CPU的主频
cat /proc/cpuinfo |grep MHz|uniq
#(查看当前操作系统内核信息)
uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
#查看当前操作系统发行版信息
cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
#(说明实际上是两颗4核的CPU)
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
#如何获得CPU的详细信息:
cat /proc/cpuinfo
#逻辑CPU个数:
cat /proc/cpuinfo | grep "processor" | wc -l
#物理CPU个数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
#每个物理CPU中Core的个数:
cat /proc/cpuinfo | grep "cpu cores" | wc -l
#是否为超线程?
如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
#每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
cat /proc/cpuinfo | grep "siblings"
#lscpu
Architecture: i686 #架构686
CPU(s): 2 #逻辑cpu颗数是2
Thread(s) per core: 1 #每个核心线程数是1
Core(s) per socket: 2 #每个cpu插槽核数/每颗物理cpu核数是2
CPU socket(s): 1 #cpu插槽数是1
Vendor ID: GenuineIntel #cpu厂商ID是GenuineIntel
CPU family: 6 #cpu系列是6
Model: 23 #型号23
Stepping: 10 #步进是10
CPU MHz: 800.000 #cpu主频是800MHz
Virtualization: VT-x #cpu支持的虚拟化技术VT-x
L1d cache: 32K #一级缓存32K(google了下,这具体表示表示cpu的L1数据缓存为32k)
L1i cache: 32K #一级缓存32K(具体为L1指令缓存为32K)
L2 cache: 3072K #二级缓存3072K