这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » Linux下的常用命令(四)-scp,lsof

共2条 1/1 1 跳转至

Linux下的常用命令(四)-scp,lsof

高工
2018-10-24 08:31:25     打赏

文章内容概要: 

scp使用; 

lsof使用; 

(包括相关的参数和个人运行截图展示以及结果的分析)


scp命令:

Linux下远程拷贝文件,和cp命令有些类似(cp是在本机下进行拷贝)。也不会导致磁盘的IO非常高,所以,还是推荐使用。 

重要: scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。所以,Linux和Windows之间传输文件的时候,就得使用ftp工具咯~


重要参数: 

-r:递归的复制整个目录;


scp 参数 源端 目标端 ;//将源端内容拷贝到目标端 

如果源端或者目标端不是当前主机,需要加上 这样写:用户名@IP:路径(用户名可以省),这样执行完这条命令之后需要验证用户密码,如果前边没有写用户名的时候,执行完命令的时候需要输入用户名和密码 。 

1.本地文件拷贝到远程: 

scp 本地文件的路径 远程用户名@IP:路径


2.远程文件拷贝到本地: 

scp 远程用户名@IP:路径 本地的存放路径


由于此时此刻进行命令学习的我只有一个centos主机,所以就使用scp命令自己给自己拷贝呗(cp命令可以解决,但是今天为了学习scp才这么做的),之后scp使用的情况将会是可以互相ping通的主机之间通信(互发文件等)。 

将~/code目录拷贝到~/test目录下: 

 

红色方框中是我centos的IP地址,执行之后需要输入密码,运行OK,但是如果是拷贝到别的主机,还需要问你是否要连接的问题。 

执行之后的结果:


 

当然 scp的参数不止有-r,还有别的参数 。 

-4:只使用IPv4寻址; 

-6:只使用Ipv6寻址; 

-l limit ;限定用户传输时的带宽; 

-p:保留原文件的atime,ctime,mtime。 

上述没有加-p参数之后的执行结果:我们随便打开 code下的一个文件,执行stat hello.cpp




这里可以看到,3个时间都是刚刚执行scp的时间(系统时间不准了~~) 

关于3个时间 的解释,前边的文章已经分享过了,这里总结: 

只要读取文件atime就会改变; 

修改文件的内容会导致mtime的改变,但是mtime的改变会导致ctime的改变(文件的size等等信息已经发生改变了); 

修改文件的权限或者所有者的信息等等会改变ctime; 

-P port:指定数据传输使用到的端口号; 

-c cipher:以cipher将数据进行加密,提高了传输速度: 

 

直接执行这个命令可能会报错,提示:不认识这个arcfour,此时解决办法: 

/etc/ssh/sshd_config中加这条语句: 

Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com 

-C:数据压缩进行传输; 

其他的参数,可能目前我还是很少用到吧,后续用到再补充吧~


lsof命令:

列出系统当前打开的文件,由于Linux下一切皆文件,所以,这个命令不仅可以查看当前真正打开的文件,还可以访问网络连接和硬件(因为TCP或者UDP协议系统都在后台为应用程序分配了一个fd,该fd是应用程序与操作系统进行 通信的接口); 

使用:lsof 参数 文件 

文件可以是:普通文件;目录文件;字符设备或者块设备文件;管道(命名管道和匿名管道);链接库;等其他类型的文件; 

执行lsof: 


由于直接执行,显示的内容过于多,所以使用管道 和 head命令 取到前10行,这样也可以看到每列的属性信息; 

输出信息的含义: 

COMMAND:进程名称; 

PID:进程的ID; 

USER:进程的所有者; 

FD:文件描述符;(一直以为文件描述符fd就是非负的小整数,0,1,2分别表示标准输入标准输出和标准错误,原来他还可以有那么多信息) 

cwd:程序的当前工作目录; 

txt:该类型的文件是程序代码,如应用程序二进制文件本身; 

rtd:root 目录; 

mmap:内存映射设备; 

TYPE:文件的类型; 

DIR:目录; 

CHR:字符类型; 

BLK:块类型; 

UNIX:UNIX 套接字; 

FIFO:队列; 

IPv4:网络协议套接字; 

DEVICE:指定磁盘的名称; 

SIZE:文件的大小; 

NODE:索引节点(文件在磁盘上的标识); 

NAME:打开文件的确切名称; 

参数: 

-a:列出打开文件存在的进程; 



-c:列出指定进程名所打开的文件; 



-i 《条件》:符合条件的进程(4、6、协议、:端口等) 



IPv4或者Ipv6协议打开的文件: 



-p PID 列出指定进程号所打开的文件; 

1号进程所打开的文件: 



-d fd 列出指定fd所打开的文件; 

列出文件描述符为2的文件: 



+d 目录:列出指定目录下打开的文件 

列出当前目录下被打开的文件: 



-u 用户名:列出某个用户打开的文件: 

列出root用户打开的文件: 



+D:递归列出指定目录下打开的文件:




管理员
2018-10-24 09:04:39     打赏
2楼

谢谢楼主分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]