screen
安装
1 2 3 4
| # CentOS yum install screen # Debian/Ubuntu apt install screen
|
创建
1 2 3 4 5
| # 创建一个叫Hello的虚拟终端 screen -S Hello screen -R Hello #使用-R创建,如果之前有创建唯一一个同名的screen,则直接进入之前创建的screen #使用-S创建和直接输入screen创建的虚拟终端,不会检录之前创建的screen(也就是会创建同名的screen)
|
Ctril+a,再按d ,回到主界面,screen后台运行,处于Detached
操作
1 2 3
| screen -ls # 查看已开的screen screen -r|R [pid/name] # 进入screen,pid/name:为虚拟终端PID或Name
|
kill掉screen
1 2
| screen -S {session_name} -X quit # kill 进入终端,输入exit,退出
|
两者本质一样,第一个在主终端指定screen并执行exit命令,第二个直接进入screen执行exit命令
ss(Socket Statistics )
ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。
常用选项
-h, –help 帮助
-V, –version 显示版本号
-t, –tcp 显示 TCP 协议的 sockets
-u, –udp 显示 UDP 协议的 sockets
-x, –unix 显示 unix domain sockets,与 -f 选项相同
-n, –numeric 不解析服务的名称,如 “22” 端口不会显示成 “ssh”
-l, –listening 只显示处于监听状态的端口
-p, –processes 显示监听端口的进程(Ubuntu 上需要 sudo)
-a, –all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
-r, –resolve 把 IP 解释为域名,把端口号解释为协议名称
例子
参考
https://cloud.tencent.com/developer/article/1721800
ag(递归搜索文件内容)
1
| apt-get install silversearcher-ag
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| ag类似grep 和 find,但是执行效率比后两者高。
ag -g <File Name> 类似于 find . -name <File Name>
ag -i PATTERN: 忽略大小写搜索含PATTERN文本
ag -A PATTERN:搜索含PATTERN文本,并显示匹配内容之后的n行文本,例如:ag -A 5 abc会显示搜索到的包含abc的行以及它之后5行的文本信息。
ag -B PATTERN:搜索含PATTERN文本,并显示匹配内容之前的n行文本
ag -C PATTERN:搜索含PATTERN文本,并同时显示匹配内容以及它前后各n行文本的内容。
ag --ignore-dir <Dir Name>:忽略某些文件目录进行搜索。
ag -w PATTERN: 全匹配搜索,只搜索与所搜内容完全匹配的文本。
ag --java PATTERN: 在java文件中搜索含PATTERN的文本。
ag --xml PATTERN:在XML文件中搜索含PATTERN的文本。
|
jq(处理json)
安装
1 2 3 4 5
| # Debian系,如 Ubuntu sudo apt-get install jq
# RedHat系, 如 CentOS yum install jq
|
使用
1 2 3 4 5 6
| cat json.txt | jq '.' #美化输出 cat json.txt | jq '.[0]' #输出列表中的第一个元素,可以使用[index]: cat json.txt | jq '.[0] | {name:.name,city:.address.city}' # 取出第0个,.name取出第0个name的值 cat json.txt | jq "[.[] | {name:.arrayBrowser[1].name,city:.address.city}]" # 如果希望把jq的输出当作一个数组,可以在前后加上[]:
|
1 2 3 4 5 6 7
| $ echo '{"abc": 1, "abcd": 2, "Foo": 3}' | jq 'keys' [ "Foo", "abc", "abcd" ]
|
1 2 3
| $ echo '{ "foo": 42, "bar": "something else", "baz": true}' | jq '.foo, .bar' 42 "something else"
|
1 2 3
| $ echo '[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]' | jq '.[] | .name' "JSON" "XML"
|
shellcheck(shell脚本静态检查工具,能够识别语法错误以及不规范的写法。)
1 2 3 4
| $ apt-get install shellcheck centos下:
$ yum -y install epel-release
|
fzf(命令行下模糊搜索工具)
安装
搭配zsh使用
1 2 3 4 5
| sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)" git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install source ~/.zshrc
|
使用
- ctrl-r 模糊匹配历史命令
- CTRL-T 查找目录下条目
在输出交换窗口里
Ctrl-J/Ctrl-K/Ctrl-N/Ctrlk-N可以用来将光标上下移动
Enter键用来选中条目, Ctrl-C/Ctrl-G/Esc用来退出
在多选模式下(-m), TAB和Shift-TAB用来多选
Mouse: 上下滚动, 选中, 双击; Shift-click或shift-scoll用于多选模式
fzf --preview 'cat {}' # 动态预览文本
axel(多线程下载工具,下载文件时可以替代curl、wget)
恢复未完成的下载(执行相同命令会自动继续下载)
不显示文件下载进度
tmux(终端复用工具,替代screen、nohup。)
1 2 3 4 5
| tmux new -s roclinux
tmux 默认起名0
|
1 2 3
| 第一步:按 Ctrl+B 组合键,然后松开。 第二步:再单独按一下 c 键。
|
1 2 3 4 5 6 7 8 9 10
| 第一步:按 Ctrl-B 组合键,然后松开。 第二步:按数字 0 键。
或 在会话中
$ tmux switch -t 0
$ tmux switch -t <session-name>
|
1 2 3 4 5 6 7 8 9 10
| 会话中 exit 或 ctrl+d
或
主机中
$ tmux kill-session -t 0
$ tmux kill-session -t <name>
|
1 2 3 4 5
| 第一步:输入组合键 Ctrl+B,然后松开。 第二步:输入字母 d。
或 tmux detach
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| # 开启新session tmux # 开启新session并命名 tmux new -s my_session
# 显示所有session tmux ls
# 使用session编号接入 tmux attach -t 0 # 使用session名称接入 tmux attach -t <session-name> tmux a -t name #简写
# 使用session编号kill tmux kill-session -t 0 # 使用session名称kill tmux kill-session -t <session-name>
# 使用session编号切换 tmux switch -t 0 # 使用session名称切换 tmux switch -t <session-name>
# 重命名会话 tmux rename-session -t 0 <new-name>
# 选择需要跳转的session会话 C + b s
# 重命名当前会话 C + b $
# 断开当前session C + b d
# 在当前session中多加一个window C + b c
# 在一个session中的多个window中作出选择 C + b w
# 关闭当前session中的当前window C + b x
# 进入tmux翻屏模式, 实现上下翻页 C + b [ ### 进入翻屏模式后PgUp PgDn 实现上下翻页(mac可以用fn + ↑ ↓实现上下翻页) ### q 退出翻屏模式
############# # 其他常用快捷键 ##############
C + b ! #关闭一个session中所有窗口 C + b % #将当前窗口分成左右两分 C + b " #将当前窗口分成上下两分 C + b 方向键 #让光标在不同的窗口中跳转 C + b 方向键 #按住C+b不放,同时按住方向键,可以调节光标所在窗口的大小
|