Tampilkan postingan dengan label Linux. Tampilkan semua postingan
Thread dan Manfaatnya
Berbeda dengan proses, thread berjalan secara asinkronUs sementara proses berjalan secara sinkronus. Sementara untuk keuntungan menggunakan thread adalah * Tanggap: Multi-threading mengizinkan program untuk terus berjalan walaupun pada bagian program tersebut diblock atau sedang dalam keadaan menjalankan operasi yang lama/panjang. Contohnya multithread web browser dapat mengizinkan pengguna berinteraksi dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
- Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses. Keuntungan dari pembagian kode adalah aplikasi mempunyai perbedaan aktifitas thread dengan alokasi.
- Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses itu sangat mahal. Alternatifnya thread membagi sumber daya dari proses, Jadi lebih ekonomis.
- Pemberdayaan arsitektur multiprosesor: Keuntungann dari multithreading dapat ditingkatkan dengan arsitektur multiprosesor, dimana setiap thread dapat berjalan secara parallel pada prosesor yang berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang berjalan di setiap waktu.
#include<pthread.h>
#include<stdio.h>
void *read(void *ptr);
void *player(void *ptr);
int main ()
{
pthread_t tid1, tid2;
pthread_create(&tid1,NULL,&read,NULL);
pthread_create(&tid2,NULL,&player,NULL);
pthread_join(tid2,NULL);
return 0;
}
void *read(void * ptr)
{
char msg[100];
while(1){
fgets(msg,100,stdin);
printf("%s\n",msg);
}
return NULL;
}
void *player(void *ptr)
{
system("cvlc /home/ghulamfajri/Desktop/iris.mp3");
return 0;
}
TUTORIAL SOCKET PROGRAM C PADA SISTEM OPERASI LINNUX
Pengertian socket adalah interface pada jaringan yang menjadi titik komunikasi antarmesin pada Internet Protocol, dan tentunya tanpa komunikasi ini, tidak akan ada pertukaran data dan informasi jaringan. Socket terdiri dari elemen-elemen utama sebagai berikut:
- Protokol.
- Local IP.
- Local Port.
- Remote IP.
- Remote Port.
Komunikasi socket jaringan memang tidak mengenal lelah, pertukaran data terjadi terus-menerus dan memegang peranan vital.
Bayangkan sebuah server game online yang berkomunikasi tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.
Bayangkan sebuah server game online yang berkomunikasi tanpa henti, dimainkan oleh entah berapa banyak client yang tersebar. Ini merupakan salah satu contoh aplikasi dari sekian banyak aplikasi yang menggunakan socket jaringan untuk saling berkomunikasi dan bertukar data.
kodingan server socket:
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
int main(int argc, char *argv[])
{
int listenfd = 0, connfd = 0;
struct sockaddr_in serv_addr;
char sendBuff[1025];
time_t ticks;
listenfd = socket(AF_INET, SOCK_STREAM, 0);
memset(&serv_addr, '0', sizeof(serv_addr));
memset(sendBuff, '0', sizeof(sendBuff));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(5000);
bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
listen(listenfd, 10);
while(1)
{
connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
ticks = time(NULL);
snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n", ctime(&ticks));
write(connfd, sendBuff, strlen(sendBuff));
close(connfd);
sleep(1);
}
}
kodingan client socket:
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int sockfd = 0, n = 0;
char recvBuff[1024];
struct sockaddr_in serv_addr;
if(argc != 2)
{
printf("\n Usage: %s <ip of server> \n",argv[0]);
return 1;
}
memset(recvBuff, '0',sizeof(recvBuff));
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("\n Error : Could not create socket \n");
return 1;
}
memset(&serv_addr, '0', sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(5000);
if(inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0)
{
printf("\n inet_pton error occured\n");
return 1;
}
if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("\n Error : Connect Failed \n");
return 1;
}
while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
{
recvBuff[n] = 0;
if(fputs(recvBuff, stdout) == EOF)
{
printf("\n Error : Fputs error\n");
}
}
if(n < 0)
{
printf("\n Read error \n");
}
return 0;
}
Tentang PIPE dengan FIFO bahasa C
PIPE adalah suatu komunikasi proses antara program satu dengan program lainnya. Pipe ini hanya bisa berkomunikasi hanya dalam satu komputer, artinya tidak dapat komunikasi antara dua komputer atau lebih. Cara kerja Pipe adalah terdapat program yang menulis program yang nantinya disimpan dalam file kemudian ada program lain yang membaca file tersebut.
berikut contoh program yang menulis data (dapat berupa string/ variabel):
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int client_to_server;
char *myfifo = "/tmp/client_to_server_fifo";
int server_to_client;
char *myfifo2 = "/tmp/server_to_client_fifo";
char str[BUFSIZ];
printf("Input message to serwer: ");
scanf("%s", str);
/* write str to the FIFO */
client_to_server = open(myfifo, O_WRONLY);
server_to_client = open(myfifo2, O_RDONLY);
write(client_to_server, str, sizeof(str));
perror("Write:"); //Very crude error check
read(server_to_client,str,sizeof(str));
perror("Read:"); // Very crude error check
printf("...received from the server: %s\n",str);
close(client_to_server);
close(server_to_client);
/* remove the FIFO */
return 0;
}
berikut contoh program yang membaca data :#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
int main()
{
int client_to_server;
char *myfifo = "/tmp/client_to_server_fifo";
int server_to_client;
char *myfifo2 = "/tmp/server_to_client_fifo";
char buf[BUFSIZ];
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
mkfifo(myfifo2, 0666);
/* open, read, and display the message from the FIFO */
client_to_server = open(myfifo, O_RDONLY);
server_to_client = open(myfifo2, O_WRONLY);
printf("Server ON.\n");
while (1)
{
read(client_to_server, buf, BUFSIZ);
if (strcmp("exit",buf)==0)
{
printf("Server OFF.\n");
break;
}
else if (strcmp("",buf)!=0)
{
printf("Received: %s\n", buf);
printf("Sending back...\n");
write(server_to_client,buf,BUFSIZ);
}
/* clean buf from any data */
memset(buf, 0, sizeof(buf));
}
close(client_to_server);
close(server_to_client);
unlink(myfifo);
unlink(myfifo2);
return 0;
}
Latihan Soal BashScript Linux (2)
08:00:01-SUDAH TERLAKSANA
10:30:34
11:32:46
15:30:10
17:22:30”
>Jawab<
Maksud daripada soal diatas adalah file yang sudah kita unduh dari server yang berisi jadwal memberi makan ikan ketika jam komputer melebihi jadwal memberi makan ikan maka tiap baris sebelah kanan kita beri tanda “-SUDAH TERLAKSANA”. Berikut Bash Script untuk soal diatas.
#!/bin/bash
waktu=$(date +%d-%m-%Y) #Pendeklarasian variabel tanggal dari komputer
jam=$(date +%T) #Pendeklarasian variabel jam dari komputer
cd /home/didit/Desktop #Merubah list direktori ke desktop Linux
mkdir $waktu #Membuat folder dengan nama waktu
cd $waktu #Merubah direktori ke folder waktu yang sudah dibuat
export http_proxy=http://10.151.34.14:1111 #Menghubungkan ke proxy ITS
total_baris=$(wc -l < $jam) #Menghitung jumlah baris dalam file jam
i=2 #Variabel i=2, karena baris yang akan dibaca dimulai baris kedua
#Perulangan sebanyak n baris dikurangi satu baris
while [ $i -le $total_baris ]
do
if head -$i $jam | tail -1 | grep -q '^[0-9]' #Hanya membaca baris dengan di depan kata number 0-9
then
temp=$(head -$i $jam | tail -1) #Mengambil jam pada baris file
if [[ $temp < $jam ]] #Perbandingan antara jam di file dan komputer
then
perl -pi -e 's/'$temp'/'$temp' - SUDAH TERLAKSANA/' $jam #Menuliskan kata “-SUDAH TERLAKSANA” jika jam komputer melebihi jam jadwal memberi makan ikan di akuarium
fi
else exit 1
fi
((i++))
done
Latihan Soal BashScript Linux (1)
Pekerjaan Pur menuntut dia harus selalu memutakhirkan jadwal memberi makan ikan di akuarium sebelah komputer server. Pur harus mengunduh berkas "jadwal memberi makan ikan di akuarium sebelah komputer server" pada server "10.151.36.71/modul1/jadwal memberi makan ikan di akuarium sebelah komputer server" via HTTP. Setiap berkas yang diunduh diletakkan pada sebuah direktori yang namanya sesuai dengan tanggal, bulan, dan tahun saat ini. Berkasnya juga otomatis direname sesuai dengan hari tanggal, bulan, dan tahun saat ini. Berkasnya juga otomatis direname sesuai dengan jam, menit, dan detik ketika dia diunduh. Agar mempermudah tugas Pur, bantulah dia membuat script bash linux. Script tersebut harus dapat berjalan otomatis setiap 10 menit.
Jawab:
#!/bin/bash
waktu=$(date +%d-%m-%Y) #Pendeklarasian variabel tanggal dari komputer
jam=$(date +%T) #Pendeklarasian variabel jam dari komputer
cd /home/didit/Desktop #Merubah list direktori ke desktop Linux
mkdir $waktu #Membuat folder dengan nama waktu
cd $waktu #Merubah direktori ke folder waktu yang sudah dibuat
#export http_proxy=http://10.151.34.14:1111 #Menghubungkan ke proxy ITS
wget http://10.151.36.71/modul1/jadwal%20memberi%20makan%20ikan%20di%20akuarium%20sebelah%20komputer%20server -O $jam #Perintah Download file dari server yang akan dinamai dengan jam komputer.
Simpan script dengan nama soal2.sh di Desktop
Kemudian, agar shell tersebut otomatis tereksekusi setiap 10 menit maka kita gunakan perintah “crontab -e”. Dalam perintah tersebut terdapat atribut -e yang maksudnya adalah edit dari script crontab. Kemudian tambahkan */10 * * * * /home/didit/Desktop/soal2.sh. Setelah itu jalankan soal2.sh pada terminal. (Didit Sepiyanto -5113100090 -Teknik Informatika ITS)
Setting Proxy di Linux Menggunakan Terminal
Kalau kita mau mengakses wifi atau lan yang menggunakan proxy, dan kita menggunakan Sistem Operasi Linux, nah disini saya akan memberikan pencerahan cara setting proxy di terminal Linux.
export http_proxy=http://proxy.kampusku.com:3128
Kalau proxy yang digunakan mengharuskan autentikasi user dan password, perintahnya menjadi:
export http_proxy=http://user:password@proxy.kampusku.com:3128
Demikianlah posting singkat ini, tujuannya tidak lebih sekedar update blog yang sudah hampir sebulan tidak ada tulisan baru.
Cara Instal Linux Ubuntu 14.04 LTS
Ubuntu.com akan merilis versi terbaru yaitu Ubuntu 14.04 LTS (Long Term Support) dengan dukungan lebih lama bila dibandingkan dengan versi Ubuntu yang non-LTS. Ubuntu versi 14.04 LTS ini akan dirilis versi Finalnya pada tanggal 17 April 2014 dengan code name : Trusty Thar. Bagi para pemula yang ingin mencoba Linux Ubuntu 14.04 LTS ini berikut akan membahas cara Installasinya : Contoh Installasi ini menggunakan Harddisk ukuran 8GB dengan RAM 1GB
Sebelum memulai, terlebih dahulu siapkan keperluan yang dibutuhkan misal :
- Download ISO Ubuntu 14.04 LTS terlebih dahulu, atau silakan kunjungi link berikut : FREE! Download Linux Ubuntu 14.04 LTS Final Beta
- Kalau ISO sudah ada, tinggal kita buat Installernya di USB Disk saja biar lebih mudah dan cepat, untuk langkah pembuatannya, silakan kunjungi link berikut : Membuat Media Installer Ubuntu Di Flashdisk Dengan Unetbootin
Jika semuanya sudah siap, berikut langkah-langkah installasinya :
- Langkah pertama masukan installer anda, kemudian arahkan boot ke media Installer tersebut, tunggu sampai keluar menu seperti dibawah ini :
Keterangan : Try Ubuntu : Mencoba Linux Ubuntu 14.04 LTS tanpa harus Install, sedangkan Install Ubuntuadalah untuk memasang permanen Linux Ubuntu 14.04 LTS pada harddisk anda. Untuk kali ini karena kita mau Install ubuntu secara permanen maka gunakan pilih Install Ubuntu dan Pilih Jenis Bahasa, pada langkah ini menggunakan Bahasa Inggris.
- Menu dibawah ini adalah proses persiapan Installasi pada ubuntu, proses ini akan memeriksa semua periperal yang ada pada komputer/laptop anda, Pada langkah ini anda juga bisa memilih Download Update While Installing, yaitu pilihan untuk mendownload paket terbaru yang ada pada Ubuntu sama halnya dengan Install this third party software pilihan ini akan mendownload paket-paket yang berhubungan dengan multimedia seperti mpeg, mp3 dan lain sebagainya, semua pilihan ini bisa anda jalankan kalau terkoneksi dengan jaringan internet. Jika yakin pada pilihan anda klik Continue untuk melanjutkan.
- Pada menu Installation Type pertama, anda akan disajikan dengan berbagai menu pilihan diantaranya : Erase Disk anda Install Ubuntu yang berfungsi untuk menghapus seluruh data yang ada di Harddisk dan menggantikannya dengan partisi baru untuk Linux Ubuntu 14.04 LTS langkah ini akan mempersingkat waktu anda, jika pilihan ini dipilih maka langkah selanjutnya adalah lompat ke langkah 13, cukup singkat dan tidak menguras banyak waktu bukan. Untuk Pilihan Something Else digunakan jika anda akan menginstall DUAL BOOT atau di Harddisk anda terdapat Data Penting dalam partisi Harddisk anda, maka gunakan pilihan yang ini, begitupun dengan Installasi kali ini akan menggunakan menu Something Else, klik Continue untuk melanjutkan.
- Pada menu menu, jika harddisk anda terdeteksi baru, belum di partisi sebelumnya maka akan nampak seperti tampilan dibawah ini, untuk membuat partisi tabel partisi baru klik New Partition Table.
- Jika ada peringatan, Klik Continue untuk melanjutkan prosesnya.
- Jika tabel partisi sudah dibuat langkah selanjutnya adalah membuat type-type partisi yang akan digunakan oleh Ubuntu, Linux Ubuntu hanya memerlukan 2 Type partisi yang digunakan yaitu root:"/" sama swaparea. untuk membuat type partisi langkah pertama yaitu klik Menu + pada menu sebelah kiri bawah.
- Untuk membuat Type partisi yang pertama, tentukan ukuran yang digunakan sebagai sistemnya, misal 7GB dari 8GB kapasitas Total harddisk, Gunakan Primary, dan letakan di Beginning of this space, pada Use as pilih Ext4 Journaling file system, pada Mount point pilih root "/". kemudian klik OK.
- Langkah kedua, yaitu membuat type area swap dari sisa kapasitas harddisk yang digunakan, swap berfungsi sebagai RAM cadangan ketika RAM utama overload, maka untuk mencegah overload tersebut maka digunakanlah areaswap ini. Untuk membuatnya silakan klik Free Space, kemudian klik lagi tombol +.
- Untuk ukuran gunakan saja semuanya, dan yang terpenting adalah memilih swap area pada use as, kemudian klik OK.
- Jika semua sudah dibuat, maka akan terlihat seperti tampilan dibawah ini, perhatikan partisi yang akan diformat akan diberi tanda ceklist pada menu format ini, biarkan saja ceklist ini ada, untuk melanjutkan klik Install Now.
- Plih posisi negara dengan cara klik pada peta yang telah disediakan, kemudian klik Continue untuk melanjutkan.
- Pilih jenis keyboard yang ada pakai, biasanya pada menu ini sering kita lewati karena linux ubuntu akan otomatis mendeteksi jenis keyboard yang anda pakai, klik Continue untuk melanjutkan.
- Pada menu ini, isikan semua informasi tentang Anda, dari nama pemakai, nama komputer, username, password, jika sudah selesai klik Continue untuk melanjutkan.
- Tunggu, proses installasi sedang berjalan..
- Jika proses installasi sudah selesai, maka akan meuncul peringatan bahwa proses installasi telah selesai dilakukan, Klik Restart Now untuk melihat hasil installasi yang dilakukan tadi. dan jangan lupa untuk melepas media installer tersebut ketika komputer dalam keadaan Restart.
- Pada menu Login, masukan password yang anda isikan pada langkah no. 13.
- Inilah tampilan Ubuntu 14.04 hasil installasi diatas.
Selamat anda telah berhasil menginstall Ubuntu 14.04 LTS, semoga artikel ini membantu.
PENGATURAN CRONTAB PADA LINUX
Crontab digunakan untuk mempermudah anda dalam menjalanan program secara terjadwal ataupun secara berulang-ulang.
SYNTAX:
crontab [-u user] file "atau" crontab [-u user] [-l | -r | -e] [-i] [-s] Contoh file Crontab:
# use /bin/sh untuk menjalankan commands SHELL=/bin/sh # kirim email ke 'paul', MAILTO=paul # dijalankan 5 menit setelah tengah malam, setiap hari 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # dijalankan saat 2:15pm pada pertama pada setiap bulan 15 14 1 * * $HOME/bin/monthly # dijalankan saat 10 pm pada tiap minggu 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?% 23 0-23/2 * * * echo "jalan 23 menit setelah tengah malam, 2am, 4am ..., setiap hari"






















