在Linux环境中,如果你想要查看所有正在运行的进程,你可以使用ps命令结合grep命令来实现。ps命令用于显示当前进程的快照,而grep命令则用于搜索文本。
下面是一些常用的命令示例:
1. 查看所有包含"python"的进程
ps aux | grep python3
ps aux
: 是最常用的ps命令之一,用于显示系统上所有进程的详细信息。|
: 是管道符,用于将一个命令的输出作为另一个命令的输入。grep python3
: 搜索包含"python3"的行。
例如查看“py_pvet_dev”进行:
[root@ser61 pvet]# ps -ef |grep py_pvet_dev | grep -v gerp
root 368711 362354 0 09:16 pts/0 00:00:05 py_pvet_dev pvet_server.py
root 368743 368711 0 09:16 pts/0 00:00:00 py_pvet_dev pvet_server.py
root 368744 368711 0 09:16 pts/0 00:00:00 py_pvet_dev pvet_server.py
root 368745 368711 0 09:16 pts/0 00:00:00 py_pvet_dev pvet_server.py
root 378419 362354 0 09:35 pts/0 00:00:00 grep --color=auto py_pvet_dev
2. 仅显示Python进程的PID和命令
如果你只对进程的PID和执行的命令感兴趣,可以使用:
ps -ef | grep python3 | grep -v grep
ps -ef
以全格式显示所有进程的信息。- 第一个grep python3 用于搜索包含"python"的行。
- 第二个grep -v grep 用于排除包含"grep"的行,因为grep python3命令本身也会作为一个进程出现在列表中。
3. 使用pgrep直接查找PID
如果你只想要得到Python进程的PID,可以使用pgrep命令:
pgrep -l python3
pgrep
是一个查找进程的命令,比ps和grep组合使用更方便。-l
选项让pgrep不仅输出PID,还输出与PID相关联的命令名。
4. 使用pkill或kill终止进程
如果你找到了某个特定的Python进程并想要终止它,可以使用pkill(通过进程名)或kill(通过PID)命令:
通过进程名终止:
pkill python3
注意:这可能会终止所有名为"python3"的进程,请确保这是你想要的。
通过PID终止:
首先,使用上述方法之一找到PID,然后使用:
kill PID
或者,如果你需要强制终止进程:
kill -9 PID
请记得,在执行这些命令时要小心,特别是当你使用pkill或kill -9时,因为这会立即终止进程,不给进程执行任何清理操作的机会。
5. 查看进程资源
top
是一个常用的Linux命令,用于实时显示系统的性能信息,包括CPU使用率、内存使用情况、运行的进程等。它提供了一个动态更新的界面,让用户可以监控系统资源的使用情况。
以下是一些常见的用法和选项:
基本用法
top
这个命令会启动 top
工具,并显示当前系统中所有进程的资源使用情况。默认情况下,它会每隔几秒钟刷新一次数据。
常用快捷键
在 top
界面中,你可以使用以下快捷键来交互:
q
: 退出top
。h
: 显示帮助。k
: 终止一个进程。你需要输入要终止的进程ID(PID)。r
: 重新调整一个进程的优先级(renice)。u
: 按用户过滤进程。M
: 按内存使用排序。P
: 按CPU使用排序。T
: 按运行时间排序。
指定进程
如果你想只监控特定的进程,可以使用 -p
选项。例如:
top -p PID
其中 PID
是你要监控的进程的进程ID。这样,top
只会显示该特定进程的资源使用情况。
示例
假设你有一个进程ID为101938的进程,你想查看它的资源使用情况,可以运行:
ps -ef |grep py_pvet_dev | grep -v grep
root 101900 85316 0 15:45 pts/4 00:00:04 py_pvet_dev pvet_server.py
root 101938 101900 99 15:45 pts/4 00:09:22 py_pvet_dev pvet_server.py
root 101939 101900 0 15:45 pts/4 00:00:00 py_pvet_dev pvet_server.py
root 101940 101900 0 15:45 pts/4 00:00:00 py_pvet_dev pvet_server.py
top -p 101938
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
%Cpu(s): 73.5 us, 5.5 sy, 0.0 ni, 19.0 id, 2.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 32204864 total, 376536 free, 27830920 used, 3997408 buff/cache
KiB Swap: 33554428 total, 28466060 free, 5088368 used. 2665100 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
101938 root 20 0 1663500 106064 7864 R 99.3 0.3 8:09.42 py_pvet_dev
另附:
配置Linux防火墙规则的命令,使用iptables
工具来添加一条规则到INPUT链中,允许TCP协议的目标端口为5003的流量通过。
以下是对命令各部分的解释:
sudo
: 以超级用户权限执行命令。iptables
: 一个用于设置、维护和检查Linux内核中的IP包过滤规则的工具。-I INPUT
: 在INPUT链中插入一条规则。-p tcp
: 指定协议为TCP。--dport 5003
: 指定目标端口为5003。-j ACCEPT
: 指定匹配该规则的数据包的动作为ACCEPT(接受)。
关于是否可以省略sudo
,这取决于当前用户的权限。如果当前用户已经是root用户,那么可以省略sudo
,直接运行iptables
命令即可。例如:
iptables -I INPUT -p tcp --dport 5003 -j ACCEPT
但是,如果你不是root用户,或者没有适当的权限,那么必须使用sudo
来提升权限。否则,你会遇到“Permission denied”的错误。