top(bash):显示python脚本的名称,而不是";python“;
我的问题是:我在远程机器的后台运行了很多python脚本。有些需要很多天。当我键入top(bash):显示python脚本的名称,而不是";python“;,python,bash,Python,Bash,我的问题是:我在远程机器的后台运行了很多python脚本。有些需要很多天。当我键入top-U username检查哪个脚本结束了,哪个脚本没有结束时,我会得到一个长列表,如下所示: 54658 user 20 0 7963464 2.9g 13684 R 100.3 0.8 5921:33 python3 54982 user
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+xscriptname
使脚本本身成为一个可执行文件,但没有得到任何改进。我仍然看到python3
2) 如果我按照建议执行ps-U username-o pid,cmd,我会得到一个冗长的进程列表,这并不是很方便
这对我来说似乎很奇怪,但我一直在寻找它,似乎没有其他类似的问题,所以它不应该是重复的。如果是,请将答案链接到我 一个简单的
grep
会对你有所帮助
ps -axo pid,cmd | grep [p]ython
您甚至可以根据运行脚本的方式进行筛选
ps -axo pid,cmd | egrep '^[0-9]+ python .*'
请注意,这仅从
ps
的输出中过滤单词python
,top
命令有许多选项来调整其显示内容。在本例中,您可能希望使用-c
选项查看用于启动脚本的实际命令行。那么,试试top-c-U username
如何执行python脚本?您的流程对象是否有权访问cmdline参数?ps-U uname-o pid,cmd | egrep'progName1 | progName2 |……
?祝你好运。@TheIncorrigible1I通过python3 name.py&
执行脚本。他们通常无权访问cmdline参数。@Sheller非常感谢。这并不完全是我所追求的,但它仍然是一个巨大的进步。特别是如果将-c
选项添加到top
,如top-c-U用户名
,则将'prog1 | prog2…'
替换为*.py
,您应该能够看到启动脚本时运行的命令行,如python3 name.py
。您是否有格式化要求,或者只需要检查脚本是否仍在运行?只需检查脚本是否正在运行即可。然而,@johnanderson在对这个问题的评论中给出了正确的答案。无论如何谢谢你,你的回答很有用!