Ubuntu 12.04’de ekranı kullanırken bir dosyaya yönlendirmek için üste çıkmaya çalışmak


0

Bu benim Stack Exchange'deki ilk sorum! Yıllardır kullanıyorum ve bunun dışında her zaman çözümümü buluyorum.

Almaya çalışıyorum üst ayrı olarak koşmak ekran böylece arka planda tek bir işlemin performansını izleyebilirim. Ekran örneğini, gerektiğinde kolayca takmamı sağlayacak şekilde adlandırdım. Bunları bir senaryoya koydum, çünkü çalıştırmaya çalıştığım daha büyük bir izleme denemesinin bir parçası.

screen -S TOP -D -m top -b -p $PID > top.log &

Bunun yapması gereken, üst adında yeni bir ekran oturumu oluşturması, ardından oluşturulduğundan ayırması ve üst komutunu çalıştırması, böylece bir ikili dosya top.log oluşturacak ve arka plana koyacak.

Dosya dışında her şey iyi çalışıyor, ancak herhangi bir üst veriyle doldurulmuyor, oysa komutu ekran olmadan çalıştırdığımda iyi çalışıyor. Ekran, üst komutun bir parçası olarak yönlendirme ile ilgili değil, yine de dosyayı oluşturuyor belki ayrı bir komutun parçası olarak.

Şimdilik çalıştırmak için nohup kullanmaya başladım. üst Arka planda, ancak ekrana eklemek çok isterdim.

Herhangi bir fikir?

Yanıtlar:


0

Yönlendirmeniz yalnızca screen Komutun kendisi, ekran terminalindeki çıkışı değil. Özel bir şey yaratmanı öneririm screenrc Bu ekran örneği için aşağıdaki içerikleri içeren dosya:

session top -b -p $MYPID
sessionname TOP
logfile /path/to/top.log
log on
detach

Çevre değişkeni MYPID çağırmadan önce ayarlanması gerekir screen Komut. Sonra çağırdın screen kullanmak -c seçeneği ve ismi screenrc dosya:

MYPID=$PID screen -c /path/to/top-screenrc

screenrc dosya içeriyor screen man sayfasında açıklandığı gibi komutları. İlk önce ile yeni bir oturum oluşturur top, bir oturum adı belirler, bunun için bir günlük dosyası tanımlar, ardından günlüğe kaydetmeye başlar. Son adım olarak, oturum ayrılır ve komut istemine geri döner. Açıkça arka planda göndermek zorunda kalmazsınız (ör. & gerekli olmamalıdır).

Umarım bu senin probleminle eşleşir.


Teşekkürler. Bu, izlemem gereken başka bir işlem için yaptığım şeye çok benzer. İşin aslı, keşke bunu daha önce görebilseydim, beni bir kaç saat aramamı isterdi.
oche

0

Deneyin:

$(screen -S TOP -D -m top -b -p $PID > top.log) &

Teşekkürler. Dosyanın oluşturulduğu yönlendirme ile aynı sorunu yaşadım, ancak yönlendirme işe yaramadı.
oche

0

Ekran değil, çıktıyı yönlendiren kabuk (bash, sanırım). Sağlanan komut satırı, TOP adlı ekran oturumu yerine, görüntüyü ekran programından yönlendirir:

screen -S TOP -D -m top -b -p $PID > top.log &

Bunu bir daha denerim:

screen -S TOP -D -m " top -b -p $PID > top.log " &

Ekran tırnak içindeki bölümü tek bir komut veya dosya adı olarak kabul edip başarısız olursa, üst komutu tek satırlık bir komut dosyasına yapmanız gerekebilir.


Teşekkürler, bunu denedim ama neşe yoktu. Alıntılanan komutun tamamını var olmayan bir komut olarak görür. Belki tek bir astar haline getirmek işe yarar, ama ben nohup kullanmaya devam etmeye karar verdim. Bu komut zaten başka bir komut dosyası tarafından da adlandırılan daha büyük bir komut dosyasının bir parçası. Çok fazla komut dizisine sahip olmak istemiyorum ve ardından birkaç ay içinde hepsini anlamıyorum.
oche
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.