Linux'ta mkdir, tar ve kill Komutları Hakkında 4 Faydalı İpucu


Bir görevi, diğer şekilde çok daha iyi yapılabileceğini anlayana kadar geleneksel olarak yerine getirmeye devam ederiz. Linux İpuçları ve Püf Noktaları Serimizin devamında, size birçok yönden yardımcı olacak aşağıdaki dört ipucuyla karşınızdayım. İşte başlıyoruz!

1. Aşağıda verilene benzer uzun/karmaşık bir dizin ağacı oluşturmanız gerekmektedir. Bunu başarmanın en etkili yolu nedir?

Aşağıda önerildiği gibi elde edilecek dizin ağacı yapısı.

cd /home/$USER/Desktop
mkdir tecmint
mkdir tecmint/etc
mkdir tecmint/lib
mkdir tecmint/usr
mkdir tecmint/bin
mkdir tecmint/tmp
mkdir tecmint/opt
mkdir tecmint/var
mkdir tecmint/etc/x1
mkdir tecmint/usr/x2
mkdir tecmint/usr/x3
mkdir tecmint/tmp/Y1
mkdir tecmint/tmp/Y2
mkdir tecmint/tmp/Y3
mkdir tecmint/tmp/Y3/z

Yukarıdaki senaryo, aşağıdaki 1 satırlık komutun çalıştırılmasıyla kolayca gerçekleştirilebilir.

mkdir -p /home/$USER/Desktop/tecmint/{etc/x1,lib,usr/{x2,x3},bin,tmp/{Y1,Y2,Y3/z},opt,var}

Doğrulamak için tree komutunu kullanabilirsiniz. Kurulu değilse 'tree' paketini apt veya yum yapabilirsiniz.

tree tecmint

Yukarıdaki yöntemi kullanarak herhangi bir karmaşıklıktaki dizin ağacı yapısını oluşturabiliriz. Bunun normal bir komuttan başka bir şey olmadığına dikkat edin, ancak dizin hiyerarşisi oluşturmak için {'i kullanıyor. Bu, gerektiğinde ve genel olarak bir kabuk betiğinin içinden kullanıldığında çok yararlı olabilir.

2. Masaüstünüzde (/home/$USER/Desktop) bir dosya oluşturun (test deyin) ve dosyayı aşağıdaki içeriklerle doldurun.
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z

Normal bir kullanıcı bu senaryoda ne yapar?

a. Önce dosyayı tercihen touch komutunu kullanarak şu şekilde oluşturacaktır:

touch /home/$USER/Desktop/test

b. Dosyayı açmak için nano, vim veya başka herhangi bir düzenleyici olabilecek bir metin düzenleyici kullanacaktır.

nano /home/$USER/Desktop/test

c. Daha sonra yukarıdaki metni bu dosyaya yerleştirecek, kaydedip çıkacaktır.

Yani harcadığı zamana bakılmaksızın yukarıdaki senaryoyu gerçekleştirmek için en az 3 adıma ihtiyacı var.

Akıllı ve deneyimli bir Linux kullanıcısı ne yapacak? Aşağıdaki metni tek seferde terminale yazacak ve her şey tamamlanacak. Her eylemi ayrı ayrı yapmasına gerek yoktur.

cat << EOF > /home/$USER/Desktop/test
ABC
DEF
GHI
JKL
MNO
PQR
STU
VWX
Y
Z
EOF

Dosyanın ve içeriğinin başarıyla oluşturulup oluşturulmadığını kontrol etmek için 'cat' komutunu kullanabilirsiniz.

cat /home/avi/Desktop/test

3. Linux'ta arşivlerle (özellikle TAR toplarıyla) çok sık uğraşırız. Çoğu durumda bu TAR topunu İndirilenler klasörü dışında bir yerde kullanmamız gerekir. Bu senaryoda ne yapacağız?

Bu senaryoda normalde iki şey yaparız.

a. Katran topunu kopyalayın/taşıyın ve aşağıdaki şekilde hedefe çıkarın:

cp firefox-37.0.2.tar.bz2 /opt/
or
mv firefox-37.0.2.tar.bz2 /opt/

b. cd'sini /opt/ dizinine kopyalayın.

cd /opt/

c. Tarball'ı çıkarın.

tar -jxvf firefox-37.0.2.tar.bz2 

Bunu tersinden de yapabiliriz.

Tarball'ı olduğu yere çıkaracağız ve çıkarılan arşivi aşağıdaki şekilde gerekli hedefe Kopyala/Taşıyacağız:

tar -jxvf firefox-37.0.2.tar.bz2 
cp -R firefox/  /opt/
or
mv firefox/ /opt/

Her iki durumda da işin tamamlanması iki veya adım alıyor. Profesyonel bu görevi tek adımda şu şekilde tamamlayabilir:

tar -jxvf firefox-37.0.2.tar.bz2 -C /opt/

-C seçeneği tar'ın arşivi belirtilen klasöre çıkarmasını sağlar (burada /opt/).

Hayır, bu bir seçenekle (-C) ilgili değil, alışkanlıklarla ilgili. -C seçeneğini katranla birlikte kullanmayı alışkanlık haline getirin. Hayatınızı kolaylaştıracak. Şu andan itibaren arşivi taşımayın veya çıkarılan dosyayı kopyalamayın/taşımayın, sadece TAR topunu İndirilenler klasöründe bırakın ve istediğiniz yere çıkarın.

4. Bir süreci geleneksel bir şekilde nasıl öldürürüz?

En genel şekilde, öncelikle ps -A komutunu kullanarak tüm süreci listeleriz ve bir süreç/hizmet bulmak için grep ile ardışık düzene koyarız (Apache2 diyelim) ), basitçe:

ps -A | grep -i apache2
Örnek Çıktı
1006 ?        00:00:00 apache2
 2702 ?        00:00:00 apache2
 2703 ?        00:00:00 apache2
 2704 ?        00:00:00 apache2
 2705 ?        00:00:00 apache2
 2706 ?        00:00:00 apache2
 2707 ?        00:00:00 apache2

Yukarıdaki çıktı, şu anda çalışan tüm Apache2 işlemlerini PID'leriyle birlikte gösterir; daha sonra bu PID'leri, aşağıdaki komutun yardımıyla apache2'yi öldürmek için kullanabilirsiniz.

kill 1006 2702 2703 2704 2705 2706 2707

ve ardından 'Apache2' adındaki herhangi bir işlemin/hizmetin çalışıp çalışmadığını şu şekilde kontrol edin:

ps -A | grep -i apache2

Ancak bunu pgrep ve pkill gibi yardımcı programları kullanarak daha anlaşılır bir formatta yapabiliriz. Yalnızca pgrep'i kullanarak bir süreçle ilgili bilgileri bulabilirsiniz. Apache2 için işlem bilgilerini bulmanız gerektiğini varsayalım, şunları yapabilirsiniz:

pgrep apache2
Örnek Çıktı
15396
15400
15401
15402
15403
15404
15405

İşlem adını çalıştırarak pid'e göre de listeleyebilirsiniz.

pgrep -l apache2
Örnek Çıktı
15396 apache2
15400 apache2
15401 apache2
15402 apache2
15403 apache2
15404 apache2
15405 apache2

pkill'i kullanarak bir işlemi sonlandırmak çok basittir. Öldürülecek kaynağın adını yazmanız yeterlidir ve işlem tamamdır. pkill hakkında buraya başvurmak isteyebileceğiniz bir yazı yazdım: https://linux-console.net/how-to-kill-a-process-in-linux/.

pkill'i kullanarak bir işlemi sonlandırmak için (Apache2 diyelim) tek yapmanız gereken:

pkill apache2

Aşağıdaki komutu çalıştırarak Apache2'nin sonlandırılıp sonlandırılmadığını doğrulayabilirsiniz.

pgrep -l apache2

İstemi döndürür ve hiçbir şey yazdırmaz, Apache2 adıyla çalışan bir işlem olmadığı anlamına gelir.

Benden şimdilik bu kadar. Yukarıda tartışılan noktaların tümü yeterli değildir ancak kesinlikle yardımcı olacaktır. Her zaman yeni bir şeyler öğrenmenizi sağlayacak eğitimler hazırlamakla kalmıyoruz, aynı zamanda "Aynı çerçevede nasıl daha üretken olunacağını" da göstermek istiyoruz. Aşağıdaki yorumlarda bize değerli görüşlerinizi bildirin. Bağlantıyı sürdürün. Yorum yapmaya devam edin.