diff --git a/languages/bash.sh b/languages/bash.sh index a16c4b0..7797fd9 100644 --- a/languages/bash.sh +++ b/languages/bash.sh @@ -1,6 +1,6 @@ ############################################################################## # BASH CHEATSHEET (中文速查表) - by skywind (created on 2018/02/14) -# Version: 37, Last Modified: 2018/03/10 15:51 +# Version: 38, Last Modified: 2018/03/10 17:17 # https://github.com/skywind3000/awesome-cheatsheets ############################################################################## @@ -135,6 +135,7 @@ last # 显示最近用户登陆列表 last {user} # 显示登陆记录 lastb # 显示失败登陆记录 lastlog # 显示所有用户的最近登陆记录 +sudo {command} # 以 root 权限执行某命令 ############################################################################## @@ -147,16 +148,22 @@ ps aux # 查看所有进程详细信息,类似 ps -ef ps auxww # 查看所有进程,并且显示进程的完整启动命令 ps -u {user} # 查看某用户进程 ps axjf # 列出进程树 +ps xjf -u {user} # 列出某用户的进程树 ps -eo pid,user,command # 按用户指定的格式查看进程 ps aux | grep httpd # 查看名为 httpd 的所有进程 ps --ppid {pid} # 查看父进程为 pid 的所有进程 +pstree # 树形列出所有进程,pstree 默认一般不带,需安装 +pstree {user} # 进程树列出某用户的进程 +pstree -u # 树形列出所有进程以及所属用户 +pgrep {procname} # 搜索名字匹配的进程的 pid,比如 pgrep apache2 kill {pid} # 结束进程 kill -9 {pid} # 强制结束进程,9/SIGKILL 是强制不可捕获结束信号 kill -KILL {pid} # 强制执行进程,kill -9 的另外一种写法 kill -l # 查看所有信号 kill -l TERM # 查看 TERM 信号的编号 -killall {procname} # 按名称结束进程 +killall {procname} # 按名称结束所有进程 +pkill {procname} # 按名称结束进程,除名称外还可以有其他参数 top # 查看最活跃的进程 top -u {user} # 查看某用户最活跃的进程 @@ -178,6 +185,7 @@ disown {PID|JID} # 将进程从后台任务列表(jobs)移除 wait # 等待所有后台进程任务结束 + ############################################################################## # 常用命令:SSH / 系统信息 / 网络 ############################################################################## @@ -209,8 +217,10 @@ ping {host} # ping 远程主机并显示结果,CTRL+C 退出 ping -c N {host} # ping 远程主机 N 次 traceroute {host} # 侦测路由连通情况 mtr {host} # 高级版本 traceroute +host {domain} # DNS 查询,{domain} 前面可加 -a 查看详细信息 whois {domain} # 取得域名 whois 信息 dig {domain} # 取得域名 dns 信息 +route -n # 查看路由表 wget {url} # 下载文件,可加 --no-check-certificate 忽略 ssl 验证 wget -qO- {url} # 下载文件并输出到标准输出(不保存) @@ -486,7 +496,8 @@ done command ls # 忽略 alias 直接执行程序或者内建命令 ls builtin cd # 忽略 alias 直接运行内建的 cd 命令 -enable # 允许或者禁止 bash 的内建命令 +enable # 列出所有 bash 内置命令,或禁止某命令 +help {builtin_command} # 查看内置命令的帮助(仅限 bash 内置命令) eval $script # 对 script 变量中的字符串求值(执行) @@ -596,6 +607,48 @@ bind '"\eK":"\C-e"' # 绑定 ALT+K 为移动到行末,同 CTRL+ bind '"\e;":"ls -l\n"' # 绑定 ALT+; 为执行 ls -l 命令 +############################################################################## +# 网络管理:netstat / ip / ifconfig / nmap ... +############################################################################## + +netstat -an # 查看所有连接信息 +netstat -anp # 查看所有连接信息,包含进程信息(需要 sudo) +netstat -lntu # 显示所有正在监听的 TCP 和 UDP 信息 +netstat -lntup # 显示所有正在监听的 socket 及进程信息 +netstat -i # 显示网卡信息 +netstat -rn # 显示当前系统路由表,同 route -n + +ss -an # 比 netstat -an 更快速更详细 +ss -s # 统计 TCP 的 established, wait 等 + +ip a # 显示所有网络地址,同 ip address +ip a show eth1 # 显示网卡 IP 地址 +ip a add 172.16.1.23/24 dev eth1 # 添加网卡 IP 地址 +ip a del 172.16.1.23/24 dev eth1 # 删除网卡 IP 地址 +ip link show dev eth0 # 显示网卡设备属性 +ip link set eth1 up # 激活网卡 +ip link set eth1 down # 关闭网卡 +ip link set eth1 address {mac} # 修改 MAC 地址 +ip neighbour # 查看 ARP 缓存 +ip route # 查看路由表 +ip route add 10.1.0.0/24 via 10.0.0.253 dev eth0 # 添加静态路由 +ip route del 10.1.0.0/24 # 删除静态路由 + +ifconfig # 显示所有网卡和接口信息 +ifconfig -a # 显示所有网卡(包括开机没启动的)信息 +ifconfig eth0 # 指定设备显示信息 +ifconfig eth0 up # 激活网卡 +ifconfig eth0 down # 关闭网卡 +ifconfig eth0 192.168.120.56 # 给网卡配置 IP 地址 +ifconfig eth0 10.0.0.8 netmask 255.255.255.0 up # 配置 IP 并启动 +ifconfig eth0 hw ether 00:aa:bb:cc:dd:ee # 修改 MAC 地址 + +nmap 10.0.0.12 # 扫描主机 1-1000 端口 +nmap -p 1024-65535 10.0.0.12 # 扫描给定端口 +nmap 10.0.0.0/24 # 给定网段扫描局域网内所有主机 +nmap -O -sV 10.0.0.12 # 探测主机服务和操作系统版本 + + ############################################################################## # 有趣的命令 ############################################################################## @@ -632,6 +685,9 @@ chmod --reference f1 f2 # 将 f2 的权限设置成 f1 一模一样 # 列出最常使用的命令 history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head +# 列出所有网络状态:ESTABLISHED / TIME_WAIT / FIN_WAIT1 / FIN_WAIT2 +netstat -n | awk '/^tcp/ {++tt[$NF]} END {for (a in tt) print a, tt[a]}' + # 通过 SSH 来 mount 文件系统 sshfs name@server:/path/to/folder /path/to/mount/point