🔨Linux 常用命令手册
本篇在技术进步到 aigc 能力非常充分的现在,作为一个 Manual 的功能文档已经没有继续更新的必要,仅作为笔记留档一下。
通过 SSH 连接服务器
通过以下的命令通过 ssh 登陆服务器:
 |  | 
服务器开放指定端口
安装
1$ sudo apt-get install iptables添加规则。比如以下命令打开 8000 端口:
1$ iptables -A INPUT -p tcp --dport 8000 -j ACCEPT删除此条添加的规则则使用下面的命令:
1$ iptables -D INPUT -p tcp --dport 8000 -j ACCEPT保存规则
1$ iptables-save持续化规则。安装
iptables-persistent支持:1$ sudo apt-get install iptables-persistent使用进行持续化规则:
1 2$ sudo netfilter-persistent save $ sudo netfilter-persistent reload以下命令查看所有的规则:
1$ iptables -L
服务器查看端口
使用 netstat 查看端口占用情况
There’s a few parameters to netstat that are useful for this :
-lor--listeningshows only the sockets currently listening for incoming connection.-aor--allshows all sockets currently in use.-tor--tcpshows the tcp sockets.-uor--udpshows the udp sockets.-nor--numericshows the hosts and ports as numbers, instead of resolving in dns and looking in /etc/services.-plten:查看正在被激活的互联网连接。
使用 nmap 扫描对公网开放 ip
Nmap (“Network Mapper”) is a free and open source utility for network exploration or security auditing:
 |  | 
杀死占用一个端口的进程
这个命令会给出绑定在指定端口上的进程的 PID:
 |  | 
加入 -k 选项后会杀死这个 PID 指向的进程:
 |  | 
以下命令可以列出所有在监听这个端口的进程:
 |  | 
要杀掉这个列举出的进程,可以使用以下的方式:
 |  | 
PostScript:查看所有进程 PID 并杀死:
 |  | 
关于反向代理 Ngingx
学习网址:https://www.jianshu.com/p/fd25a9c008a0
配置文件结构
apt-get 安装的 Nginx → 配置文件在目录 /etc/nginx/,该目录中有以下文件:
nginx.conf:这个是nginx的主配置文件,里面包含了当前目录的所有配置文件,只不过有的是注释状态,需要的时候自行开启(后面几个常用的)。conf.d/:这是一个目录,里面可以写我们自己自定义的配置文件,文件结尾一定是.conf才可以生效(当然也可以通过修改nginx.conf来取消这个限制)sites-enabled/:这里面的配置文件其实就是sites-available/里面的配置文件的软连接,但是由于nginx.conf默认包含的是这个文件夹,所以我们在sites-available/里面建立了新的站点之后,还要建立个软连接到sites-enabled/里面才行sites-available/:这里是我们的虚拟主机的目录,我们在在这里面可以创建多个虚拟主机。
反向代理
可以用下图表示 Nginx 的工作原理:
 |  | 
负载均衡
Nginx 提供了多种负载均衡的分配方式:
轮询(默认方式):每个请求按时间顺序逐一分配到后端服务器,如果后端服务器down掉,能自动剔除。
weight:给后台服务器设置的轮询几率的权值,用于后台服务器性能不均的情况。比如:1 2 3 4upstream bakend { server 192.168.159.10 weight=10; server 192.168.159.11 weight=10; }down:表示当前服务器不参与负载。max_fails:允许请求失败的次数,默认为 1。backup:其他所有非 backup 机器暂忙时,请求 backup 机器。这台机器的压力会最小。ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。比如:1 2 3 4 5upstream resinserver{ ip_hash; server 192.168.159.10:8080; server 192.168.159.11:8080; }fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。同上定义。
Debug
总结来源:https://serverfault.com/questions/579919/nginx-1-2-1-how-to-analyse-500-internal-server-error
查看 nginx 的配置文件是否正确:
1nginx -t查看 nginx 的运行状态:
1service nginx status查看配置文件中, log 文件中所在位置,查看日志:
1find /etc/nginx -name '*.conf' | xargs grep -i log
关于 socat
学习网址:
官网网址:
socat 是一个 netcat(nc) 的替代产品,可以称得上 nc++。作用是在两个流之间建立一个双向的通道。
socat 的地址类型很多,有 ip, tcp, udp, ipv6, pipe, exec, system, open, proxy, openssl等。
基本语法
 |  | 
几个常用的 address 描述方式如下:
-, STDIN, STDOUT 表示标准输入输出,可以就用一个横杠代替。/var/log/syslog打开一个文件作为数据流,可以是任意路径。TCP::建立一个 TCP 连接作为数据流,TCP 也可以替换为 UDP 。TCP-LISTEN: 建立 一个 TCP 监听端口,TCP 也可以替换为 UDP。EXEC: 执行一个程序作为数据流。
PostScript:以上规则中前面的 TCP 等都可以小写,在这些描述后可以附加一些选项,用逗号隔开。如 fork,reuseaddr,stdin,stdout,ctty 等。
示例
例子一,文件读取,将文件内容连接到标准输入输出流:
1 2 3 4 5 6 7$ socat - /var/www/html/flag.php $ socat - ./flag.php # 路径一般是绝对路径,如果要使用相对路径记得要加上 ./ $ echo "This is a test" | socat - /tmp/test.txt # 写入文件例子二,网络管理,连接远程端口与监听一个端口:
1 2 3$ socat - tcp:<ip_address>:<port> $ socat tcp-listen:8080 -例子三,端口转发,转发
tcp:1 2 3 4 5 6 7 8 9 10$ socat -d -d -lf /var/log/socat.log TCP4-LISTEN:15672,bind=192.168.1.252,reuseaddr,fork TCP4:172.17.0.15:15672 # 监听 192.168.1.252 网卡的 15672 端口,并将请求转发至 172.17.0.15 的 15672 端口。 # # 参数说明: # -d -d:代表调试信息的输出级别。 # -lf /var/log/socat.log:指定输出信息的文件保存位置。 # TCP4-LISTEN:15672 在本地建立一个 TCP IPv4 协议的监听端口,也就是转发端口。 # bind 指定监听绑定的 IP 地址,不绑定的话将监听服务器上可用的全部 IP。 # reuseaddr 绑定一个本地端口。 # fork TCP4:172.17.0.15:15672 指的是要转发到的服务器 IP 和端口,这里是 172.17.0.15 的 15672 端口。NAT映射:在外部公网服务器上执行:1$ socat tcp-listen:1234 tcp-listen:3389在内网服务器上执行:
1$ socat tcp:outerhost:1234 tcp:192.168.1.34:3389这样,你外部机器上的 3389 就映射在内网
192.168.1.34的 3389 端口上了。不过这样场景下更推荐内网穿透神器 FRP,如果你不会使用,可参考 推荐一款很好用的内网穿透工具–FRP 一文。例子四,文件传递:将文件
demo.tar.gz使用 2000 端口从192.168.1.252传到192.168.1.253, 文件传输完毕后会自动退出。在
192.168.1.252上执行:1$ socat -u open:demo.tar.gz tcp-listen:2000,reuseaddr在
192.168.1.253上执行:1$ socat -u tcp:192.168.1.252:2000 open:demo.tar.gz,create例子五,建立
shell。建立一个正向
shell。在服务器上执行:1 2 3 4# 在服务端 7005 端口建立一个 Shell。 $ socat TCP-LISTEN:7005,fork,reuseaddr EXEC:/bin/bash,pty,stderr # 或者 $ socat TCP-LISTEN:7005,fork,reuseaddr system:bash,pty,stderr在客户端执行:
1 2# 连接到服务器的 7005 端口,即可获得一个 Shell。readline 是 GNU 的命令行编辑器,具有历史功能。 $ socat readline tcp:127.0.0.1:7005反弹一个交互式的
shell。在服务器上执行:1$ socat -,raw,echo=0 tcp-listen:7005在客户端上执行:
1$ socat tcp-connect:192.168.1.252:7005 exec:'bash -li',pty,stderr,setsid,sigint,sane例子六,让
socat在后台运行。默认情况下 Socat 只在前台运行,如果要让 Socat 一直在后台运行,可以使用 nohup 命令来保证其在后台一直运行。1$ nohup socat -d -d -lf /var/log/socat.log TCP4-LISTEN:15672,bind=192.168.1.252,reuseaddr,fork TCP4:172.17.0.15:15672 &
关于 Latex
使用 latex 编译的命令(详细的帮助文档可以使用 --help 参数查看):
 |  | 
使用 MikTex 编译的命令(详细的帮助文档可以使用 --help 参数查看):
 |  | 
Latex 安装包目录管理命令(详细的帮助文档可以使用 --help 参数查看):
 |  | 
手动安装到一个安装目录之后,需要使用以下命令更新 LaTex 的安装包搜索路径:
 |  | 
关于 sagemath
基于 python2 的数学教学工具 sage-math。Quick Manual:
比特流转换为整数:
1ZZ([1,1,0,1],base=2)这种方式与
int('1101',2)转换的结果相反,它等价于int('1011', 2)整数转化为比特流:
1Integer(15).binary()在 sage 中,通过多项式建立一个有限域:
1sage: FF = GF(2**8, name='x', modulus=x^8 + x^4 + x^3 + x + 1)在这个有限域中,整数与多项式相互转化:
1 2 3 4 5 6 7# 整数转化为多项式 sage: FF.fetch_int(5) x^2 + 1 # 多项式转化为整数 sage: FF(x^2 + 1).integer_representation() 5
二进制文件分析相关
获取一个 .o 可执行文件的汇编代码:
 |  |