1

我的问题:我在远程机器的后台运行了很多 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)正如这里所建议的,我尝试通过使脚本本身成为可执行文件chmod +x scriptname,但并没有变得更好。我仍然看到python3

2)如果我按照这里ps -U username -o pid,cmd的建议做,我会得到一个冗长的进程列表,这并不是很方便。

这对我来说似乎很奇怪,但我一直在寻找它,看起来没有其他这样的问题,所以它不应该是重复的。如果是,请将我链接到答案。

4

2 回答 2

3

top命令有许多选项来调整它显示的内容。在您的情况下,您可能希望使用该-c选项来查看用于启动脚本的实际命令行。所以,试试top -c -U username

于 2018-11-10T16:42:13.123 回答
0

一个简单的grep会帮助你

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

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

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

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

于 2018-11-10T02:26:10.393 回答