使用 Linux,我想跟踪以我的名义执行的可执行文件,包括整个命令行(实际上,每个 exec*() 都以我自己的用户身份完成)。我不控制的程序应该是为了处理任务,执行我传入的程序,但我想确保它这样做,以及它使用哪些选项。我无法控制的程序是偷偷摸摸的,并且似乎根据它应该为任务执行的程序的名称来改变行为,所以我不能传递一个 shell 脚本来记录信息并调用真实的程序。
是否有可能通知我在 Linux 系统上以我的用户身份执行的所有 exec*() 操作,包括完整的命令行?缺少ps
循环运行,即。我宁愿直接在我工作的系统上执行此操作,不需要 root 访问权限,但如果需要,我可以生成一个具有 root 访问权限的系统,安装程序并在那里进行调查。
使用 Ubuntu 12.4 LTS。
我偶尔会使用镐功能来git
定位感兴趣的更改。显然,这可能非常慢(这同样适用于,比如说hg grep
),但更重要的是它是突发的:一些结果聚集在一起,由不活动分开。
出于这些原因,我尝试在结果出现时读取结果,实际上通过将输出管道传输到less
(事实上,这是git
默认情况下的操作):当突发到来时,您不可能ctrl-S
对软件流程足够快地击中控制功能现在很有用。
但我经常遇到一个\xe2\x80\xa6 行为,less
如果我滚动得足够多,即使只有一行要在屏幕上显示的内容还没有从命令中出来git
,less
就会陷入困境,并且我会失去它的提示和大多数方式控制它,直到更多内容出现。现在,我明白为什么会发生这种情况,但如果这是 shell 命令的行为,我会使用ctrl-Z
恢复提示(然后执行bg
)。是否有等效的方法less
来恢复寻呼机提示?
在这种情况下,ctrl-Z
没有用:Unix 作业控制不适合管理屏幕内容的命令。此外,我不想回到 shell 提示符:通常,我想做的是检查我在反复按空格键时可能瞥见的内容,所以我不想留下更少的内容。
Ctrl-C
也是无用的:虽然它确实允许我恢复提示,但这还会导致收到的内容被冻结;也就是说,当我的好奇心得到满足并尝试返回到最新内容(按几下空格键或G
等)时,无论我等多久,都只会出现我所看到的内容。即使使用F
(tail -f
模式)。
我使用此命令来模拟git
行为:
(echo -e 'foo\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.' ; sleep 3 ; echo -e 'bar\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.' ; sleep 10; echo baz) | less\n
Run Code Online (Sandbox Code Playgroud)\n