'중지 된 작업이 있습니다'오류가 발생하면 어떻게해야합니까?


62

이런 상황에 여러 번 직면합니다.

예를 들어, 다음을 사용하여 일부 파일 emacssudo권한 으로 열려고 할 때마다 :

sudo emacs tet.c &

암호를 요구하는 대신 우분투는 창이나 터미널에서 출력을 emacs하지 않고 프로세스를 시작 합니다 emacs(pid 제외) 이미지를 참조하십시오 ( '&'를 사용하지 않으면 암호를 묻습니다).

여기에 이미지 설명을 입력하십시오

이와 관련하여 두 가지 질문이 있습니다.

  1. '중지 된 작업이 있습니다'라는 오류가 발생하면 어떻게해야합니까? 중지 된 모든 작업을 식별하고 제거하려면 어떻게합니까? 터미널을 지우면 중지 된 프로세스에 대한 pid가 없습니다.

  2. Ubuntu / emacs가 왜 이렇게 동작합니까? 왜 암호를 묻지 않습니까?

답변:


77

There are stopped jobs메시지가 너무 멀어서 오류가 발생했습니다. 그것은 단지 쉘에서 나 가려고 시도한다는 것을 알려주는 통지 일 뿐이지 만 하나 이상의 일시 중단 된 작업 / 프로그램이 있습니다 ( 명령의 끝에서 emacs사용하여 백그라운드로 넣은 경우 &). 의도하지 않는 한 시스템에서 쉘을 종료하고 작업을 종료 할 수 없습니다. 이 메시지에 대한 응답으로 몇 가지 작업을 수행 할 수 있습니다.

  • jobs명령을 사용 하여 중단 한 작업을 알려줍니다.
  • fg명령을 사용하여 포 그라운드에서 작업을 추가하도록 선택할 수 있습니다
  • 작업이 종료되는지 신경 쓰지 않으면 exit다시 입력하면 됩니다. exit개입 jobs명령을 사용하거나 사용하지 않고 두 번째로 입력 하면 일시 중단 된 모든 작업이 종료됩니다.

두 번째 질문에 답하기 위해 우분투 나 이맥스가 이런 식으로 행동하지 않는다고 말할 것입니다. 응용 프로그램을 백그라운드에서 실행하면 정상적인 동작입니다. 이 경우 sudo암호를 요구하지만 백그라운드에서 요구하므로이 사실을 알 수 없습니다. 이를 확인하려면 fg다음 명령을 사용하여 작업을 포 그라운드로 되돌려 야합니다 .

radu@Radu: ~ $ sudo emacs tet.c &
[1] 7732
radu@Radu: ~ $ # now sudo emacs run in background so you can't see nothing about what's happening
radu@Radu: ~ $ fg
[sudo] password for radu:

그런 다음 원하는 경우 Ctrl+ Z를 입력하여 백그라운드에서 작업을 다시 넣을 수 있습니다 . 그런 다음 'fg'명령을 다시 실행하여 작업을 포 그라운드로 되돌릴 수 있습니다.


저에게는 항상 텔넷입니다. 나는 잊어 버렸다 quit:) ( superuser.com/questions/486496/how-do-i-exit-telnet 참조 )
cmroanirgo

1
그래서 방금 Ctrl + d를 두 번 (!) 누르고 첫 번째 메시지 후에 동일한 메시지를 받았습니다. 내가 방금 죽인 직업이 무엇인지 알아낼 방법이 있습니까?
Matsmath

19

시스템이 현재 쉘과 연관된 활성 작업에 대해 경고하기 때문에 메시지가 표시됩니다.

다음을 실행하여 이러한 실행 / 중지 된 작업을 나열 할 수 있습니다. jobs,

그런 다음 다음 중 하나를 수행 할 수 있습니다.

  • 다음을 수행하여 마지막 작업을 포 그라운드로 이동하십시오. fg( bg배경의 반대 )
  • disown이 작업을 죽이지 않고 현재 쉘에서 제거하기 위해 실행 하십시오.
  • / 두 번 Ctrl+D입력하는 것과 동일하게 두 번 눌러 이러한 작업을 종료하여 강제 로그 아웃exitlogout
  • : 실행하여 수동으로 이러한 작업을 죽일 kill $(jobs -p)(추가 -9힘에 대한)
  • 삭제 한 후에도 중지 된 모든 프로세스를 계속 종료하려면 다음을 시도하십시오.

    kill $(ps wuax | awk 'NR>1 && $8 ~ "T" {print $2}')


에 대한 질문에 대답 sudo하기 위해 표준 입력 에서 암호를 수신하기 위해 활성 터미널이 있어야하며 암호를 백그라운드에서 실행하여 쉘이 명령이 완료되기를 기다리지 않으므로 암호를 묻지 않습니다. 따라서 명령과 상호 작용할 가능성이 없습니다.

이 경우 3 가지 가능성이 있습니다.

  • 배경 ( &) 으로 가지 않고 명령을 실행
  • sudo -S예를 들어 터미널 장치 대신 표준 입력에서 암호를 읽습니다.

    echo mypass | sudo emacs tet.c
    
  • visudo명령 및 편집 sudoers파일 을 통해 비밀번호를 요청하지 않도록 sudo를 구성 하십시오. 참조 : 사용자 활성화NOPASSWD


6

중지 된 작업 오류 발생하면 :

  1. jobs->를 입력 하면 작업이 중지 된 상태로 표시됩니다
  2. exit-> 를 입력 하면 터미널에서 나올 수 있습니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.