linux命令
for i in /var/lib/docker/*; do echo $i; find $i |wc -l|sort -nr; done #通过统计查找文件最多的目录
du -sh * #查目录大小
fdisk -l |grep Disk #硬盘大小
wc -l #行数
wc -w #单词数
wc -c #字节数
uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令
head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L
hostname # 查看计算机名的linux系统信息命令
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备的linux系统信息命令
lsmod # 列出加载的内核模块
env # 查看环境变量资源
free -m # 查看内存使用量和交换区使用量
df -hl /var/lib/docker #查看可用容量
df -h # 查看各分区使用情况
du -sh # 查看指定目录的大小
uptime # 查看系统运行时间、用户数、负载
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况网络
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s #查看网络统计信息进程
ps -ef # 查看所有进程
top # 实时显示进程状态用户
w # 查看活动用户
id # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务服务
chkconfig –list # 列出所有系统服务
chkconfig –list | grep on # 列出所有启动的系统服务程序
rpm -qa # 查看所有安装的软件包
cat /proc/cpuinfo #查看CPU相关参数的linux系统命令
cat /proc/partitions #查看linux硬盘和分区信息的系统信息命令
cat /proc/meminfo #查看linux系统内存信息的linux系统命令
cat /proc/version #查看版本,类似uname -r
cat /proc/ioports #查看设备io端口
cat /proc/interrupts #查看中断
cat /proc/pci #查看pci设备的信息
cat /proc/swaps #查看所有swap分区的信息
cat /proc/loadavg # 查看系统负载磁盘和分区
ls | sort -n 排序
cat `ls | sort -n` > /tmp/a 分片上传手动合并文件
sha1sum /tmp/a
find 与grep
find . -name '*.php' | xargs grep 'params' --color
find . -name '*.conf' | xargs grep 'swoole_test' --color
find . -name "*.cpp" | xargs rm #删除当前目录下所有.cpp文件
#在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的,删除它们,有安全提示。Exec没有
find . -name "*.conf" -mtime +5 -ok rm { } \;
Tail -f xx.log | grep ‘dubbo’
scp命令
Scp ./nginx.conf root@192.17.162.96:/home/jin/ 上传文件
Scp root@192.17.162.96:/home/jin/ ./ 下载文件
Scp -r ./nginx root@192.17.162.96:/home/jin/ 上传目录
Scp -r root@192.17.162.96:/home/jin/nginx ./ 下载目录
端口
#Window 下
netstat -aon|findstr "8080" #查看指定端口的占用情况
taskkill /pid 4136 -t -f #直接强制杀死指定端口
#Linux下
ps -ef | grep 8023 #查进程
netstat -anp | grep 8023 #查端口
netstat -apn | grep ssh
kill -9 8080 kill -9 nginx #杀死进程
grep 8023 * --color
grep listen * --color
tmux
tmux new -s jin 新建会话
ctrl+b s 会话环境查看会话列表
ctrl+b d 退出会话环境
tmux a -t jin 从终端环境进入会话
窗口
ctrl+b c 创建窗口
ctrl+b , 修改窗口名
ctrl+b & 关闭当前窗口
ctrl+b w 通过上、下键切换窗口
窗格
ctrl+b % 垂直分屏
ctrl+b " 水平分屏
ctrl+b Up|Down|Left|Right 根据按箭方向选择切换到某个pane。
ctrl+b x 关闭当前使用中的pane
docker 命令
docker system df #类似于Linux上的df命令,用于查看Docker的磁盘使用情况
docker system prune#命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像
vim命令
复制 删除 剪切
3yl #字母
2yy #复制2行
5yw #单词
y$ #复制光标所在位置到行尾内容到缓存区
y^ #复制光标所在位置到行首内容到缓存区
:3,7y #复制3-7行的数据
dd与yy对应有这些功能
cc与yy对应有这些功能
ea #在单词后面插入
cw #从当前光标截取到下个单词的开头,修改整个单词
c$ #修改从光标到行尾的内容
c^ #修改从光标到行首的内容
yw #复制从光标开始到词尾的字符
y^ #复制从光标到行首的内容
常用
:set nu
:set nonu
:set fileformat=unix #win上传的文件,转下格式
/xx n/N #下/上匹配
p/P #光标在第 20 行,且已经复制了 10 行数据,大P 原本的第 20 行会被推到变成 30 行
u 撤销 对应 ctrl+r 恢复撤销
. #重复前一动作
X/x #删除光标前/后的字符 可以5x删除多个
J #合并为一行
:%s/hello/want/g #在全文中,把hello 替换为 want
:3,8s/hello/want/g #在3-8行间,把hello 替换为 want
:3,$s/hello/want/gc #在3行到最后行,把hello 替换为 want, 且在替换前提示用户确认是否进行替换
I #光标所在行 行首插入
a #光标后一字符插入
A #光标所在行 行尾插入
o #光标所在行 下一行插入
O #光标所在行 上一行插入
s #光标所在字符删除 插入
S #光标所在行删除 插入
光标移动
gg #第一行
G #最后一行
10G 或 :10 #指定第10行
5 enter #往下5行
5 space #往右5个字符
0 或 ^ #移至该行之首
$ #移至该行之末
w #跳到下个单词的开头 word
e #跳到下个单词的结尾 end
b #跳到上个单词的开头
H #跳到屏幕的最上方第一个字符 High
M #跳到屏幕的中间行的第一个字符 Middle
L #跳到屏幕的最下方第一个字符 LOW
h、j、k、l #分别控制光标左、下、上、右移一格
解压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
其他
CGI
CGI的英文是(COMMON GATEWAY INTERFACE)公共网关接口,它的作用就是帮助服务器与语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需要一个沟通转换的过程,而CGI就是这个沟通的协议。
nginx服务器在接受到浏览器传递过来的数据后,如果请求的是静态的页面或者图片等无需动态处理的则会直接根据请求的url找到其位置然后返回给浏览器,这里无需php参与,但是如果是一个动态的页面请求,这个时候nginx就必须与php通信,这个时候就会需要用到cgi协议,将请求数据转换成php能理解的信息,然后php根据这些信息返回的信息也要通过cgi协议转换成nginx可以理解的信息,最后nginx接到这些信息再返回给浏览器。
fast-cgi:
传统的cgi协议在每次连接请求时,会开启一个进程进行处理,处理完毕会关闭该进程,因此下次连接,又要再次开启一个进程进行处理,因此有多少个连接就有多少个cgi进程,这也就是为什么传统的cgi会显得缓慢的原因,因此过多的进程会消耗资源和内存。
而fast-cgi则是一个进程可以处理多个请求,和上面的cgi协议完全不一样,cgi是一个进程只能处理一个请求,这样就会导致大量的cgi程序,因此会给服务器带来负担。
php-cgi:
php-cgi是php提供给web serve也就是http前端服务器的cgi协议接口程序,当每次接到http前端服务器的请求都会开启一个php-cgi进程进行处理,而且开启的php-cgi的过程中会先要重载配置,数据结构以及初始化运行环境,如果更新了php配置,那么就需要重启php-cgi才能生效,例如phpstudy就是这种情况。
php-fpm:
php-fpm是php提供给web serve也就是http前端服务器的fastcgi协议接口程序,它不会像php-cgi一样每次连接都会重新开启一个进程,处理完请求又关闭这个进程,而是允许一个进程对多个连接进行处理,而不会立即关闭这个进程,而是会接着处理下一个连接。它可以说是php-cgi的一个管理程序,是对php-cgi的改进。
php-fpm会开启多个php-cgi程序,并且php-fpm常驻内存,每次web serve服务器发送连接过来的时候,php-fpm将连接信息分配给下面其中的一个子程序php-cgi进行处理,处理完毕这个php-cgi并不会关闭,而是继续等待下一个连接,这也是fast-cgi加速的原理,但是由于php-fpm是多进程的,而一个php-cgi基本消耗7-25M内存,因此如果连接过多就会导致内存消耗过大,引发一些问题,例如nginx里的502错误。
同时php-fpm还附带一些其他的功能:
例如平滑过渡配置更改,普通的php-cgi在每次更改配置后,需要重新启动才能初始化新的配置,而php-fpm是不需要,php-fpm分将新的连接发送给新的子程序php-cgi,这个时候加载的是新的配置,而原先正在运行的php-cgi还是使用的原先的配置,等到这个连接后下一次连接的时候会使用新的配置初始化,这就是平滑过渡。
php目录/php-cgi -b ‘127.0.0.1:9002’ #Window下nginx要开启 Php-cgi
Ps -ef | grep nginx #找nginx程序路径
nginx -t # 找nginx配置文件路径
#ping可以查网速而无法判定出问题的节点,而tracert可以判定出问题的节点,但比较长。简单来说ping的是查目的的,tracert是查过程的。
tracert www.baidu.com
Git checkout -b dev origin/dev #远程先开好分支然后拉到本地
git add . -f -- path #强制添加被git忽略的文件
压测
ab
-n :总共的请求执行数,缺省是1;
-c: 并发数,缺省是1;
-t:测试所进行的总时间,秒为单位,缺省50000s
-p:POST时的数据文件
-w: 以HTML表的格式输出结果
wrk
#100并发的情况下,共测试访问index.php脚本1000次,并将测试结果保存到c:\1.html文件中。
ab -n 1000 -c 100 -w http://localhost/index.php >>c:\1.html
#4个线程 保持300个连接进行30s的压测
wrk -t 4 -c300 -d30s --latency "http://www.baidu.com/"