Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Wednesday, April 30, 2008

Tips Linux: Menghapus baris kosong dalam suatu file

Gunakan perintah berikut:

sed -e '/^[ ]*$/d' inputfile > outputfile


Regular expression ^[ ]*$ adalah yang menunjukan line kosong. Karakter didalam kurung kotak [] adalah spasi dan tab jika anda ingin mengabaikan line yang hanya berisi spasi dan atau tab saja.

karakter d setelah regular expression berarti menghapus (delete) setiap line yang match.

Monday, April 07, 2008

Linux jalan di Windows

Sudah lama gak pake Linux secara intensif, hari ini saya mencoba untuk punya sistem operasi Linux di laptop yang bersistem operasi Windows. Untuk kemudahan, sejak awal saya berencana untuk mempunyai Linux yang jalan diatas Windows.

Saya pilih Knoppix tanpa alasan jelas, kemudian mencoba menjalankannya dengan Microsoft Virtual PC. Setelah download file ISO Knoppix, saya coba run di virtual PC tetapi hasilnya saya anggap gagal karena kadang-kadang sistem diam tanpa meresponse, mouse pointer pun tidak jalan.

Akhirnya saya bisa jalankan Knoppix dari file ISO pada emulator QEMU dengan menggunakan bantuan StartLinux.exe. Caranya sangat gampang, download file tersebut lalu jalankan program self extractor StartLinux.exe. Kemudian masukan file ISO ke dalam direktori hasil ekstrak tadi, lalu jalankan startLinux.bat. Saya tidak perlu mendownload QEMU on windows karena StartLinux.exe berisi aplikasi tersebut.

Friday, May 04, 2007

Aritmetika untuk nilai pecahan pada shell script

Dengan menggunakan bash script kita bisa melakukan operasi aritetik dengan menggunakan $(()), misalnya $(( 1 / 3)) yaitu pembagian 1 dengan 3. Tapi yang dihasilkan adalah 0 kenapa karena hasil dari perintah tersebut adalah integer. Kita tidak bisa menggunakan ekspresi seperti ini $(( 1.0 / 3.0 )).

Menggunakan perintah exp kita juga akan mendapati hal yang sama. Cobalah perintah berikut

exp 1 / 3

hasilnya yang akan didapat adalah 0.

Sepertinya tidak ada cara dalam bash scripting untuk melakukan operasi aretmetik yang melibatkan nilai pecahan (floating point number atau rational number). Solusinya adalah menggunakan perintah bc dengan menspesifikasikan nilai skala (scale) yaitu jumlah bilangan pecahan yang akan muncul. Contoh berikut akan menghasilkan nilai 1.33

echo "scale=2;4/3" | bc


jika scale kita ganti nilainya menjadi 5, perintah diatas akan menghasilkan 1.33333

Monday, January 29, 2007

Too many open files

Pernah menjalankan program java dan mendapatkan error "Too many open files" seperti dibawah ini?


java.io.IOException: Too many open files
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:145)
...

atau

java.net.SocketException: Too many open files
at com.sun.xml.rpc.client.http.HttpClientTransport.invoke(HttpClientTransport.java:140)
at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:96)


Mudahnya, hal tersebut terjadi karena program java ataupun sistem operasi mencapai batas jumlah soket atau file yang dapat dibukan pada saat bersamaan (concurrent).

Yang perlu dilakukan ketika mendapatkan error tersebut adalah, pastikan program yang anda buat selalu menutup file atau socket setelah tidak digunakan. Yang kedua, tambah maximum jumlah socket atau file yang bisa dibuka bersamaan pada sistem operasi yang anda gunakan.

Untuk Linux anda bisa check jumlah socket atau file yang dibuka bersamaan dengan program atau command lsof, misalnya untuk mengecek jumlah socket yang sedang dibuka berikan perintah 'lsof -i. Maximum jumlah socket atau file yang bisa dibuka secara bersamaan dapat dilihat dengan perintah 'ulimit -a'

Untuk mengubah setting maximum jumlah file tersebut, anda bisa mengedit file /etc/security/limits.conf atau dengan perintah berikut:

ulimit -n 2048

echo 2048 > /proc/sys/fs/file-max
echo 16384 > /proc/sys/fs/inode-max

Lebih jelas mengenai masalah ini, bisa dibaca di artikel "Resolve to many open files."

Followers