当我从bash检查进程时,它会显示:
In [42]: !ps
PID TTY TIME CMD
417 ttys000 0:00.49 -bash
7783 ttys000 0:06.50 /Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython
pid 7783似乎同时运行两个命令,
请提供任何有助于理解的提示吗?
答案 0 :(得分:1)
它仅运行一个命令,但带有一个参数:
/Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython
^ command ^ argument
Python脚本不能直接执行。需要一个解释器才能实际运行它们。同样,在您的情况下,命令是python
解释器,参数是ipython
脚本。
直接执行脚本时,操作系统会在内部窥视一下它是否具有shebang。该行以#!
(实际上是字节序列0x2321
)开头,后跟用于运行文件的程序的路径。例如,在我的系统上,ipython
脚本指向python3.7
解释器:
$ head -1 $(which ipython3)
#!/usr/local/opt/python/bin/python3.7
调用脚本会自动扩展为使用脚本调用shebang程序。因此,您永远不会看到实际的脚本本身在运行,只有运行脚本的解释器。
$ ipython3 -c '!ps' | grep ipython3
5764 ttys004 0:00.37 /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python /Users/miyagi/Library/Python/3.7/bin/ipython3 -c !ps