Linux kategorisi arşivi

linux process sonlandırma

Ubuntu’da çalışırken ilk defa bir program kilitlendi, Firefox. Çok fazla sekme açtığım ve aynı anda firefox üzerinden bir kaç şey download ettiğim için olduğunu düşünsem de, kilitlendiği zaman ne yapacağımı bilmiyordum.

Windows kullanırken herhangi bir program yanıt vermediğinde ctrl+alt+delete (ctrl+shift+esc) yaparak görev yöneticisine ulaşıp oradan programı sonlandırmak ilk olarak yaptığımız iştir. Linux’ta ne yapacağız peki?

İlk önce terminali açıyoruz ve ps aux yazarak çalışan processleri buluyoruz.

ps aux

Çıkan listeden sonlandırmak istediğimiz processi buluyoruz.

khantunckale     5609  0.0  3.8 713568 151400 ?       Sl   18:03   0:05 /usr/lib/firefox

Sonlandıracağımız processin olduğu satırın başında, o processin numarası bulunmaktadır. (Burada 5609)

Sonlandırmak için yapmamız gereken işlem ise sudo kill -9 proccessNumarası yazmak. Yani örneğimizde;

sudo kill -9 5609

, , , ,

2 Yorum

linux foreground(fg) komutu (command)

Linuxta bir komut çalıştırdığınızda belki de yanlış bir şey yaptığınızda, CTRL + Z ile o komutu durdurduğunuzu zannediyorsanız, yanılıyorsunuz. Sadece Pause etmiş oluyorsunuz. (Aslında yapmanız gereken CTRL + C kombinasyonudur.)

CTRL + Z ile durdurduğunuzu sandığınız bir komuta devam etmek için ise fg komutunu yazabilirsiniz.
Komut kaldığı yerden çalışmaya devam edecektir.

denemek için sleep 10 yazın ve sonra 4-5 saniye sonra ctrl + z e basın. Sonra da fg yazıp enter’a basın.
göreceksiniz ki 5-6 saniye sonra komutunuz bitmiş olacaktır.

, , , ,

3 Yorum

midnight commander – mc – konsol tabanli klasor-dosya yoneticisi

Midnight commander linux sistemlerde çalışabilen konsol tabanlı bir programdır. dosya ağacını daha görsel bir ortamda gezebilmenize olanak sağlar. Sağ ve Sol 2 ekranda ayrı klasörleri gezip, dosya kopyalama klasör kopyalama vb gibi işlemleri yapmanıza olanak sağlar.

MC nasıl yüklenir?

redhat tabanlı sistemler için YUM paketi ile

yum install mc

diyerek, debian ubuntu tabanlılar için APT paketi ile

apt-get install mc

diyerek sisteminize yükleyebilirsiniz.

Centos ta yüklediğinizde her tarafın garip karakterler ile dolduruğunu görürseniz , muhtemelen putty üzerinden iletişim kuruyorsunuzdur. (şu linkte olduğu gibi)Böyle ise encoding ile ilgili bir problem var demektir. Bunu da putty ayarlarınızdan Traslation kısmında encoding’inizi UTF-8 yaparak düzeltebilirsiniz.

Ayrıca programın search, copy paste,vb gibi konsol tabanlı olmasına rağmen bir çok özelliğinin bulunduğunu da belirteyim. Bunları da kurcalayıp bulabilirsiniz. (programı açtığınızda f1,f2 gibi function tuşlarıyla ulaşabilirsiniz)

Bir de aynı şekilde mcedit programı var. Bunu da ayrı bir yazıda yazmak isterim.

Bu programı uzak bağlantı ve server ortamında bir şeyler ile uğraşan herkese tavsiye ederim.

, ,

2 Yorum

Linuxta bir klasordeki dosya sayisini bulmak

Çok basit bir komut ile linuxta bir klasör içindeki toplam dosya sayısını bulabilirsiniz.

$ ls -1 targetdir | wc -l
454

diğer bir alternatifi de şöyle :

 ls | grep -c ""

,

2 Yorum

Neden Ubuntu?

Uzun süre windows kullandıktan sonra ubuntuya acil geçiş yapan birisi olarak hem ‘neden ubuntu?’ olduğunu hem de ubuntu geçmişim çok eski bir tarihe dayanıyor olmasa da geçiş sürecinden kendim üzerinden bir kaç örnek verebilirim.

Çoğumuz windows kullandığımız için virüs programlarının bilgisayarı ne kadar kastığını biliriz. Linux tabanlı işletim sistemlerinde böyle bi sorun yok. Çünkü sistem dosyaları üzerinde işlem yapmaya çalıştığımızda bize yönetici şifresi sormakta. Windowsta herhangi bi program kurduğumuzda, o program bütün dosyalara erişebilir, değiştirebilir ve silebilir. Bilgisayarı restart yaptığımızda ise hiç hoş olmayan şeylerle karşılaşabiliriz. Ubuntuda ise virüsler kafalarına göre dosyalara erişemezler, çünkü yetkileri yoktur.

Açılış kapanış sürelerine de özellikle değinmek istiyorum. Windows XP, Windows Vista kullanmış ve Windows 7 kullanmaya devam eden biri olarak, şimdiye kadar 30 saniyede açılan bir windowsum olmadı. Ki bence öyle bir windows yok. Üşenmedim ve saniye tuttum, tek sefer de değil bir kaç kere denedim bunu, Ubuntu en kötü ihtimalle 35 saniye içinde kullanıma hazır hale geldi. Windowsun hazır hale gelmesi ise en az 1:30 ya da 2 dakikayı buluyor.

Windowsunuz eğer onarılamaz hale gelirse, format atmaktan başka çareniz kalmaz. Hepimiz illa ki formatlamışızdır kullandığımız windowsu çünkü bir süre sonra virüs, trojan, spy vs. bir sürü şey bulaştığında windows yavaşlar. Ubuntuda ise böyle bir sorun yok yukarıda bahsettiğim sebeplerden ötürü. Yani Ubuntu kurduğunuzda format gibi bir derdiniz olmaz.

Hiç windows ile Hata Raporu gönderdiniz mi? Microsoftun sınırlı sayıda çalışanı olduğu için dünyada milyonlarca insanın taleplerine geri dönüşleri doğal olarak çok geç olabiliyor. Ama Ubuntuda bir problem olduğunda, açık kaynaklı olduğu için tüm geliştiriciler aynı anda müdahale edebilirler. Tek bir satır kodun bile on binlerce belki de yüz binlerce kişi tarafından incelendiğini, onarıldığını düşündüğümüzde Ubuntunun ne kadar güvenli olduğunu da anlamış oluruz.

Bir de Driverlar var. Sürücüler. Yeni bir windows kurduğunuz zaman(önceki sürümler için), ekran kartı, anakart, ses kartı vs. bir sürü sürücüyü kurmamız gerekmekte. Kurulumu gerçekleştirdikten sonra da tabi ki Windowsu restart etmemiz gerekmekte. Microsoft artık buna yavaş yavaş çözüm bulmaya başlamış olsa da, araştırdıktan sonra öğrendim ki Ubuntuda bu yıllardır böyleymiş. Hala daha Windows için driver gereken şeyler olabiliyor, (VINN denilen tak-çalıştır cihazlar gibi).

Ayrıca bilgisayarınıza bir şey yüklemek istediğiniz zaman internette aramanıza gerek yok. Ubuntu Software Center ile istediğiniz şeye rahatça ulaşıp anında bilgisayarınıza kurabiliyorsunuz. Windowstaki gibi internette saatlerce arayıp crackleme derdi yok.

Windowstaki Windows Update, sadece işletim sisteminin güncellemeleriyle ilgilenir. Kullandığınız herhangi bi programın updatei geldiği zaman da(microsofta ait olmayan), özel olarak o programı update etmeniz gerekmektedir. Ubuntuda ise Update Manager, gerekli tüm güncellemeleri tek tık ile yapmakta. Hatta, Ubuntunun son sürümüne de tek bir tık ile geçtim dakikalar önce.

Ram kullanımı da bir çok kullanıcı için önemlidir. Kullandığım Windows 7 (64 bit), bilgisayar açıldığında sistem hazır halde beklerken yaklaşık 1.1 GB ram kullanmakta. Ubuntu ise yine yaklaşık olarak 300-400 MB arasında ram kullanmakta.

Yine genel olarak bilgisayarlarımız windowsun herhangi bir sürümü kurulu olarak gelir. Biz aslında farkında olmadan işletim sistemine para vermiş oluruz. Ubuntu ve linux kaynaklı işletim sistemleri ücretsizdir. Hatta daha yeni çıkan Ubuntu 12.04 LTS burada. Windowstan vazgeçemem diyenler için Wubi.exe şiddetle tavsiye edilir :)

Hiç mi dezavantajı yok Ubuntu’nun?

Var elbette. Ama size bağlı. Eğer oyunlarınızdan vazgeçemiyorsanız, ya da sadece windows üzerinde çalışan uygulamaları kullanmaya mecbursanız (adobe photoshop, autocad benzeri), windows ile kalabilirsiniz, ama bu sizin bilgisayarınıza ayrıca Ubuntu kurmanıza engel değil. Ayrıca yıllar ilerledikçe sadece windows üzerinde çalışan her uygulamanın Ubuntu için alternatifleri çıkmakta. Bir kaç örnek için buraya bakabilirsiniz.

Yaklaşık 5 aydır bilgisayarımda iki işletim sistemi var, Windows 7 ve Ubuntu. Mecbur kalmadıkça windowsa geçmiyorum, aslında pek mecbur da kalmıyorum. Tabi ki kullanımla alakalı büyük ölçüde. %70 Ubuntu, %30 Windows diyebilirim kullanım oranlarım için şu anda.

Windows daha çok son kullanıcıya yönelik olduğu için insanları cezbediyor. Live Messenger ve Gtalk yerine Empathy kullandığım zamanlar, ilk başta tuhaf gelmeye başlamıştı ama artık diğerleri garip gelmeye başladı. Gwibber gibi bir uygulama da mevcut. Şöyle ki, facebook ve twitter benzeri sosyal ağlarınızı bağlayıp tek bir akış yaratabiliyorsunuz. Bildirimleri de isteğinize bağlı olarak masaüstünüzde görebiliyorsunuz. Korkmayın Ubuntu’dan :)

, , , , , ,

3 Yorum

Linuxta Bash ile Döngü Örnekleri

Linux / Unix işletim sisteminde shell seviyesinde döngüleri nasıl yaparım?

2,3 Parametreli bir döngü algoritmasını nasıl yazarım?

Döngü demek , aynı işlemlerin veya birbirine çok yakın işlemlerin tekrar tekrar yapılması demektir. Peki Shell seviyesinde bu işlemleri nasıl yaparız?

Ön Not : bu kodları herhangi bir dosyaya yazıp daha sonra bu dosyayı sh komutu ile çalıştırırsanız da olacaktır. Ben bu şekilde deniyorum.

For döngüsü :

yazımda numaralı çalışma şekli aşağıdaki gibidir. Döngü 5 kere dönecektir. Ayrıca döngü içinde değişkeni de kullanabilirsiniz. Normal Bash yani.

#!/bin/bash
for i in 1 2 3 4 5 .. N
do
	echo "$i inci defa calisiyor"
done

Ayrıca aşağıdaki şekilde döngüdeki değişkeni örneğin 2şer 2şer artmasını sağlayabiliyorsunuz.

#!/bin/bash
echo "Bash versiyonu ${BASH_VERSION}..."
for i in {0..10..2}
  do
     echo "$i inci defa calisiyor"
 done

C stili for döngüsü :

#!/bin/bash
for (( c=1; c< =5; c++ ))
do
	echo "$c inci defa calisiyor"
done

Sonsuz Döngü :

Önemli olarak demeliyim ki ; Sonsuz döngü kullanınca sistem kaynaklarını çok basit bir komutla tüketebilirsiniz. Bu yüzden burada sleep komutu koyup işleminizi en azından saniyede 1 yapmanızda yarar var.

#!/bin/bash
for (( ; ; ))
do
   sleep 1
   echo "sonsuz dongu [ cikmak icin CTRL+C yapınız. ]"
done

Duruma bağlı döngüler, (break komutuyla birlikte )

Aşağıdaki kod, /etc/ dizinindeki tüm dosyaları okuyup bunları bir dongu halinde gezer. dogru dosyayı bulunca , istdigi islemi yapar (dosyanin icinde kaç tane nameserver varsa bunları listeler) ve donguden cıkar.

#!/bin/bash
for file in /etc/*
do
	if [ "${file}" == "/etc/resolv.conf" ]
	then
		countNameservers=$(grep -c nameserver /etc/resolv.conf)
		echo "${file} dosyasında toplam  ${countNameservers} nameserver tanimlanmis"
		break
	fi
done

break, gibi yine continue özelliğini de kullanabilirsiniz.

Ayrıca döngüde if içinde döngü yapılan klasör içindeki dosyaadı.bak dosyayı varsa bir işlem yapmak istiyorsanız veya istemiyorsanız, (örnğein yedeği varsa yedeğini alma işlemini continue edebilirsiniz) döngüde aşağıdaki if komutunu kullanabilirsiniz.

#!/bin/bash
FILES="$@"
for f in $FILES
do
        # dosyaadı .bak yedek dsoyası varsa, diğer dosyaya geç
	if [ -f ${f}.bak ]
	then
		echo "$f dosyasini atliyoruz..."
		continue  # sonraki dosyayı okuması icin cp komutunu geçiyoruz.read next file and skip cp command
	fi
        # bu noktada yedek dosyanin olmadigi durum algilandigindandosyayı kopyalamak icin cp komutu kullaniyoruz
	/bin/cp $f $f.bak
done

Ekstra olarak da farkettiğiniz gibi, bir bash dosyası içinde yorum eklemek istiyorsanız başına # koymanız da yeterli. Umarım işinize yarar.

, , , , , , ,

5 Yorum

linux sembolik link nedir linux sembolik link olusturma (symbolic link)

Sembolik bağ (symbolic link) Nedir?

İşletim sistemlerinde her dosya bir dizinin (klasörün) içindedir. Bizim dosyamız bir klasörün içinde bulunuyor ve aynı zamanda farklı bir klasörde daha olmasını istiyorsak, ama bunu yaparken dosyanın kopyalarını oluşturmak istemiyorsak, (sadece oradan da erişilebilmesini istiyorsak) dosyayı diğer klasöre kopyalamak yerine sembolik bağ (symbolic link) oluşturabiliriz. Böylece tek dosya olmuş olacak (değişiklik yapıldığında her yere tek tek kopyalamak zorunda kalmayacaksınız) hem de diğer link oluşturulan yerlerden de erişim verebilmiş olacaksınız. Disk maliyeti de daha düşük olacaktır.

Sembolik link ile klasörleri de linkleyebilirsiniz. Bu sayede bir sürü link oluşturmanız gereken durumları da sürklase etmiş olursunuz.

Linux için sembolik link oluşturma şöyle yapılır :

ln -s /dosyanin/bulundugu/dizin/dosya.txt /linkin/olusturulacagi/dizin/dosya.txt

Aynı şekilde linklemenin bir klasör için de yapabileceğinizi belirtmiştim yukarıda. Dosya adı yerine klasörü kullandığınızda da klasör için linkleme yapmış olursunuz.

Özellikle sunucularda, paket program mantığında çokça kullanabileceğiniz bu işlem ile, 200 Account olan bir serverda kaynak dosyalardan dolayı oluşan disk maliyeti 1/200 oranına azalmış olacaktır. yani %99,5 avantajlı olacaksınız. Dosya okuma hızı konusunda da avantajlı olacaksınız. Çünkü işletim sistemi (günümüz işletim sistemlerinin hemen hepsinde var bu) sürekli kullanılan dosyaları önbelleğine alacaktır. Ama siz dosya okuma konusunda daha da hız istiyorsanız, bu konuya farklı bir yazıda değineceğim. (Bu konuda bir kaç şey daha yapılabilir.)

, , , , ,

8 Yorum

Linux stat Komutu (command)

Linux’ta bir klasörde ls -l komutuyla görebildiğiniz dosya yetkileri, dosya sahibi, oluşturulma tarihi , vb.. gibi bilgileri tek dosya için göstermeye yarayan komuttur. Yani parametre olarak gönderilen dosya için ilgili bilgileri ekrana basan komuttur.

stat dosyaadi

şeklinde yazdığınızda ekrana bu bilgilerin hepsini yazar. Klasör listeniz genişse direkt olarak tek dosya için bu komutu kullanabilirsiniz.

, , ,

2 Yorum

Ubuntu’da `Requires installation of untrusted packages´ sorunu

Bir kaç gündür Ubuntuma bir şeyler yüklemek istiyordum fakat hatayla karşılaşıyordum. Update Manager kullandığımda ise böyle bir hata çıktı.

Requires installation of untrusted packages @ubuntu

Requires installation of untrusted packages @ubuntu

Öncelikle Update Manager’ın download yaptığı serverı United States yerine Main Server yapıp denedim, ama çözüm olmadı.

Daha sonra terminalde NO_PUBKEY şeklinde bir hata olduğunu farkettim. Onun da resmi şöyle;

terminal @ubuntu

terminal @ubuntu

Resimde de altını çizdiğim olaymış derdimiz meğer :)

Yapmamız gereken şu, öncelikle terminali açıp update ediyoruz.

sudo apt-get update

Çıkan PUBKEY’leri bir kenarda tutalım, çünkü birazdan işimize yarayacaklar. Bende 1 tane vardı, sizde birden fazla varsa ayrı ayrı işlem yapabilirsiniz.

sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com XXXXXXXXX

XXXXXX yazdığım yere PUBKEY gelecek, yani ben B725097B3ACC3965 yazdım.

Daha sonra tekrar update;
sudo apt-get update

Artık rahat rahat download yapabilirsiniz!

, , , , ,

2 Yorum

Bir Klasördeki Optimum Dosya Sayısı (optimum file count in a directory)

Bir sunucunuz varsa, içerisinde bir sürü hesabınız varsa veya bir sunucudaki birden çok hesabı yönetiyorsanız, bu anlatacağım en çok sizi ilgilendiriyor. Herkes için de faydalı bir bilgi tabi ki.

Bir yazılımda cache, temp vb. klasörler olmaktadır. Yalnız, bu klasörlerin içeriği dinamik olarak kısıtlanmadığından veya kısıtlanmasının maliyetinden dolayı, klasördeki dosya sayısı çok dinamik olarak artacaktır.

Normalde bir klasöre elle de çok fazla dosya atmış olabilirsiniz. Bu da benzer bir durumdur. Örneğin, bir ürün kataloğunuz var ve resimleri katalog klasörünün altına koydunuz.

Bu noktada önerimiz bir klasör içine 3000-5000 den fazla dosya koymayın. Bu tabi direkt bu sayı olarak söylemem zor ama yine de 10000′den kesinlikle fazla olmasın. Alt klasörden bahsetmiyorum, dosyadan bahsediyorum. Burada alternatif olarak katalog klasörünün içine 01/, 02/ diye klasörler açıp 500 500 koymakta yarar var.

Kendinizi işletim sisteminin yerine koyun. Elinizde bir adres var, içinde yığınla insan var. Siz içlerinden daha önce tanışmadığınız birini arıyorsunuz, kendisinden bir bilgi alacaksınız. Bulmanız çok zor. Özellikle bu içerideki kişilerin isimlerinin ilk birkaç karakteri aynı ise, o zaman iş daha da zorlaşır. Bu noktada belirtilen adreste odalar koysanız, insanları da alakalı oldukları yere göre odalara koysanız, (odalar burada klasör manasına geliyor, yapılan işlem de klasör oluşturarak manuel indeks oluşturmak) aradığınız şeyi hangi odada arayacağınızı bildiğiniz sürece işlemini hızlanacaktır. Ki zaten klasör ismini biz veriyorsak, olumlu etki edecektir.

Benim gibi bir cache klasöründe 40000 tane dosya oluşmasını ve hatayı tespit etmek için serverda cirit atmanız gerekmeden bu bilgiyi öğrenebilirseniz ne güzel. 40000 dosya (zend_cache dosyası) içinden php, ilgili dosyayı load edesiye kadar mysqlden çekse çok daha hızlı olacaktı halbuki. (cache tamamen ters bir mantığa dönmüştü). Dinamik bir cache mantığı vardı.

Olayı da şöyle tespit ettim ; mysqlde doğru düzgün query düşmüyordu. Sunucuda top komutu çalıştırdığımızda httpd isteklerinin normalden 2-3 kat cpu harcadığını gördük, bağlantı sayısı da normalden azdı. Biz de ilk önce mail sunucusu veya yedekleme ile ilgili bir sorun oluştuğunu düşündük fakat, gelen isteklerin yoğunluk yaratan hesaplardan birinin cache klasörüne girip baktığımda bu tabloyla karşılaştık. Bu dosyaları temizlediğimizde ise makinadaki stres tamamen gitti. (Bu konuda yazılım geliştirmesi ile görev oluşturduk, ve gelişimi için gerekli aşamalara başladık.)

Bu bilgiyi tecrübe ederek öğrenmemeniz dileğiyle, iyi çalışmalar dilerim.

, , , , , , , ,

Yorum yok