Linux - 创建的流程

时间:2013-11-23 18:28:07

标签: linux shell process ssh ps

我是Linux Shell的新手,并且在某项任务中遇到了困难: 我们应该使用ssh连接到linux机器。然后我们应该发出ls命令并使用ps和pstree来查看我们在机器中创建的进程以使ls命令工作。然后我们需要找出这些过程的RUID和EUID。并解释在途中访问了哪些文件以及原因。

我知道网上有很多关于shell命令的文档,所以当然我尝试先使用google解决问题。我发现了如何使用ps -ef列出所有进程,以及如何获取特定进程的RUID或EUID。 但是,我怎样才能看到帮助我实现ls命令的进程?如果我首先执行ls然后执行ps,则ls进程已经完成,并且唯一的活动进程是ps和ssh进程... 我也不知道作业中的文件是什么意思。

2 个答案:

答案 0 :(得分:2)

您必须确保ls至少花费一些时间。您可以尝试使用其中包含一些数据的目录ls -R(递归)。找到合适的目录后(使用/作为最后的手段,但可以非常长)启动lspsssh,将ls发送至后台:

$ ssh host "ls -R >>/dev/null & pstree -u user" | grep ls
sshd---bash-+-ls

您看到创建了sshd进程以及bash进程,最后创建了ls进程。

查找EUID和RUID;使用以下构造:

$ ssh host "ls -R >> /dev/null & ps -o ruid,euid -p \$!"
 RUID  EUID
  501   501

请注意,$!会返回上一个命令的pid(此处为ls),并且需要使用\进行转义,因为我们不希望它在本地计算机上解析但是而是偏远的。

要查找打开的文件,您可以使用stracelsof而不是ps使用相同的构造(左侧为exercice,请参阅man strace,{{1 }}})序列中的每个进程(man lsofsshdbash),也可能是本地ls命令。

答案 1 :(得分:1)

我怀疑设置作业的人并没有真正考虑到这一点或试一试。

ls在任何没有停留在20世纪80年代时间扭曲的机器上快速完成 ,那么你应该如何放慢速度呢?使用调试器?这是一项先进的技术。

此外,我将让您了解启动哪些进程以使ls命令正常工作...... ls那是。再说一遍,除非这是我从未听说过的20世纪80年代的一些奇怪的回归。

向投案人员投诉。