答案1
默认情况下,ps
仅显示附加到当前终端 (tty) 的进程:在您的情况下,您的 shell 和ps
它本身(都在pts/2
)。您需要解除此限制才能看到sleep
;例如
ps -e
请参阅man ps
参考资料 以了解可用于过滤进程的许多选项。
答案2
问题是当我创建第二个终端并输入“ps”时,没有
sleep
进程。
对于一些(不是全部)交互式 shell,sleep
可能是一个内置调用的 shell,例如睡觉(3)(正如cd
shell 内置调用一样目录(2))。
当这种情况发生时,你将看不到任何sleep
过程因为没有。那么过程就是睡觉(3)-ing 是你的Unix外壳;你甚至可以编写自己的 shell 解释器(查看窗扇一个简单但有点错误的例子)。
许多 Linux shell 都是开源软件(或自由软件),所以请研究他们的源代码,看看他们是否确实调用睡觉(3)或者睡觉(3)-或者甚至适当地民意调查(2)等...-另请参阅时间(7)和选择图(2)。阅读更多关于系统调用(2)并想想你的 shell 所做的事情(或者用跟踪(1)或者跟踪(1)或调试器)。
许多 Linux 发行版都有GNU bash就像通常的交互式 shell 一样。但你可以安装桀骜或者鱼或者英语作为您的登录 shell(使用chsh(1))。
我个人的偏好是zsh
(自动完成Debian 上的设施非常出色)。
考虑读一些教科书关于操作系统和/或编写您自己的代码Unix外壳作为练习,或扩展一些现有的(例如,通过添加sleep
内置的,如果没有内置的)。