【如何查找nginx进程的配置文件?】
先执行一下nginx -t (这个命令是检查nginx配置是否正确,会显示对应的配置文件。假如刚好设置了nginx的执行路径到全局变量环境,这一步就能找到配置文件)
上面那招失效的话,可以用locate nginx.conf (这个速度比find快很多,因为是直接查询数据库,数据库内容每日更新一次,查询前先使用updatedb命令,手动更新数据库。)
但是上面的方式还是比较傻瓜式操作(我可能只是想强调locate比find快),谁能确保配置文件的名字是nginx.conf呢?要是有多个同名不同目录的nginx.conf呢?要是有多个nginx主进程呢?
正经操作
首先可以用ps -ef | grep nginx查看一下,也许能看到指定使用的配置文件(-c)
通过ps拿到相应的nginx主进程ID(比如:27229),查询当前运行的nginx路径:
ll /proc/27229/exe
通过nginx的执行路径(比如 /usr/local/nginx/sbin/nginx),使用-t参数即可获取该进程对应的配置文件路径
/usr/local/nginx/sbin/nginx -t
ps:找到的配置文件是主配置文件,一般还有其他子配置文件在vhost目录。
【查找指定文件后缀的文件中是否包含某个字符串】
在文件夹下所有的txt文件中检索某一个字符串(比如222):find . -name “*.txt” -type f | xargs grep 222
如果不指定文件后缀,可以直接使用:grep -rn 222
【查找目录下的所有文件中是否含有某个字符串】
grep -rn “要查找的字符串” * (当nginx配置文件很多的时候,可以快速定位到哪个配置文件包含你的项目名称或域名.比如 grep -rn ‘shop.com’ *)
-r 是递归查找
-n 是显示行号
【查找空文件和空目录】
查找空文件:find /data/ -type f -empty
查找空目录:find /data/ -type d -empty
【查看外网IP】
查看本机IP的两个网址:
https://www.cip.cc/
https://ifconfig.me/
所以在Linux查看外网IP可以执行下面命令:
curl ifconfig.me 或者 curl cip.cc
【通过域名查看主机(IP地址)】
host 域名
ping 域名
【Linux的计算器:bc】
使用 bc 的一种方式是进入它自己的shell。在那里你可以按行进行许多次计算:
直接bc加回车即可进入计算器模式。
使用 bc 的另一种方式是使用 echo 命令来传递运算式或命令:
echo ‘1+1’ | bc
【Linux:跨服务器复制文件和目录】
复制本地服务器文件word.txt到远程服务器的data目录下:
scp /data/word.txt root@124.223.89.33:/data
复制本地服务器/data/jay目录下的所有文件到远程服务器的/data目录下。jay目录也会拷贝过去(其实就是复制目录):
scp -r /data/jay root@124.223.89.33:/data
从远程服务器复制/data/remote.txt到本地服务器/data/jay目录:
scp root@124.223.89.33:/data/remote.txt /data/jay
从本地的window环境发送文件到远程服务器或接收远程服务器发送文件:
scp /c/Users/Administrator/Desktop/go学习路线.pdf root@81.68.81.16:/data/
scp root@81.68.81.16:/data/delimg.sh /c/Users/Administrator/Desktop/
系统相关的操作
【查看某个进程的线程数量】
1、通过ps获取到进程的id(比如19302),再执行:cat /proc/19302/status | grep Threads
2、top -H -p 进程id
【查看(多核)cpu的运行情况】
1、mpstat -P ALL 查看全部的cpu运行状况
2、sar -P ALL 查看全部的cpu运行状况
3、top命令,然后按数字“1”可监控每个逻辑CPU的状况
【Linux:查看某个用户正在运行的进程】
top -c -u用户,这个可以查看某个用户正在运行的进程,Ctrl+Z退出。(比如你可以实时监视你的cli脚本运行状态,包括cpu和内存的占用率)
【如何查看系统的负载】
1、uptime:显示系统在过去的1分钟、5分钟和15分钟内的平均负载。还能查看系统已经运行了多长时间、目前有多少登录用户。
uptime -s:显示机器启动时间
2、w: 除了查看负载,还能显示当前已经登陆系统的用户列表,并显示用户正在执行的指令。
3、top
load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
【Linux:初识lsof】
lsof(List Open Files) 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件。
是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件(lsof强大原因)。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因 为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
查看Linux打开的文件数量: lsof | wc -l
查看打开22端口的所有进程(查看端口占用):lsof -i:22
查看abc进程现在打开的文件: lsof -c abc
查看进程id为12的进程打开了哪些文件:lsof -p 12
【Linux:top命令的Cpu(s)和%CPU分别代表什么?】
Cpu(s)表示的是 所有用户进程占用整个cpu的平均值,由于每个核心占用的百分比不同,所以按平均值来算比较有参考意义。
而%CPU显示的是进程占用一个核的百分比,而不是整个cpu(12核)的百分比,有时候可能大于100,
那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100。
【Linux:iostat】
监控系统设备的IO负载情况(每秒的传输速度tps,即一次I/O请求和吞吐量)和cpu使用情况。
iostat 2 : 实时监控io负载情况,每隔两秒打印。
iostat -d 2 6:每2秒报告一次,持续6次。
iostat -d : 仅显示设备(磁盘)使用状态
iostat -c : 仅显示CPU使用情况
【Linux查看可使用的端口范围】
cat /proc/sys/net/ipv4/ip_local_port_range
1024 65000 (代表当前的限制是1024~65000,所以你就只能有63977个端口号可以使用)
ps:这里的端口是指源端口号。
源 IP 地址:源端口号 <----> 目标 IP 地址:目标端口号
【Linux利用tcpdump抓包】
针对单个端口抓包:tcpdump -i any -nn port 80
针对多个端口抓包:tcpdump -i any -nn port 111 or port 443
指定主机或域名抓包:tcpdump -i any -nn host www.baidu.com
指定多个主机抓包:tcpdump -i any -nn host www.baidu.com or www.zhihu.com
打开新的窗口执行 curl www.baidu.com。就能抓取到对应的包,看到三次握手和四次挥手。