23 Aralık 2009 Çarşamba

Linux Shell Programlama

Script'i hangi shell'in çalıştıracağının belirtilmesi


Script dosyasının başındaki #! ifadesi ile bu scriptin hangi shell tarafından çalıştırılacağı belirtilir. Örneğin script dosyasının ilk satırında #!/bin/sh yazmışsak bu script'in /bin'de yer alan sh yorumcusu tarafından çalıştırılıcağını belirtmiş oluyoruz. Kullanılabilecek diğer bazı yorumcular:
#!/bin/csh

#!/bin/bash
#!/usr/bin/perl


Dosya içeriğinde kelime arama

grep ntp messages
Messages dosyasında ntp geçen satırları listelemektedir.

ls -l | grep mysqld
ls -l ile listelenen dosyalardan mysqld ifadesine göre bir filtreleme yapılmaktadır.


Dosya arama

find . -name "*.log" -print
Bu komutla bulunduğumuz dizin ve tüm alt dizinlerdeki log uzantılı dosyalar listelenmektedir.

find /var/log -name "messages*" -exec grep samba {} \; -print
/var/log dizinindeki messages ile başlayan dosyalarda ntp ifadesinin geçtiği satırları bulmaktadır.


Sıkıştırılmış dosyalarla çalışma

zip backup.zip backup
Backup dizini backup.zip adıyla zip formatında sıkıştırılmıştır.

unzip backup.zip
Zip formatıyla sıkıştırılmış backup.zip isimli dosyayı açar.

gzip message.log
message.log dosyasını Lempel-Zip formatında sıkıştırır ve message.gz isimli dosya üretir


gunzip message.gz
Lempel-Zip formatında sıkıştırılmış message.gz isimli doyayı açar.


For döngüsü ile dizin içeriğinin listelenmesi

for i in {1..5}; do echo $i; ls; sleep 5; done

Aritmetik işlemler

set i = $(( $i + 1 ))







18 Aralık 2009 Cuma

Eclipse

Bu yazıda anlatılanlar Eclipse'in 3.5 versiyonunda tespit edilmiştir. Teorik olarak farklı versiyonlarda farklı yapılar olabilmekle beraber pratikte yaklaşık tüm versiyonlar için geçerli olduğu düşünülmektedir.


 

Workspace dizin ve dosyaları

Proje listesi ve dizinleri

org.eclipse.core.resources dizininde proje listesi ve bu projeler ile ilgili bazı ayarlar yer almakta. .projects/proje_adı/.location dosyasında projenin konum bilgisi yer almakta. .root ve .safetable dizinleri de yine projeler ile ilgili gerekli bazı referansları tutmak ve bu dizinler silinmemeli. Silinirse Eclipse tekrar açıldığında proje listesi boş gelmektedir.
Workspace'in encodingi
org.eclipse.core.runtime\.settings\org.eclipse.core.resources.prefs dosyasına encoding=UTF-8 kaydı eklenerek workspace'in varsayılan encoding'i UTF-8 yapılabilir.
Kullanıcı tanımlı kütüphaneler
Kullanıcı tarafından tanımlanan kütüphane tanımları org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs dosyasında tutulmaktadır.
Açılışta tanıtım ekranının görünmesi
org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs dosyasındaki showIntro değişteninin değeri false yapılarak tanıtım Eclipse açıldığında tanıtım ekranının açılması engellenebilir.
Perspective ve View'ler
Workspace'te hangi perspective ve view'lerin yer aldığı bilgisi org.eclipse.ui.workbench/workbench.xml dosyasında tutulmaktadır.
org.eclipse.core.resources/.span
Bu dosya workspace oluşturulurken geçici olarak üretilmekte ve workspace oluşturulduktan sonra silinmektedir.

17 Aralık 2009 Perşembe

MySQL

Bu kısımda mysql ile ilgili çeşitli bilgiler verilecektir.


Komut satırından veritabanına bağlantı

Veritabanı yeni oluşturulmuşsa ve/veya kullanıcının bir şifresi yoksa:
# mysql -ukullanici_adi
# mysql -uroot

Kullanıcının şifresi varsa:
# mysql -ukullanıcı_adı -pşifre
# mysql -uroot -proot


Kullanıcının şifresini değiştirme

Veritabanı yeni oluşturulmuşsa ve/veya kullanıcının bir şifresi yoksa:
# mysqladmin -u kullanıcı_adı password şifre
# mysqladmin -u root password root

Kullanıcının şifresi varsa:
# mysqladmin -u kullanıcı_adı -p eski_şifre password yeni şifre

# mysqladmin -u root -p root password 123456

SQL ile şifre değiştirme:
mysql# use mysql;
mysql# update user set password=PASSWORD("yeni_şifre") where User='root';
mysql# flush privileges;


Root şifresini sıfırlama

1. MySQL servisi kapatılır.
2. MySQL servisi --skip-grant-tables seçeneği ile başlatılır.
         Eğer bu şekilde başlatılmasında problem oluyorsa my.cnf/my.ini dosyasının mysqld kısmına skip-grant-tables yazan bir satır eklenip, servis yeniden başlatılır.
3. MySQL sunucusuna root olarak bağlanılır.
4. Yeni şifre SQL yöntemi ile belirlenir.
5. Komut satırından çıkılıp MySQL servisi yeniden başlatılır.

LINUX'te kullanım örneği
1. # /etc/init.d/mysql stop
2. # mysqld_safe --skip-grant-tables
3. # mysql -u root
4. mysql# use mysql;
    mysql# update user set password=PASSWORD("yeni_şifre") where User='root';
    mysql# flush privileges;
    mysql# quit
5. # /etc/init.d/mysql restart


Shell script'ten sql kullanmak

--execute parametresi ile istenilen sql komutu çalıştırılabilir.

mysql --user=root --password=degistir --execute="show databases"

mysql --user=root --password=degistir --execute="CREATE DATABASE DENEMEVT CHARACTER SET utf8 COLLATE utf8_turkish_ci"


Sunucuya başka bilgisayarlardan erişim

MySQL artık ağ erişimi açık olarak gelmektedir. Varsayılan olarak sadece yerel bilgisayardan erişime izin vermektedir. my.cnf/my.ini dosyasında bind-address değişkeninin değerini 0.0.0.0 ya da sunucunun IP adresi olarak değiştirirseniz MySQL servisine başka bilgisayarlardan da erişebilirsiniz. Gerektiği durumlarda aşağıdaki 2 maddeyi de uygulamalısınız.


Kullanıcı yetkisi vermek

Aşağıdaki komut root kullanıcısına tüm bilgisayarlardan DENEMEVT şeması üzerinde her tür işlem yapma yetkisi verir.
GRANT ALL ON DENEMEVT.* TO 'root'@'%'
 

Linux sunucularda uzaktan erişim

Linux sunucularda uzaktan erişim için yukarıdaki başlıkta yapılan işlem yeterli olmayabilir.
Bu durumda /etc/hosts.allowed dosyasına "mysqld: ALL" yazan bir satır eklemeniz gerekecektir.