前のコマンドが正常に実行されたことを確認する方法です。
echo $?
1つの方法は、次のコマンドを使用することです。
[username@hostname ~]$ echo $?
0
しかし、次のシナリオはどうですか? 「ROSE_main.py」というPythonスクリプトを実行したいとしましょう。
[username@hostname rose]$ python ROSE_main.py -g HG18 -i HG18_MM1S_MED1.gff -r MM1S_MED1.hg18.bwt.sorted.bam -c MM1S_WCE.hg18.bwt.sorted.bam -o example -s 12500 -t 2500
USING HG18_MM1S_MED1.gff AS THE INPUT GFF
USING HG18 AS THE GENOME
MAKING START DICT
LOADING IN GFF REGIONS
CHECKING INPUT TO MAKE SURE EACH REGION HAS A UNIQUE IDENTIFIER
REFERENCE COLLECTION PASSES QC
STITCHING REGIONS TOGETHER
PERFORMING REGION STITCHING
REMOVED 7865 LOCI BECAUSE THEY WERE CONTAINED BY A TSS
...
コマンドの実行に時間がかかるようです。新しい蛇口で「top」コマンドを使用すると、次の結果が表示されます。
315 root RT 0 0 0 0 S 100.0 0.0 1801:10 migration/104
42 root RT 0 0 0 0 S 100.0 0.0 2023:48 migration/13
177 root RT 0 0 0 0 S 100.0 0.0 1622:39 migration/58
51 root RT 0 0 0 0 S 100.0 0.0 1820:09 migration/16
66 root RT 0 0 0 0 R 100.0 0.0 2135:56 migration/21
462 root RT 0 0 0 0 R 100.0 0.0 1696:18 migration/153
63 root RT 0 0 0 0 S 100.0 0.0 1735:34 migration/20
54 root RT 0 0 0 0 S 100.0 0.0 1844:20 migration/17
429 root RT 0 0 0 0 S 100.0 0.0 1690:33 migration/142
11471 gdm 20 0 374m 12m 4544 R 117.1 0.0 934:51.45 gnome-settings-
318 root RT 0 0 0 0 S 100.0 0.0 1774:44 migration/105
コマンドがまだ実行されている場合は、私のユーザー名と「python」のようなものを見ることができるはずだと思いましたが、それはまったく見えません。
コマンドをクリックすると、カーソルが点滅し続け、コマンドが実行され続けていますが、どのように可能ですか?
コマンドがまだ実行されているかどうかはどうすればわかりますか?
top
このコマンドは私に情報を提供しません。私も使用できませんecho $?
(たとえば、入力しようとするとecho $?
フィードバックが表示されますpipeline broken
)。
答え1
コマンドが失敗した場合は、エラーメッセージとともにエラーメッセージなしでシェルプロンプトに戻ります。
とにかくまだ実行中です。しかし、あなたの場合は、端末からの入力を待っているようです。これは通常、次のことを意味します。決して終わらない、待っている入力を提供しない限り。
とにかくtop
正しいツールではありません。これは、親プロセス(または最も多くのCPU、最も多くのメモリなどを使用するプロセス)を表示するためのものであり、命令がソートさtop
れたカテゴリに関係なく、親プロセスの1つである必要はありません。
コマンドステータスを表示するための正しいツールは、システム内のすべてのプロセス(使用)、自分(または特定のユーザー)のプロセス(使用)、または特定のプロセスのみを表示するためにps
使用できます。他のパラメータはその形式を定義します。したがって、あなたの場合に使用することができますps
-e
-U
ps
ps -lf $(pgrep python)
ヘッダーコマンドが.であるすべてのプロセスを表示しますpython
。
これは、-lf
各プロセスに関する多くの情報を提供します。その中にはプロセスステータス(列の下S
)、プロセスが現在実行されていないスリープ状態の場合は停止したシステムコール(WCHAN
)があります。
コマンドが実行されている場合は、待機せずにR
そのS
列と-
そのWCHAN
列に表示されます。何かを待っている場合は、そのS
列にS
などが表示されますwait_w
。poll_s
futex_
WCHAN
何を待っているのか正確に言うのは難しいですが、長い間その状態を見つけて実行が開始されると予想される場合は、コマンド自体を確認して正しく実行されたことを確認する必要があります。
ps
可能な形式と出力で見ることができるものの詳細については、マニュアルを読んでください。
Pythonコマンドの場合は、ユーザー入力を待つ理由を確認する必要があります。