文章目录
scp
-
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
-
使用
本地复制到远程
其实从本地复制到本地也可以 (会改变owner之类的文件属性),不想修改的话就用-p
远程复制到本地
sshfs
远程文件/目录挂载到本地
- 集群的搭建常用命令
file ls -lh wc
file 查看文件的格式
ls -lh 查看文件信息
wc word count
paste
- -s (serial
- -d (delimiters
- - - - 一行三个数据
grep
- grep 目标字符串 文件
- -l
- -c
- -i ignore大小写
- -o 只输出匹配的部分
- -v --revert-match 显示不包含匹配文本的所有行
screen
后来被我用tmux取代了…
- screen -S <session_name>
- screen -X -S <session_name> quit
- screen -D -r <session_name> 踢掉该session上的用户然后登陆
tcpdump
基本参数
* nn 能显示数字就显示数字
> 单个n(第一个n)指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;
> 第二个n使得端口从应用名称转换成端口号后显示
* v 详细 vv更详细 vvv更相信( 一般一个v即可)
- 过滤条件用 and
- 协议直接写
tcpdump -nn -v src 192.185.1.85 and tcp and port 80
tcp 和 port 条件中间的and 可加可不加
* i 网卡参数最好加上
* s size 默认是68 0表示有多大抓多大
* w 保存到什么文件中去
@w=300
* r 读什么文件
* A ascii码 X十进制
* c 在收到指定的包的数目后,tcpdump就会停止;
tcpdump -n -r http.cap -l | awk '{print $3}' | sort -u
sort剔除重复项
-l是修改成行缓冲 ( 默认是全缓冲 全部输出到缓冲后才flush )
高级筛选
proto [ expr : size]
- proto就是protocol的意思
- expr用来指定数据报字节单位的偏移量
- 该偏移量相对于指定的协议层
- 默认的起始位置是0
- size表示从偏移量的位置开始提取多少个字节
- 可以为1,2,4
- 默认为1
nc
nc -nv ip port
* [ ] curl
??到底有啥用 和wget区别
find
find 目的地址及其子命令 -name “名字”
- 双引号可加可不加
- 名字可以使用通配符
- -maxdepth 一般得放在别的参数前面 不然会有警告
参数
* -type f 找文件 d 找目录
* find . -name “名字” # 当前命令
* -mtime +30 30天之前 -1 一天以内
* -size +10k # 注意这里的k不能是大写 但是M得是大写的
* -perm permission
* -maxdepth 1
xargs 和 exec
- 常常和xargs以及exec合起来一起用
find . -name "*.txt" | xargs -I file rm -rf file
find . -maxdepth 1 -name "*.txt" -exec cp '{}' /tmp \;
- 连着使用格式不太一样且exec的作用范围更广( 比如xargs就不能承接cp命令 )
- xargs 的I 参数哟关于指定前面的传过来的参数的替代名,所以我们也常常能看到xargs -I {} rm -rf {} 的用法
- exec在处理一些名字比较特殊的文件的时候,最好把 {} 写成 ‘{}’
exec的末尾的; (前面的\表示转义)表示一个参数一个参数地处理,如果是+的话,就是集合在一起处理。
也可以在最后使用加号(+) ,可以参考这个
- 优缺点比较
我觉得上面说的应该是文件名里面没有带空格,而不是文件没有带空格
grep
grep -n "rest$" /home/bash.log
- n参数会输出该匹配字段在查找文件的第几行
- 查找的内容支通配
- 可以直接这样查找而不必
cat file | grep “xx” 这么麻烦了
* -E 扩展的正则表达式 grep -E 等同于egrep
* --color 表示将匹配到的染上色显示
* -v 反选
find ,xargs , grep三者的结合使用
-
background
当前文件下有很多数据,我想要把原本的数据全部移进oldData文件夹 ( which原本就包含了一些旧数据 ),以提供新的空间收纳新的数据。 -
命令
find . -max-depth=1 |egrep -v ".|oldData" |xargs -I {} mv {} ./oldData
1. 指定find的深度为1
2. 使用egrep ,因为后面用到了正则表达式 |
3. 正则里面要包含一个 . 因为find . 命令默认会出现一个 . 文件夹代表当前目录
4. xargs的-I 参数就不说了
awk
基本参数
用来统计文本的
awk '{print $NF}' test.txt
awk '{print $1}' test.txt
# 取出第一列和最后一列然后中间用冒号分隔
awk -F: '{print $1":"$NF}' test.txt
- $NF表示最后以列
- 双引号表示添加的意思
- F参数是间隔符 ( 默认是空格 怎么下面也有带F参数但似乎没用的情况啊…
- 单引号里面带双引号?
高级命令
# 满足筛选条件的输出
cat xxx.txt | awk -F: '$3>=1000 {print $1 $7}'
# 输出直接是一个值
ip_add = ${ ifconfig | grep "bcast" | awk '{print $2}' }
> 192.168.1.15
# 打印的时候带上表头
awk -F: ‘BEGIN {print "NAME \t SHELL"} $3>1000 { print $1 "\t" $7 }’
BEGIN和END里面的只会在最开始和最后执行一次 ( 小写也可以 )