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
表示全局替换。