Linux 系统相关命令
查看进程中的线程
先通过 ps 或者 top 命令查看进程信息(PID),然后使用 ps 命令查看该进程的线程信息。
1  | ps -T -p <PID>  | 

查看端口被哪个进程占用
使用 lsof 命令和 -i 选项可以查看指定端口被哪个进程占用。
1  | lsof -i :<port>  | 

或者使用 netstat 命令:
1  | netstat -natp | grep :<port>  | 
查看特定进程占用的端口号
使用 netstat 命令和 grep 过滤器可以查看特定进程占用的端口号。
1  | netstat -tulnp | grep <PID>  | 
-tulnp 选项的含义:
-t:显示 TCP 端口-u:显示 UDP 端口-l:显示监听状态的端口(如果是-a则显示所有端口)-n:以数字形式显示端口号-p:显示进程信息

或者使用 lsof 命令:
1  | lsof -i -P -n | grep <PID>  | 
-P 选项表示以数字形式显示端口号,-n 选项表示不解析主机名,-i 选项表示显示所有网络连接信息。
只要熟悉查看所有监听状态端口的命令和参数,然后通过 grep 过滤器来查找特定进程的端口号即可。
如果只查看 TCP 端口,可以使用:
1  | netstat -tnlp | grep <PID>  | 
统计 Linux 系统的 TCP/UDP 连接数
首先还是使用 netstat 命令来查看所有的 TCP 和 UDP 连接状态。
1  | netstat -tanp  | 
然后使用 grep 命令来过滤出 TCP 或 UDP 连接,并使用 wc -l 来统计行数。
1  | netstat -tanp | grep 'ESTABLISHED' | wc -l  | 
UDP 连接的统计方法类似:
1  | netstat -uanp | grep 'ESTABLISHED' | wc -l  | 

查看系统的网络连接状态
Linux 系统文件操作
查看最近修改的文件
查看当前文件夹下所有文件的命令是
1  | ls -l  | 
在此基础上,可以使用 -t 选项来按修改时间排序,-r 选项来逆序显示。
1  | ls -lt  | 
修改文件权限
文件和目录的权限有rwx 三种,分别表示读、写、执行权限。又有三类用户,分别是所有者、同组用户和其他用户。
1  | chmod [权限设置] [文件名]  | 
1  | chmod u+x file.txt # 给文件所有者添加执行权限  | 
1  | chmod 755 file.txt # 设置文件所有者可读可写可执行,同组用户和其他用户可读可执行  | 
1  | chmod -R 755 dir/ # 递归修改目录及其子目录下所有文件的权限  | 
根据文件名查找文件
1  | find /path/to/search -name "filename"  | 
find 命令可以在指定路径下查找文件,-name 选项用于指定文件名。
查看日志的最后 n 行
使用tail 命令可以查看日志文件的最后几行。
1  | tail -n <number_of_lines> /path/to/logfile  | 
如果需要实时查看日志文件的更新,可以使用 -f 选项:
1  | tail -f /path/to/logfile  | 
查找文件中包含特定内容的行
使用 grep 命令可以查找文件中包含特定内容的行。
常用的 grep 命令选项有:
-i:忽略大小写-n:显示匹配行的行号-r:递归查找-l:只显示包含指定内容的文件名-o:只输出匹配的部分
1  | grep "search_string" /path/to/file  | 
如果需要递归查找当前目录及其子目录下的所有文件,可以使用 -r 选项:
1  | grep -rl "search_string" /path/to/directory  | 
如果需要查找多个文件,并显示匹配行的行号,可以使用 -n 选项:
1  | grep -n "search_string" /path/to/file1 /path/to/file2  | 
统计日志文件中出现特定字符串的次数
可以用于统计诸如数据库连接错误出现次数等情况。
使用 grep 命令结合 wc -l 可以统计日志文件中出现特定字符串的次数。
1  | grep -o "search_string" /path/to/logfile | wc -l  | 
grep -o 选项会只输出匹配的部分,wc -l 会统计行数,从而得到出现次数。
替换文件中的内容
使用 sed 命令可以替换文件中的内容。
1  | sed -i 's/old_string/new_string/g' /path/to/file  | 
-i 选项表示直接修改文件,s/old_string/new_string/g 表示将文件中的 old_string 替换为 new_string,g 表示全局替换。

