【问题标题】:Linux jobs command - how to see the full path of the running processLinux作业命令-如何查看正在运行的进程的完整路径
【发布时间】:2015-04-02 16:01:21
【问题描述】:

我正在使用 Linux SUSE 11 并运行大量作业。 每个作业的路径都很长,例如:

cmd>/user/data/some/very/very/very/long/path/to/my/command/run_me param0 param1 param2

当我运行大量这些命令时,我想知道哪些已完成,哪些正在运行。一天后再说吧。 使用“工作”命令我只看到以下内容:

[1]  + Running                        ...
[2]  + Running                        ...
[3]  + Running                        ...
[4]  + Running                        ...

所以我不知道正在运行哪个确切的命令。

使用top 命令也无济于事,因为它显示的是进程,而不是我正在运行的确切脚本/程序。

我的外壳是/usr/bin/tcsh

【问题讨论】:

  • 你应该把你的shell改成zsh或者fish
  • 你应该有更短的可执行路径。例如,从~/bin/run_me(或/usr/local/bin/run_me/opt/bin/run_me ...)到/user/data/some/very/very/very/long/path/to/my/command/run_me建立一个符号链接
  • 或 Bash 或其他一些。我设法抑制了向海报提出这个建议的冲动,但现在猫已经出局了。 t?csh should be avoided 但我想每个人都已经知道了。

标签: linux shell tcsh suse


【解决方案1】:

tcsh 中,jobs -l 为您提供了一个包含 PID 的“长”列表。然后,您可以使用此编号来检查具有 ps 的作业或在 /proc 伪文件系统或其他任何东西中摸索。

% jobs -l
[1]  + 19038 Running                       tail --follow=name /path/to/long/and/complex /long/and/complex/files /and/so/on ...

从此列表中,您可以获取 19038 并查看它的实际作用。

% ps -o args= --width 1200 19945
tail --follow=name /path/to/long/and/complex /long/and/complex/files /and/so/on /really/long /etc/motd

还有

% tr '\0' '\n' </proc/19038/cmdline 
tail
--follow=name
/path/to/long/and/complex
/long/and/complex/files
/and/so/on
/really/long
/etc/motd

或者,有点混乱,top

% setenv COLUMNS 512

% top -b -n1 -c -p 19038

(输出太难看,无法在这里显示,也没有添加任何有用的东西。)

【讨论】:

  • jobs -l 给出相同的结果,但带有 pid 编号,例如:[2] - 8989 Running ... ps 只给出进程而不是执行的命令。
  • 但是你可以使用这个数字来检查例如/proc/8989/cmd准确获取您需要的信息。
  • 抱歉,我不明白如何检查 /proc/ID/cwd 文件夹?我可以在那里检查什么?如何从上面的示例中确定 param0 到 param2?
  • 对不起,错字(或者更确切地说,内存错误);那是/proc/8989/cmdline,其中 8989 是您要检查的 PID。这显示了完整的命令行,以零结尾。更新了详细信息的答案。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2018-12-02
  • 1970-01-01
  • 2013-05-21
相关资源
最近更新 更多