警告
本文最后更新于 2017-11-06,文中内容可能已过时。
1
|
grep -rl "old_string" . | xargs sed -i 's/old_string/new_string/g'
|
- grep -rl: 递归搜索,仅打印包含“ old_string”的文件
- xargs: 接受
grep
命令的输出,并使其成为下一个命令(即sed
命令)的输入
- sed -i ‘s/old_string/new_string/g’: new_string替换old_string
1
2
3
|
cat /dev/null > /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log
cat /dev/null > $(docker inspect --format='{{.LogPath}}' CONTAINER_ID)
|
1
2
3
|
find /var/lib/docker/ -name "*.log" -exec ls -sh {} \; | sort -h -r | head -20
du -aSh /var/lib/docker/ | sort -h -r | head -n 10
|
1
2
3
4
5
|
# wget
wget -c https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz -O - | tar -xz -C /
# curl
curl -SL https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gz | tar -xvz -C /
|
SSH Port Forwarding Example
玩转SSH端口转发
local -> forwarder -> server
一般来讲,云主机的防火墙默认只打开了22端口,如果需要访问6379端口的话,需要修改防火墙。为了保证安全,防火墙需要配置允许访问的IP地址。但是,本地公网IP通常是网络提供商动态分配的,是不断变化的。这样的话,防火墙配置需要经常修改,就会很麻烦。
1
2
3
|
# ssh -L [<local host>:]<local port>:<remote host>:<remote port> <SSH hostname>
# 将server(192.168.1.123)的6379端口 转发到 本地的18080端口
ssh -L 127.0.0.1:18080:192.168.1.123:6379 FORWARDER_HOST
|
本地主机运行了一个服务,端口为18080,远程云主机需要访问这个服务。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# ssh -R [<local host>:]<local port>:<remote host>:<remote port> <SSH hostname>
# 将本地的6379端口,转发到PROXY上的18080端口
ssh -R 18080:127.0.0.1:6379 FORWARDER_HOST
# 默认情况下,OpenSSH仅允许PROXY连接转发的端口。但是,可以使用服务器配置文件sshd_config中的GatewayPorts选项进行控制。可以使用以下替代方法:
GatewayPorts yes
# 客户端可以指定一个IP地址,允许从该IP地址连接到端口。语法如下:在此示例中,仅允许从IP地址52.194.1.73到端口8080的连接。
GatewayPorts clientspecified
ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com
# 案例: 将公司内的 clinet1 和 clinet2 端口映射到 FORWARDER_HOST(公网主机)上的 2221, 2222端口
ssh -R 2221:clinet1:22 -R 2222:clinet1:22 FORWARDER_HOST
|
- 把远端ssh服务器当作了一个安全的代理服务器
- 远程云主机运行了多个服务,分别使用了不同端口,本地主机需要访问这些服务。
1
2
|
# ssh -D [<local host>:]<local port> <SSH hostname>
ssh -D localhost:44444 root@REMOTE_HOST
|
本地设置socket代理 127.0.0.1:4444
,就可以通过REMOTE_HOST访问了
家中A电脑
通过 云主机B 访问 公司C电脑
1
2
3
4
5
6
7
|
# 在C主机通过远程端口转发登陆云主机B
ssh -R localhost:2000:localhost:3000 [email protected]
# 在A电脑通过本地端口转发登录云主机B
ssh -L localhost:3000:localhost:2000 [email protected]
# 在A电脑通过 3000 端口访问
|
1
2
|
ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
chmod 400 ~/.ssh/[KEY_FILENAME]
|
[KEY_FILENAME]
:您要用于SSH密钥文件的名称。例如,文件名my-ssh-key
生成一个名为的私钥文件my-ssh-key
和一个名为的公钥文件my-ssh-key.pub
。
[USERNAME]
:连接到虚拟机的用户名。例如, [email protected]
或cloudysanfrancisco
。
1
2
3
|
ssh-keygen -p
ssh-keygen -p -f ~/.ssh/id_dsa
|
1
|
ssh-keygen -c -C "my new comment" -f ~/.ssh/my_ssh_key
|
1
2
|
# 通过本地的socks5代理访问google
curl -so /dev/null -w "%{http_code}" google.com -x socks5://127.0.0.1:1080
|
1
2
|
# 先跳过 skip*bs 大小的内容,然后复制 count*bs 大小的内容过来用 grep 查询。
dd if=FILE bs=1024 skip=1000 count=2000 | grep SEARCH_CONTENT
|
1
2
3
4
5
|
# 查看总的流入和流出流量
iftop
# 查看对应应用接收和发送的流量
nethogs
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
ulimit -a
# 查看系统打开句柄最大数量
cat /proc/sys/fs/file-max
# 查看打开句柄总数
lsof | awk '{print $2}' | wc -l
# 根据打开文件句柄的数量降序排列,其中第二列为进程ID:
lsof | awk '{print $2}' | sort | uniq -c | sort -nr | more
# 修改打开数
vim /etc/security/limits.conf
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
|
1
|
tcpdump -n -S -i eth0 host www.baidu.com and tcp port 80
|
Linux ip Command Examples