追加読書

追加読書

jobs各ジョブが呼び出されたときの出力にジョブディレクトリ(必ずしも各ジョブの現在のジョブディレクトリである必要はありません)が含まれていることは正しいですか?

$ jobs -l | grep JDBC
[15]  20422 Running   PDFXCview all.pdf &  (wd: ~/mydata/dirlinks/cs/SQL/API/JDBC/general/official/tutorials)
[20]  20542 Running   PDFXCview all.pdf &  (wd: ~/mydata/dirlinks/cs/SQL/API/JDBC/general/wikipedia)

同様に、ps各プロセスが呼び出されたときに各プロセスの以前の作業ディレクトリをインポートすることは可能ですか?

呼び出しpgrep時に各プロセスの前の作業ディレクトリのパス名(文字列)を取得できますかpgrep ... <pattern_in_working_dir_pathname>

プロセス呼び出し時に、作業ディレクトリにあるキーワードでプロセスを検索したいと思います。

ありがとうございます。

ベストアンサー1

jobsコマンド可能プログラムの作業ディレクトリの表示ここに行く、そのディレクトリがシェルの現在のディレクトリと異なる場合。これは、シェルが現在の状態ではないことを知っていること(プロセスが開始された場所)を追跡するためです。

また、シェルに依存します。

例えばbash

bash-4.4$ cd /tmp
bash-4.4$ sleep 1000 &
[1] 24807
bash-4.4$ jobs -l
[1]+ 24807 Running                 sleep 1000 &
bash-4.4$ cd /
bash-4.4$ jobs -l
[1]+ 24807 Running                 sleep 1000 &  (wd: /tmp)

しかし、ksh93これをしないでください。

$ sleep 1000 &
[1]     7164
$ jobs -l
[1] + 7164       Running                 sleep 1000 &
$ cd /
$ jobs -l
[1] + 7164       Running                 sleep 1000 &
$ 

私はプロセスのcwdを見つける移植可能な方法がないと思います。 fstatpwdx同様のものが役に立ちます。root自分に属していないプロセスを表示するには権限が必要な場合があります。

Linuxでは、シンボリックリンクを確認して特定のパスに一致するプロセスを使用できます/proc/.../cwd

/tmpたとえば、パス内のプロセスを見つけるには、次のようにします。

% sudo ls -l /proc/*/cwd | grep /tmp
lrwxrwxrwx. 1 sweh     sweh     0 Jul 28 09:38 /proc/23435/cwd -> /news/tmp
lrwxrwxrwx. 1 sweh     sweh     0 Jul 28 09:39 /proc/7124/cwd -> /news/tmp

これは、シンボリックリンクがプロセスのディレクトリ内部表現と一致しない可能性があることに注意してください。

$ cd /usr/tmp
$ pwd
/usr/tmp
$ ls -l /proc/self/cwd
lrwxrwxrwx. 1 sweh sweh 0 Jul 28 09:41 /proc/self/cwd -> /var/tmp/
$ ls -l /usr/tmp
lrwxrwxrwx 1 root root 10 May 13 09:39 /usr/tmp -> ../var/tmp/
$ 

シェルは私が中にいると思います/usr/tmpが、実際には中にあります/var/tmp

以下を追加するように編集されました。

「どのプロセスがマウントポイントを使用しているか」に関する質問がある可能性があるこの問題の特別な場合があります。cwd開いている可能性のあるファイルは報告されません。

たとえば、次のようになります。

$ sudo fuser -u -c /brick
/brick:               3552(root)
$ ps -p 3552
  PID TTY          TIME CMD
 3552 ?        00:04:51 glusterfsd
$

私たちは、プロセスがファイルシステムをglusterfsd使用する唯一のプロセスであることを知っています。/brick

おすすめ記事