我正在将一些文件从外部驱动器复制到运行 Ubuntu 的桌面。我可以看到“文件操作”对话框,其中显示复制过程。
ps aux | grep
如何在命令中找到这个特定进程?我以为这会是一些cp
命令,但没有cp
命令运行!那么这种复制是如何进行的呢?请提供任何指示。
答案1
进程名称是nautilus
. Nautilus 包含自己的复制文件的代码,该代码在 nautilus 进程内部执行,而不是在子进程中执行。
您可以通过记录 Nautilus 的系统调用来亲自查看 Nautilus 运行的子进程斯特雷斯:
strace -f -o /tmp/nautilus.strace nautilus
系统clone
调用创建新进程(它是fork
)。系统execve
调用在同一进程中运行另一个程序。因此,运行另一个程序需要紧随clone
其后execve
。您可以快速查看 Nautilus 执行(或尝试)的程序
grep execve /tmp/nautilus.strace
您会发现 Nautilus 会为某些操作创建子进程,例如预览某些类型文件的内容,但它会自行进行文件复制。