명령 상태를 어떻게 알 수 있나요?

명령 상태를 어떻게 알 수 있나요?

이전 명령이 성공적으로 실행되었는지 확인하는 방법입니다.

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-Ups

ps -lf $(pgrep python)

헤더 명령이 .인 모든 프로세스를 봅니다 python.

이는 -lf각 프로세스에 대한 많은 정보를 제공합니다. 그중에는 프로세스 상태( 열 아래 S), 프로세스가 현재 실행 중이 아닌 휴면 상태인 경우 중지된 시스템 호출( WCHAN)이 있습니다.

명령이 실행 중이면 기다리지 않고 R해당 S열과 -해당 WCHAN열에 표시됩니다. 무언가를 기다리고 있는 경우 S해당 열에 S, 등 이 표시됩니다 wait_w.poll_sfutex_WCHAN

무엇을 기다리고 있는지 정확히 말하기는 어렵지만 오랜 시간 동안 해당 상태를 발견하고 실행이 시작될 것으로 예상되는 경우 명령 자체를 확인하여 올바르게 실행되었는지 확인해야 합니다.

ps가능한 형식과 출력에서 ​​볼 수 있는 내용에 대한 자세한 내용은 설명서를 읽어보세요 .

Python 명령의 경우 사용자 입력을 기다리는 이유를 확인해야 합니다.

관련 정보