top(bash):显示python脚本的名称,而不是“ python”

时间:2018-11-10 00:38:01

标签: python bash

我的问题:我在远程计算机上的后台运行了很多python脚本。其中一些需要很多天。当我键入top -U username来检查哪个脚本结束和哪个脚本没有结束时,我会看到一长串这样的列表:

54658 user   20   0 7963464   2.9g  13684 R 100.3  0.8   5921:33 python3                                                                          
54982 user   20   0 6243164   1.2g  13696 R 100.3  0.3   5920:46 python3 
98740 user   20   0  737256 508340   5040 S   0.0  0.1  5226:56 python

问题是,如您所见,每个进程ID都具有python(或python3)作为关联命令。这使得无法理解进程ID和脚本之间的对应关系。我真的很想在那里显示进程的名称(就像运行以C编写的可执行文件时一样)。有什么方法可以获取它吗?

请注意:

1)如建议here所示,我尝试通过chmod +x scriptname使脚本本身成为可执行文件,但没有任何改善。我仍然看到python3

2)如果我按照建议的here进行ps -U username -o pid,cmd,则会得到大量的进程列表,这并不是很方便。

对我来说似乎很奇怪,但我一直在寻找它,而且看起来没有其他类似问题,因此它不应重复。如果是,请将我链接到答案。

2 个答案:

答案 0 :(得分:2)

top命令具有许多选项来调整其显示内容。在您的情况下,您可能想使用-c选项查看用于启动脚本的实际命令行。因此,请尝试top -c -U username

答案 1 :(得分:0)

简单的grep会为您提供帮助

ps -axo pid,cmd | grep [p]ython

您甚至可以根据脚本的运行方式进行过滤

ps -axo pid,cmd | egrep '^[0-9]+ python .*'

请注意,这只会从python的输出中过滤单词ps