GNU / Linux'ta bir sürece belirli bir ad mı veriyorsunuz?


10

Komutta belirli bir tanımlayıcı olması için bir işlemi nasıl başlatırım ps?

UPD : Bir kutu üzerinde çalışan birkaç sunucum var. Çoğu dağıtım modunda. Ancak biri geliştirilmektedir. Tüm sunucular Pythonic vardır ve hastalık tüm sunucular olarak listelenen olmasıdır pythoniçinde psimkansız kılan, killallbozulmamış diğerlerini bırakarak gelişiminde biri.

UPD : David ve GNUix'in önerdiği gibi, her sunucu için Python yorumlayıcısı ve bash betikleri için semboller oluşturdum.

Yanıtlar:


7

Bir symlink oluşturmak hile yapmalıdır, ancak semptomu değil hastalığı bilseydik daha yararlı olurdu. Tam olarak ne yapmaya çalışıyorsun? Çünkü daha iyi bir yol olabilir

gnuix@defiant)-(08:11pm-:-06/10)--
(~)./0012
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14020 pts/1    00:00:00 0012
14021 pts/1    00:00:00 ps
(gnuix@defiant)-(08:11pm-:-06/10)--
(~)ln -s 0012 weird
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)./weird 
my weird program name
  PID TTY          TIME CMD
 7805 pts/1    00:00:00 zsh
14046 pts/1    00:00:00 weird
14047 pts/1    00:00:00 ps
(gnuix@defiant)-(08:12pm-:-06/10)--
(~)

Güncelleme: Yapabileceğiniz ekstra bilgilere dayanarak (daha kolay bir yol var ama şu anda bana gelmiyor eminim) sunucularınız açılışta bir dosyaya PID yazma var, o zaman -9 | cat /var/run/devserver.pid ama bu bir programlama sorusu olurdu :)

Tekrar güncelleyin: Ayrıca, bunları başlattığınızda sunucuların PID'sini almak için bazı kabuk hile yapabilirsiniz, başımın üstünde, örneğin sunucularınızı başlatmak için kullandığınız komutu saran startmyserver adlı bir kabuk işlevi oluşturabilirsiniz, ancak Ayrıca $ yakala! başlangıç ​​adına dayalı bir dosyaya gidin - o zaman 'inbounds' @ ServerFault olan kabuk komut dosyalarından bahsediyoruz. :-)


4

Çalıştıracağınız ikili dosyayı yeniden adlandırabilirsiniz. Sadece ikiliye bir simge bağlantısı kullanarak kaçabilirsiniz.

Adı gerçekten değiştirmek istiyorsanız, en iyi yol argv'yi ayarlayan ve daha sonra çalıştırmak istediğiniz işlemi yürüten basit bir sarmalayıcı kullanmaktır. Şimdi size bazı örnek kod vermek için zamanınız yok, ama yaklaşık 10 saat içinde yüksek sesle bağırın ve ne yapabileceğimi göreceğim.


tam olarak benim açımdan. Bunun için koda ihtiyacınız var (yeniden adlandırmak / (sym) ikiliyi bağlarken, argv [0] olup olmadığını kontrol ederse sorunlu olabilir)
Martin M.

Çoğunlukla gömülü olursanız (ikili kutu, dropbear) bazı ikili dosyalar iyi çalışmaz
nhed

3

Https://github.com/electrum/procname adresine bakın . Bir ortam değişkeni kullanarak herhangi bir işlemin işlem adını ayarlamanızı sağlar.

Kullanımı:

Java'yı LD_PRELOAD ve PROCNAME ortam değişkenleri ayarlanmış olarak çalıştırın:

LD_PRELOAD = / path / to / libprocname.so PROCNAME = merhaba java -jar foo.jar


2

Bu gerçekten SO'ya ait değildir çünkü dile özgü bir soru değil, jeneriktir.

Kısa cevap kolay değil. Yani, kabuğunuzun veya procfs / sysfs'nin işlevselliğinden yapılamaz. Bunu başarmak için harici bir yardımcı program kullanmanız gerekecektir.

Burada nasıl ve neden olduğu hakkında uzun bir açıklama var . Dikkatli oldukça C merkezli.

Güncelleme:

Oyunu değiştiren pitonlar. Şimdi çok SO olmadan, bu modülü veya benzer bir yaklaşımı kullanmak için bunları değiştirmek muhtemelen daha kolay olacaktır .


touche .. Daha kolay bir yol olduğunu biliyordum :)
GNUix

C kodu, çıkış miktarından dolayı olması gerekenden çok daha ayrıntılıdır. Onu küçültmek mümkün olmalı, ancak önerdiğim ile hemen hemen aynı şeyi yapıyor. Sadece onunla gitmek için bazı kod ile :) Eksik biraz kodunuzu çalıştırmak için exec :)
David Pashley
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.