You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取其他用户运行进程的输出?

如何获取其他用户运行进程的输出?

嗨,这种情况我碰到过好几次了,有sudo权限的话其实好办,给你几个实用的方法:

  • 第一步:定位目标进程
    先列出该实验室成员的所有进程,找到目标进程的PID(进程ID,数字标识):

    • 用静态列表查看:ps -u <目标用户名>
    • 动态实时查看(更方便找活跃进程):top -u <目标用户名>
  • 直接查看进程的实时输出
    Linux系统里每个进程的标准输出、错误输出都对应/proc/<PID>/fd目录下的文件描述符:1是标准输出,2是标准错误输出。凭借sudo权限,你可以直接访问这些内容:

    • 查看当前已输出的内容:sudo cat /proc/<PID>/fd/1
    • 实时跟踪新输出(类似tail -f的效果):sudo tail -f /proc/<PID>/fd/1
      要是想同时看标准错误,把1换成2就行,或者合并查看两个输出:sudo tail -f /proc/<PID>/fd/1 /proc/<PID>/fd/2
  • 如果进程用了终端复用工具(screen/tmux)
    很多人跑长期进程会用screen或tmux来保持会话,这时候可以这么操作:

    1. 先切换到目标用户:sudo su - <目标用户名>
    2. 查看存在的会话:
      • 对于screen:screen -list
      • 对于tmux:tmux ls
    3. 接入对应的会话查看输出:
      • screen:screen -r <会话ID>
      • tmux:tmux attach -t <会话名/ID>
  • 如果进程输出被重定向到文件
    还是看/proc/<PID>/fd目录,里面的12可能指向某个具体文件(比如/home/<目标用户名>/process_output.log),这时候直接用sudo查看该文件即可:

    • 查看全部内容:sudo cat <文件路径>
    • 实时跟踪新内容:sudo tail -f <文件路径>

备注:内容来源于stack exchange,提问作者Bob

火山引擎 最新活动