我的问题:我在远程计算机上的后台运行了很多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
,则会得到大量的进程列表,这并不是很方便。
对我来说似乎很奇怪,但我一直在寻找它,而且看起来没有其他类似问题,因此它不应重复。如果是,请将我链接到答案。
答案 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
。