Bir ekran oturumunda hangi komutun çalıştığını öğrenin


10

Sıklıkla görevleri ekranda çalıştırarak daha sonra kontrol edebilirim, ancak bazen ekranda hangi komutun çalıştığını kontrol etmem gerekir. Genellikle bir tür php betiği, örneğin

screen -d -m nice -n -10 php -f convertThread.php start=10000

Hangi ekranların hangi komutu çalıştırdığını kaydetmiyorum, ancak süreci öldürmeden hangi komutun çalıştırıldığını kontrol ederek yapılan ilerleme hakkında bir fikir edinebilmek istiyorum.

Ekran yardım sayfalarında bunun için herhangi bir seçenek göremiyorum.

Yanıtlar:


18

Son zamanlarda bunu yapmak zorunda kaldım. Yığın Taşması sırasında ekranda çalışan işlemin PID'sinin nasıl bulunacağını yanıtladı . PID'ye sahip olduğunuzda ps, komutu almak için kullanabilirsiniz . Durumunuzu ele almak için bazı ek içeriklerle bu cevabın içeriği:

Ekran oturumlarının PID'sini şu şekilde alabilirsiniz:

$ screen -ls
There are screens on:
        1934.foo_Server         (01/25/15 15:26:01)     (Detached)
        1876.foo_Webserver      (01/25/15 15:25:37)     (Detached)
        1814.foo_Monitor        (01/25/15 15:25:13)     (Detached)
3 Sockets in /var/run/screen/S-ubuntu.

Diyelim ki foo_Monitorekran oturumunda Bash'de programın PID'sinin çalışmasını istiyorsunuz . Bilinen PID için PPID'leri (Üst PID) arayarak oturumun PID'sini foo_Monitoralmak için ekran oturumunun bashPID'sini kullanın:

$ ps -el | grep 1814 | grep bash
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000  1815  1814  0  80   0 -  5520 wait   pts/1    00:00:00 bash

Şimdi sadece bashoturumun PID'sini alın:

$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815

Şimdi bu PID ile süreci istiyoruz . Sadece komutları iç içe geçirin ve bu sefer bash olmayan işlemi almak için -vbayrağını kullanın :grep bash

$ echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869

Komutu bulmak için bu PID'yi kullanabiliriz (İkinci satırın sonuna bakın):

$ ps u -p 23869
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dotanco+ 18345 12.1 20.1 5258484 3307860 ?     Sl   Feb02 1147:09 /usr/lib/foo

Hepsini bir araya getirmek:

$ ps u -p $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')

Ah, akıllıca! Bunu sevdim! Bu soruya doğrudan cevap verdiğinden, bu yanıtı kabul edeceğim. Bunu takdir ediyorum! Üzgünüz @Ghanima (: '
Austin Burk

7

screen -S <your-fancy-name>Ekran oturumlarına çalıştırdıkları komutlara göre anlamlı isimler vermek için kullanmaya ne dersiniz ? İsimler ile listelenecek screen -lsve bir oturuma göre devam etmek için kullanılacak screen -r <your-fancy-name>.

Eklemek için düzenleyin:

Geçen gün dikkatime sunulduğundan beri. (daha fazla değilse) ile tmuxaynı işlevsellik setini sunar screenve ihtiyaçlarınıza uygun bir özellik ile birlikte gelir. SSS'den: "tmux, kaçış dizileri kullanarak brüt hackler olmadan pencerelerin çalışan uygulamaya otomatik olarak yeniden adlandırılmasını destekler. Varsayılan olarak açıktır."

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.