0

プロセスが開くとすぐにプロセスの pid を取得するにはどうすればよいですか。たとえば、./file.pl を実行してから ./file2.pl を実行するとします。これらのファイルは両方とも /proc/ フォルダーに pid を作成するためです。実行可能ファイルの実行時にプロセスが作成されたかどうかを即座に知るにはどうすればよいですか。/proc/ フォルダーに新しいプロセスがあるという緑色の信号が表示されたらすぐに、すべてのコマンドを実行する準備ができているファイルがあります。それ、どうやったら出来るの?編集:シェルコマンドで答えないでください。私はpidを知る必要はありません。proc 部門にゲストがいることをすぐに認識できるスクリプトを開発する必要があります

4

4 に答える 4

1

シェル経由でプロセスを開始する場合は、プロセスをバックグラウンドで開始します。

./your_prog &

pid を取得します。

echo $!
于 2013-08-07T20:18:22.103 に答える
0

スクリプトによってシェル プロンプトが返された場合は、次の操作を実行できます。

./your_prog
pidof -x your_prog

このperlスクリプトでOKをテストしました:

#!/usr/bin/perl

if (fork() == 0) {
    sleep(600);
}

必要がある

chmod +x your_prog

前...

于 2013-08-07T20:47:52.357 に答える
0

以下のシェル スクリプトを試してください。

#!/bin/bash
nr_proc_before=`ls -l /proc | wc -l`
ls /proc > proc_list_before

./any_executable &

nr_proc_after=`ls -l /proc | wc -l`
ls /proc > proc_list_after
nr_new=`expr $nr_proc_after - $nr_proc_before`

echo "$nr_new processes are created newly"
echo "new processes pids are :"
diff proc_list_after proc_list_before > new_pids
sed "1d" new_pids

if [ nr_new > 0 ] ; then
   #trigger your file which has commands.
fi

any_execuatble の代わりに、新しいプロセスが作成されるように、自分のものに置き換えることができます。

注 : これは、新しいプロセスを監視するスクリプトではありません。このスクリプトのサンプルは、問題を解決するためのヒントになるかもしれません。この回答に返信してください。回答を再定義できます。

于 2013-08-08T10:53:38.750 に答える