'Durdurulan işler var' hatası aldığımda ne yapmalıyım?


62

Bu tür durumlarla birçok kez karşılaşıyorum.

Örneğin, her ne zaman ben bazı dosyayı açmaya emacsile sudokullanan hakları:

sudo emacs tet.c &

Benden şifre istemek yerine Ubuntu emacs, herhangi bir emacspencere veya terminalde herhangi bir çıkış olmadan (pid hariç) görüntülemeye bakın ('&' kullanmazsam, o zaman bana şifre ister):

görüntü tanımını buraya girin

Bununla ilgili iki sorum var:

  1. 'Durmuş işler var' hatası aldığımda ne yapmalıyım? Tüm durdurulan işleri nasıl tespit edip öldürürüm? Terminali temizlediğimde, durdurulan bu işlemlerin çukurlarına sahip olmayacağım.

  2. Ubuntu / emacs neden böyle davranıyor? Neden bana şifreyi sormuyor?

Yanıtlar:


77

There are stopped jobsmesaj uzak, bir hata olmaktan uzak . Bu sadece size kabuktan çıkmaya çalıştığınızı bildiren bir bildirimdir, ancak bir veya daha fazla askıya alınmış işiniz / programınız vardır (sizin durumunuzda komutunuzun sonunda emacskullanarak arka plana koyduğunuzda &). Sistem, kabuktan çıkmanıza ve istemediğiniz sürece işleri öldürmenize izin vermiyor. Bu mesaja cevap olarak birkaç şey yapabilirsiniz:

  • jobshangi işleri askıya aldığınızı söylemek için komutu kullanın
  • fgkomutunu kullanarak işleri ön plana eklemeyi seçebilirsiniz.
  • işlerin bitip bitmemesi umrunda değilse, sadece exittekrar yazabilirsiniz ; exitaraya girme jobskomutu olan veya olmayan ikinci kez yazmak , askıya alınan tüm işlerin sona ermesiyle sonuçlanacaktır.

İkinci soruyu cevaplamak için size Ubuntu ya da emacs gibi davranmadığını söyleyeceğim. Arka planda çalışacak bir uygulamayı koyduğunuzda bu normal bir davranıştır. Bu durumda sudoparola soruyor, ancak arka planda soruyor, bu nedenle bu gerçeği göremiyorsunuz. Görmek için, fgkomutu kullanarak işi ön plana getirmelisiniz :

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:

Bundan sonra isterseniz tekrar arka planda işi koymak için Ctrl+ yazabilirsiniz Z. Sonra işi tekrar ön plana çıkarmak için 'fg' komutunu tekrar çalıştırabilirsiniz.


Benim için her zaman telnet. Ben unutmak quit(bkz :) superuser.com/questions/486496/how-do-i-exit-telnet )
cmroanirgo

1
Bu yüzden Ctrl + d tuşlarına iki kez (!) Bastım ve ilk mesajdan sonra aynı mesajı aldım. Az önce öldürdüğüm işin ne olduğunu bulmanın bir yolu var mı?
Matsmath

19

Mesajı aldınız, çünkü sistem sizi mevcut kabuğunuzla ilişkili aktif işler konusunda uyarır.

Bu / çalıştırarak işler durdu çalışıyor listeleyebilirsiniz: jobs,

Sonra aşağıdakilerden birini yapabilirsiniz:

  • Son işi ön plana taşıyarak: fg( bgarka planın karşıtı ),
  • disownbu işleri öldürmeden şu anki kabuğundan çıkarmak için koş ,
  • Ctrl+Diki kere basarak bu görevleri öldürerek oturumu kapatmaya zorlayın , aynı exit/ logoutiki kez
  • bu işleri el ile çalıştırarak öldürmek: kill $(jobs -p)( -9zorla eklemek )
  • Onları reddettiğinizde ve hala tüm durdurulan işlemleri öldürmek istiyorsanız, şunu deneyin:

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


Hakkında soruyu yanıtlamak sudoiçin, şifreyi standart girişten almak için etkin terminalin olması gerektiği ve arka planı çalıştırarak kabuk komutun bitmesini beklememesi nedeniyle sizden şifre sormaz. , böylece komutla etkileşime girme ihtimaliniz yok.

Bu durumda, 3 olasılık var:

  • background ( &) işlevine girmeden komutu çalıştır ,
  • şifreyi terminal cihazı yerine standart girişten sudo -Sörneğin

    echo mypass | sudo emacs tet.c
    
  • sudo'yu parola istemeyecek şekilde yapılandırın: visudokomut ve düzenleme sudoersdosyası. Bakınız: Kullanıcı için etkinleştirNOPASSWD


6

Karşılaştığınızda iş durdurma hatası var:

  1. tür jobs-> durdurulmuş durumda olan işleri göreceksiniz
  2. ve sonra yazın exit-> terminalden çıkabilirsiniz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.