Port Numarasına Göre Bir Linux İşlemi Nasıl Durdurulur?
Authoradmin
06 Ekim 20226 dakika
Share
Bir Linux sürecini öldürmek için kimliğine veya adına ihtiyacınız var. Tek bildiğin kullandığı bağlantı noktasıysa, yine de onu öldürebilir misin? Evet, birkaç farklı şekilde.
Bazen bir Linux işlemi yanıt vermeyebilir. Düzgün çalışmayı durdurabilir veya çalışmaya devam edebilir, ancak kapanma isteklerini yok sayabilir veya belleği, CPU’yu veya ağ bant genişliğini tüketmeye başlayabilir.
Sebepleriniz ne olursa olsun, Linux komut satırından bir işlemi öldürmenin yolları vardır. Klasik yöntem, sonlandırmak istediğiniz işlemin işlem kimliğiyle kill komutunu kullanmaktır. Komutanın kill bazı yakın akrabaları var. pkillKomut, bir işlemi ada göre öldürecek killallve bir adın paylaşan kısmını bulabileceği tüm işlemleri öldürecektir.
Bir işlem hakkında tüm bildiğiniz, bilgisayarınızda bir bağlantı noktası kullanıyorsa, onu tanımlamanın ve öldürmenin hala yolları vardır. Ağ terimleriyle “bağlantı noktası”, CAT5 veya 6 ağ kablosu gibi ucunda fiş bulunan bir kablo taktığınız fiziksel bir bağlantı anlamına gelebilir veya bir yazılım bağlantı noktası anlamına gelebilir.
Yazılım bağlantı noktası, bir ağ bağlantısının son kısmıdır. Bir aygıtın IP adresi , bilgisayarı veya diğer ağ aygıtını tanımlar. Bilgisayarın içindeki uygulamalar farklı bağlantı noktaları kullanır. Bunlar başka bir ayrıntı düzeyi sağlar. Ağ trafiği IP adresi kullanılarak doğru bilgisayara ulaşmıştır ve port adresleme kullanılarak doğru uygulamaya iletilebilir.
Bir otele gelen posta postasının sıralanıp uygun odalara teslim edilmesi gibi. IP adresi otelin sokak adresi gibidir, oda numaraları ise port numaraları gibidir.
Bir bağlantı noktasında ağ etkinliği görüyorsanız ve onu oluşturan işlemi tanımıyorsanız veya davranışı sorunlu veya şüpheliyse, işlemi sonlandırmak isteyebilirsiniz. Bildiğiniz tek şey port numarası olsa bile, süreci takip edebilir ve onu öldürebilirsiniz.
socat ile Bağlantılar Oluşturma
Öldürecek bazı bağlantılarımız olması için, socatfarklı protokoller kullanarak ağ bağlantıları oluşturmak için kullanacağız. Yüklemeniz gerekecek socat. Ubuntu’ya kurmak için şu komutu kullanın:
sudo apt install socat
Sözdizimi socatbiraz uzunsa, basittir. Kaynak ve hedef adreslerini sağlamamız gerekiyor. Bunların her biri için protokolü, IP adresini ve port numarasını sağlamamız gerekiyor. Kaynak veya hedef olarak STDIN veya STDOUT’u değiştirebiliriz.
Bu komut, 127.0.0.1 geri döngü IP adresindeki 7889 numaralı bağlantı noktasındaki bir TCP dinleme soketi ile STDOUT arasında bir bağlantı oluşturur. Ve işareti “ &” komutu arka planda çalıştırır , böylece komut satırına erişimi koruruz.
socat tcp-listen:7889,bind=127.0.0.1 stdout &
socat sctp-listen:9999,bind=127.0.0.1 stdout &
Kill’i kullanma
Elbette, killişlemin kimliğinin ne olduğunu bildiğimiz sürece işlemi sonlandırmak için kullanabiliriz. PID’yi bulmak için komutu lsofkullanabiliriz .
TCP protokolünü kullanan 7889 numaralı bağlantı noktasındaki işlemin ayrıntılarını listelemek için, bunun gibi -i(internet adresi) seçeneğini kullanıyoruz.
lsof -i tcp:7889
sudo kill 3141
Eğer boru kullanırsak, kendimize biraz çaba harcayabiliriz. lsofÇıkışını içine aktarır ve ilgilendiğimiz bağlantı noktasını ( 7889 ) içeren satırları aramamızı söylersekawk ve bu satırdan ikinci alanı yazdırırsak, PID’yi izole ederiz.awk
lsof -i tcp:7889 | awk '/7889/{print $2}'
Daha sonra çıktıyı kullanarak komuta awkaktarabiliriz . Komut, borulu girdisini alır ve komut satırı parametreleri olarak başka bir komuta iletir . komutu ile kullanacağız .killxargsxargsxargskill
Herhangi bir görsel geri bildirim alamıyoruz. Tipik Linux tarzında, hiçbir haber iyi haber değildir. İşlemin sonlandırıldığını kontrol etmek isterseniz lsofbir kez daha kullanabilirsiniz.
Çünkü lsofhiçbir şey rapor etmiyor, böyle bir bağlantı olmadığını biliyoruz.
UDP protokolünü kullanarak bir işlemi, önceki komutumuzdaki “tcp” yerine “udp” ile değiştirerek kaldırabiliriz.
Bunu yapmak için sskomutu kullanabiliriz . SCTP soketlerini aramak için -S(SCTP) seçeneğini, -atüm soket türlerini aramak için (tümü) seçeneğini (dinleme, kabul etme, bağlı vb.) ve -payrıntıları listelemek için (işlemler) seçeneğini kullanıyoruz. soketi kullanarak işlem yapın.
ss -Sap
grepBu çıktıyı ve kullanarak ayrıştırabiliriz awk. Ayrıca bazı PERL regex’lerini kullanarak da ayrıştırabiliriz grep, ancak bu şekilde anlaşılması çok daha kolaydır. Bunu bir veya iki defadan fazla kullanacak olsaydınız, muhtemelen bir takma ad veya kabuk işlevi yapardınız .
Çıktıyı ssiçine grepaktaracağız ve 7889 numaralı bağlantı noktamızı arayacağız. Çıktıyı grepiçine aktaracağız awk. ‘ de, alan sınırlayıcı olarak virgül “ ” ayarlamak için (ayırıcı dize) seçeneğini kullanıyoruz awk. “pid=” içeren bir dize ararız ve bu dizeden virgülle ayrılmış ikinci alanı yazdırırız.-F,
ss -Sap | grep "7889" | awk -F',' '/pid=/{print $2}'
Bu bize “pid=2859” dizesini verdi.
Bunu tekrar aktarabiliriz , awkalan sınırlayıcıyı eşittir işaretine “ ” ayarlayabilir ve eşittir işaretinin arkasındaki metin olacak olan bu= dizeden ikinci alanı yazdırabiliriz .
Bu, 7889 numaralı bağlantı noktasındaki SCTP protokol soketini kullanan işlemi öldürür.
kaynaştırıcı Komutu
Komut , fuserişleri büyük ölçüde basitleştirir. Dezavantajı ise yalnızca TCP ve UDP soketleriyle çalışmasıdır. Artı tarafta, bunlar uğraşmanız gereken en yaygın iki soket türüdür. Komut , fuserkontrol ettiğimiz Ubuntu, Fedora ve Manjaro bilgisayarlarında zaten kuruluydu.
Tek yapmanız gereken -k(öldür) seçeneğini kullanmak ve bağlantı noktası ve protokolü sağlamak. (Ad alanı) seçeneğini kullanabilir -nve protokolü ve bağlantı noktasını sağlayabilir veya “eğik çizgi kısayol biçimini” kullanabilir ve bağlantı noktası numarasını ilk sıraya koyabilirsiniz.
fuser -n tcp 7889
fuser 7889/udp
Sonlandırılan işlemin port numarası, protokolü ve PID’si terminal penceresinde yazdırılır.
Önce kaynaştırıcıyı deneyin
Muhtemelen üzerinde çalıştığınız bilgisayara yüklenecektir ve protokolün TCP veya UDP olması muhtemeldir, bu nedenle en basit yolun sizin için işe yaraması için büyük bir şans var.
Port Numarasına Göre Bir Linux İşlemi Nasıl Durdurulur?
Bir Linux sürecini öldürmek için kimliğine veya adına ihtiyacınız var. Tek bildiğin kullandığı bağlantı noktasıysa, yine de onu öldürebilir misin? Evet, birkaç farklı şekilde.
Makale İçeriği
Öldürme Süreçleri
Bazen bir Linux işlemi yanıt vermeyebilir. Düzgün çalışmayı durdurabilir veya çalışmaya devam edebilir, ancak kapanma isteklerini yok sayabilir veya belleği, CPU’yu veya ağ bant genişliğini tüketmeye başlayabilir.
Sebepleriniz ne olursa olsun, Linux komut satırından bir işlemi öldürmenin yolları vardır. Klasik yöntem, sonlandırmak istediğiniz işlemin işlem kimliğiyle kill komutunu kullanmaktır. Komutanın
kill
bazı yakın akrabaları var.pkill
Komut, bir işlemi ada göre öldürecekkillall
ve bir adın paylaşan kısmını bulabileceği tüm işlemleri öldürecektir.Bir işlem hakkında tüm bildiğiniz, bilgisayarınızda bir bağlantı noktası kullanıyorsa, onu tanımlamanın ve öldürmenin hala yolları vardır. Ağ terimleriyle “bağlantı noktası”, CAT5 veya 6 ağ kablosu gibi ucunda fiş bulunan bir kablo taktığınız fiziksel bir bağlantı anlamına gelebilir veya bir yazılım bağlantı noktası anlamına gelebilir.
Yazılım bağlantı noktası, bir ağ bağlantısının son kısmıdır. Bir aygıtın IP adresi , bilgisayarı veya diğer ağ aygıtını tanımlar. Bilgisayarın içindeki uygulamalar farklı bağlantı noktaları kullanır. Bunlar başka bir ayrıntı düzeyi sağlar. Ağ trafiği IP adresi kullanılarak doğru bilgisayara ulaşmıştır ve port adresleme kullanılarak doğru uygulamaya iletilebilir.
Bir otele gelen posta postasının sıralanıp uygun odalara teslim edilmesi gibi. IP adresi otelin sokak adresi gibidir, oda numaraları ise port numaraları gibidir.
Bir bağlantı noktasında ağ etkinliği görüyorsanız ve onu oluşturan işlemi tanımıyorsanız veya davranışı sorunlu veya şüpheliyse, işlemi sonlandırmak isteyebilirsiniz. Bildiğiniz tek şey port numarası olsa bile, süreci takip edebilir ve onu öldürebilirsiniz.
socat ile Bağlantılar Oluşturma
Öldürecek bazı bağlantılarımız olması için,
socat
farklı protokoller kullanarak ağ bağlantıları oluşturmak için kullanacağız. Yüklemeniz gerekeceksocat
. Ubuntu’ya kurmak için şu komutu kullanın:Sözdizimi
socat
biraz uzunsa, basittir. Kaynak ve hedef adreslerini sağlamamız gerekiyor. Bunların her biri için protokolü, IP adresini ve port numarasını sağlamamız gerekiyor. Kaynak veya hedef olarak STDIN veya STDOUT’u değiştirebiliriz.&
” komutu arka planda çalıştırır , böylece komut satırına erişimi koruruz.Kill’i kullanma
Elbette,
kill
işlemin kimliğinin ne olduğunu bildiğimiz sürece işlemi sonlandırmak için kullanabiliriz. PID’yi bulmak için komutulsof
kullanabiliriz .TCP protokolünü kullanan 7889 numaralı bağlantı noktasındaki işlemin ayrıntılarını listelemek için, bunun gibi
-i
(internet adresi) seçeneğini kullanıyoruz.Eğer boru kullanırsak, kendimize biraz çaba harcayabiliriz.
lsof
Çıkışını içine aktarır ve ilgilendiğimiz bağlantı noktasını ( 7889 ) içeren satırları aramamızı söylersekawk
ve bu satırdan ikinci alanı yazdırırsak, PID’yi izole ederiz.awk
Daha sonra çıktıyı kullanarak komuta
awk
aktarabiliriz . Komut, borulu girdisini alır ve komut satırı parametreleri olarak başka bir komuta iletir . komutu ile kullanacağız .kill
xargs
xargs
xargs
kill
Herhangi bir görsel geri bildirim alamıyoruz. Tipik Linux tarzında, hiçbir haber iyi haber değildir. İşlemin sonlandırıldığını kontrol etmek isterseniz
lsof
bir kez daha kullanabilirsiniz.Çünkü
lsof
hiçbir şey rapor etmiyor, böyle bir bağlantı olmadığını biliyoruz.UDP protokolünü kullanarak bir işlemi, önceki komutumuzdaki “tcp” yerine “udp” ile değiştirerek kaldırabiliriz.
Ancak
lsof
SCTP protokolünü tanımıyor.Bunu yapmak için
ss
komutu kullanabiliriz . SCTP soketlerini aramak için-S
(SCTP) seçeneğini,-a
tüm soket türlerini aramak için (tümü) seçeneğini (dinleme, kabul etme, bağlı vb.) ve-p
ayrıntıları listelemek için (işlemler) seçeneğini kullanıyoruz. soketi kullanarak işlem yapın.grep
Bu çıktıyı ve kullanarak ayrıştırabilirizawk
. Ayrıca bazı PERL regex’lerini kullanarak da ayrıştırabilirizgrep
, ancak bu şekilde anlaşılması çok daha kolaydır. Bunu bir veya iki defadan fazla kullanacak olsaydınız, muhtemelen bir takma ad veya kabuk işlevi yapardınız .Çıktıyı
ss
içinegrep
aktaracağız ve 7889 numaralı bağlantı noktamızı arayacağız. Çıktıyıgrep
içine aktaracağızawk
. ‘ de, alan sınırlayıcı olarak virgül “ ” ayarlamak için (ayırıcı dize) seçeneğini kullanıyoruzawk
. “pid=” içeren bir dize ararız ve bu dizeden virgülle ayrılmış ikinci alanı yazdırırız.-F
,
Bu bize “pid=2859” dizesini verdi.
Bunu tekrar aktarabiliriz ,
awk
alan sınırlayıcıyı eşittir işaretine “ ” ayarlayabilir ve eşittir işaretinin arkasındaki metin olacak olan bu=
dizeden ikinci alanı yazdırabiliriz .Artık işlem kimliğini izole ettik. PID’yi komut satırı parametresi olarak
xargs
iletmek için kullanabiliriz .kill
Bu, 7889 numaralı bağlantı noktasındaki SCTP protokol soketini kullanan işlemi öldürür.
kaynaştırıcı Komutu
Komut ,
fuser
işleri büyük ölçüde basitleştirir. Dezavantajı ise yalnızca TCP ve UDP soketleriyle çalışmasıdır. Artı tarafta, bunlar uğraşmanız gereken en yaygın iki soket türüdür. Komut ,fuser
kontrol ettiğimiz Ubuntu, Fedora ve Manjaro bilgisayarlarında zaten kuruluydu.Tek yapmanız gereken
-k
(öldür) seçeneğini kullanmak ve bağlantı noktası ve protokolü sağlamak. (Ad alanı) seçeneğini kullanabilir-n
ve protokolü ve bağlantı noktasını sağlayabilir veya “eğik çizgi kısayol biçimini” kullanabilir ve bağlantı noktası numarasını ilk sıraya koyabilirsiniz.Sonlandırılan işlemin port numarası, protokolü ve PID’si terminal penceresinde yazdırılır.
Önce kaynaştırıcıyı deneyin
Muhtemelen üzerinde çalıştığınız bilgisayara yüklenecektir ve protokolün TCP veya UDP olması muhtemeldir, bu nedenle en basit yolun sizin için işe yaraması için büyük bir şans var.