使用“ps”确定 UNIX 进程的工作目录的最佳方法是什么?

Chi*_*tel 6 command-line process ps shell-script ruby

我正在运行一个 Ruby 命令行脚本 ( rufus.sh),它最终调用Thread.new,它会产生一个 UNIX 进程,如下所示。我为 1 个以上的目录运行此脚本,ps如下所示。下面的最后一列(最右边)是COMMAND( COMD),它本质上是进程的名称。问题是COMMAND不包括工作目录(启动进程时的当前目录)。找出或包含它的最佳方法是什么COMMAND?谢谢,奇拉格

ps -ef | grep runner
web       7532     1  0 Oct08 ?        00:02:08 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb critical_alert start
web      21114     1  1 Oct09 ?        02:49:28 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb task start
web      19028     1  1 10:45 pts/0    00:00:34 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb task start
web      19029     1  0 10:45 pts/0    00:00:10 /usr/local/bin/ruby ./script/runner ./config/jobs/control.rb critical_alert start
Run Code Online (Sandbox Code Playgroud)

rah*_*hmu 6

我不确定这是否能回答您的问题,但pwdx可以为您提供任何进程的当前工作目录。

像这样:

pwdx <PID>
Run Code Online (Sandbox Code Playgroud)

你也可以按照 Ulrich Schwarz 说的去做,然后跑

ls -l /proc/PID/cwd
Run Code Online (Sandbox Code Playgroud)