Linux 系统相关命令

查看进程中的线程

先通过 ps 或者 top 命令查看进程信息(PID),然后使用 ps 命令查看该进程的线程信息。

1
ps -T -p <PID>

PS 查看线程

查看端口被哪个进程占用

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

1
lsof -i :<port>

lsof 查看端口

或者使用 netstat 命令:

1
netstat -natp | grep :<port>

查看特定进程占用的端口号

使用 netstat 命令和 grep 过滤器可以查看特定进程占用的端口号。

1
2
netstat -tulnp | grep <PID>
netstat -tulnp | grep <process_name>

-tulnp 选项的含义:

  • -t:显示 TCP 端口
  • -u:显示 UDP 端口
  • -l:显示监听状态的端口(如果是 -a 则显示所有端口)
  • -n:以数字形式显示端口号
  • -p:显示进程信息

netstat-lookup-ports-of-process

或者使用 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

netstat lookup established connections

查看系统的网络连接状态

Linux 系统文件操作

查看最近修改的文件

查看当前文件夹下所有文件的命令是

1
ls -l

在此基础上,可以使用 -t 选项来按修改时间排序,-r 选项来逆序显示。

1
2
3
ls -lt

ls -ltr

修改文件权限

文件和目录的权限有rwx 三种,分别表示读、写、执行权限。又有三类用户,分别是所有者、同组用户和其他用户。

1
chmod [权限设置] [文件名]
1
2
3
chmod u+x file.txt  # 给文件所有者添加执行权限
chmod g-w file.txt # 去掉文件同组用户的写权限
chmod o=r 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_stringg 表示全局替换。