私は次のような作業をしてきました。
#!/bin/sh
NO_START=1
STEP_SIZE=1
NO_END=100
DATE_STR=$(date +%m%d_%H%M%S)
RUN_DIR=./$DATE_STR
mkdir $RUN_DIR
echo PID = $$. See $RUN_DIR/$$.log for outputs and errors.
log_file=$RUN_DIR/$$.log; exec > $log_file 2>&1; date
for i in `seq $NO_START $STEP_SIZE $NO_END`
do
./c/anExternalCProgram $RUN_DIR
done
私は今日エコーされたPIDがに表示されているものと異なることを発見しましたtop
。なぜですか?
答え1
これをデバッグするには、フィールドをtop
選択してここにカーソルを移動してを押して開きます。その親プロセスIDを実際に表示するには、他のフィールド()のいずれかを選択解除する必要があります。fPPID
SpaceVIRT
を使用すると、PPID
どのプログラムがシェルを呼び出したかを知ることができるはずです。これはおそらくプログラムのPIDであり、実際にはtop
。