Durdurmadan hangi komutun çalıştırıldığını nasıl bilebilirim?


20

Örneğimde, yürütülmesi çok uzun süren bir komut çalıştırıyorum (birkaç saat).

Make ya da make -j4'e girip girmediğimi gerçekten hatırlamıyorum.

Tabii ki onu durdurabilir ve tuşuna basabilir veya bunu bilmek için tarihi kontrol edebilirim, ancak bu süreci durdurabilir ve bunun olmasını istemiyorum (zaten zaten -j4 yapıyorsa).

Süreci durdurmadan hangi komutun uygulandığını bilmenin bir yolu var mı?


5
Başka bir terminalden deneyinpgrep -a make
John1024

2
Durumda makedurdurabilir ve yeniden başlatabilirsiniz ve bıraktığı yerden almalıdır.
kullanıcı253751

Yanıtlar:


34

makeBilgisayarınızda çalışan her bir örnek için tam komut satırını görmek istiyorsanız , yeni bir terminal açın ve şunu deneyin:

pgrep -a make

pgrepbilgisayarınızdaki tüm işlemleri araştıran bir programdır. Bu durumda, adlı programları arıyor make. Seçenek -a, pgrepher işlem için hem işlem kimliğini hem de tam komut satırını listelemeyi söyler . (Olmadan -a, sadece süreç kimliğini döndürürdü.) Pgrep'in birçok seçeneği hakkında daha fazla bilgi için, bakınız man pgrep.


7
Bu, sorudaki gibi basit durumlar için kullanışlıdır. Bununla birlikte, komut boru hatları, döngüler, komut dizileri, dahili komutlar veya bulacağınız değişken genişlemeyi pgrepiçeriyorsa, komut satırında yazılan komuttan farklı görünecektir.
kasperd

28

Terminal penceresi etkinken, Ctrl+ tuşuna basarak işlemi duraklatabilir (askıya alabilirsiniz) Z. Ardından işi arka planda yazarak itebilirsiniz bg(işiniz şimdi arka planda devam eder ve aynı zamanda komut satırında da çalışabilirsiniz; bu, &komut satırının sonunda bir işe başlamakla aynıdır ). Sonra hangi komutu kullandığınızı görmek için imleç oklarını (yukarı ve aşağı) kullanın. İsterseniz (ancak bu gerekli değildir) yazarak işinizi ön plana alabilirsiniz fg.


7
Bu, bazı komutlarla çalışır, ancak hepsi değil. Örneğin, böyle bir döngü yazarsanız for X in {1..1000} ; do sleep $X ; done, döngü kesilir ve kalan yineleme gerçekleşmez.
kasperd

11
@ kasperd Evet, bana sorarsanız oldukça can sıkıcı, ancak bu sorun için harika bir geçici çözüm keşfettim. Parantez içerisinde böylesi karmaşık bir komutu çevreleyin, bu yüzden bir deniz kabuğu. Sonra Ctrl-Z tüm alt kabuğu askıya alır ve doğru bir şekilde devam eder.
penguen359

@ kasperd Bashta değil, ama zsh de yaparlar.
JoL

4
İşi arkaplana jobsatmanıza gerek yok: askıya almak, geçmişi kontrol etmek (ya da @ ichabod'un cevabında gösterildiği gibi) ve ardından devam ettirmek yeterli fg.
Konrad Rudolph

10

İşi duraklatmak için Stefan: ^ Z gibi bir şey yapıyorum ve sonra koşuyorum jobs. Çalışan birden fazla işleminiz varsa, hangi işin duraklatıldığını seçin, ancak bu genellikle komut satırını verir. Sonra yürütmeye fgdevam etmek için çalıştırın.


1

Bunu dinamik olarak görmenin iyi bir yolu en üst sıralarda yer almaktır ve bu size genel sistem durumunu ve sistemdeki çalışan işlemleri bildirir.

'Ps ux' yapmak işlemlerinizi pid ve diğer bilgilerle birlikte gösterir, arzu ederseniz bir kısmını öldürmek için beceri kullanabilirsiniz, bunun için man sayfası iyi bir kaynaktır ve bir beceri ya da öldürmek yapışır - 9 Cihazın askıda kalması vs. bekler. -hup, daemons yeniden başlatılıyor vb. işlemlere başka sinyaller de gönderebilirsiniz.

Top size işlem büyüklüğünü, geçen süreyi ve mevcut cpu durumlarını ve hafıza ve takas durumunu gösterir.

Sık sık $ make> & make.out & ve sonra make.out günlük dosyasında daha az veya tail -f yaparım. O zamandan beri make, benim kabuk oturumumdan bir işlem olarak ayrıldı.

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.