이전 명령이 성공적으로 실행되었는지 확인하는 방법입니다.
echo $?
한 가지 방법은 다음 명령을 사용하는 것입니다 .
[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
정렬된 범주에 상관없이 상위 프로세스 중 하나 일 필요는 없습니다 .
명령 상태를 보는 올바른 도구는 시스템의 모든 프로세스( 사용 ), 자신(또는 특정 사용자)의 프로세스( 사용 ) 또는 특정 프로세스 만 표시하는 데 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 명령의 경우 사용자 입력을 기다리는 이유를 확인해야 합니다.