<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Neuronworks Blog, WebMethods, Oracle, Bea, Java Dev2Dev,   Arch2Arch   Neuronworks Make IT Easy, Let&#039;s Play the Game &#187; script</title>
	<atom:link href="http://blog.neuronworks.net/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.neuronworks.net</link>
	<description></description>
	<lastBuildDate>Tue, 01 Jun 2010 02:40:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Membackup Schema Oracle Secara Otomatis</title>
		<link>http://blog.neuronworks.net/2009/01/05/membackup-schema-oracle/</link>
		<comments>http://blog.neuronworks.net/2009/01/05/membackup-schema-oracle/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 13:01:05 +0000</pubDate>
		<dc:creator>alam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[exp]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://blog.neuronworks.net/?p=84</guid>
		<description><![CDATA[The Intro
Sebelumnya kita sudah mencoba membackup schema oracle menggunakan exp. Kita bisa memanfaatkannya untuk membuat sebuah sistem penjadwalan yang secara otomatis membackup schema tersebut pada waktu yang telah ditentukan. Tool yang digunakan selain Shell dan exp juga crontab. Crontab merupakan aplikasi penjadwalan di mesin Unix dan Linux. Crontab bekerja sebagai daemon atau service cron yang [...]]]></description>
			<content:encoded><![CDATA[<h3>The Intro</h3>
<p>Sebelumnya kita sudah mencoba <a href="http://blog.neuronworks.net/2008/12/31/backup-dan-restore-schema-oracle-menggunakan-exp-dan-imp/">membackup schema oracle menggunakan exp</a>. Kita bisa memanfaatkannya untuk membuat sebuah sistem penjadwalan yang secara otomatis membackup schema tersebut pada waktu yang telah ditentukan. Tool yang digunakan selain <strong>Shell</strong> dan <strong>exp</strong> juga <strong>crontab</strong>. Crontab merupakan aplikasi penjadwalan di mesin Unix dan Linux. Crontab bekerja sebagai daemon atau service <strong>cron</strong> yang setiap waktu akan mengecek apakah ada job atau tugas yang harus dilakukan pada waktu itu. Crontab menyimpan entri untuk setiap penjadwalan seperti ini:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>alam<span style="color: #000000; font-weight: bold;">/</span>someScript.sh</pre></div></div>

<p>Kolom <strong>pertama</strong> menunjukan <strong>menit</strong> dimana entri tersebut akan dijalankan. Kolom <strong>kedua</strong> untuk <strong>jam</strong>, kolom <strong>ketiga</strong> untuk <strong>tanggal</strong>, kolom <strong>keempat</strong> untuk <strong>bulan</strong>, kolom <strong>kelima</strong> untuk untuk <strong>hari</strong>, dan kolom <strong>terakhir</strong> menunjukan <strong>perintah apa yang akan dijalankan</strong>. Dari contoh diatas berarti setiap menit, setiap hari, setiap bulan cron akan menjalankan script tersebut.<br />
Pertama-tama kita buat dulu script sederhana, <strong>train-backup.sh</strong> yang berfungsi untuk membackup schema tersebut. Script tersebut akan membackup schema-nya di directory yang sudah ditentukan dengan nama file yang berbeda berdasarkan kapan schema tersebut dibackup.</p>
<h3>The Script</h3>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#script to backup oracle schema based on time when it saved</span>
<span style="color: #666666; font-style: italic;">#initializing variables</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span><span style="color: #000000; font-weight: bold;">/</span>bin
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_BASE</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_SID</span>=neuron
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BASEDIR</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>train-backup
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DTM</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">%</span>S<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">UNAME</span>=train
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PASSWD</span>=train
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">FILENAME</span>=train
&nbsp;
<span style="color: #666666; font-style: italic;"># command section</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BASEDIR</span>
exp <span style="color: #007800;">$UNAME</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$PASSWD</span> <span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">file</span></span>=<span style="color: #007800;">$FILENAME</span>-<span style="color: #007800;">$DTM</span>.dmp
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p>Jangan lupa beri execute permission dengan:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x train-backup.sh</pre></div></div>

<p>Script-nya cukup sederhana kan? Yang perlu dilakukan hanyalah inisialisasi variabel:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span><span style="color: #000000; font-weight: bold;">/</span>bin
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_BASE</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_SID</span>=neuron
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BASEDIR</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>train-backup
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DTM</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">%</span>S<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">UNAME</span>=train
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PASSWD</span>=train
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">FILENAME</span>=train</pre></div></div>

<p>dan perintah backup itu sendiri:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BASEDIR</span>
exp <span style="color: #007800;">$UNAME</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$PASSWD</span> <span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">file</span></span>=<span style="color: #007800;">$FILENAME</span>-<span style="color: #007800;">$DTM</span>.dmp</pre></div></div>

<p>Untuk sedikit memahami dasar dari shell scripting silakan <a href="http://blog.neuronworks.net/2008/12/29/membuat-application-control-script/">lihat kembali postingan sebelumnya</a>.<br />
Yang mungkin perlu diperhatikan adalah variabel <strong>DTM</strong> yang akan menyimpan format waktu untuk digunakan di nama filenya. Variabel <strong>DTM</strong> menyimpan hasil output dari perintah <strong>date</strong> yang akan menampilkan waktu saat itu dengan format <strong>YYYYMMDD-HH:MI:SS</strong>. Untuk lebih jelasnya coba jalankan perintah <strong>date</strong> tersebut di command line:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">%</span>S
<span style="color: #000000;">20090105</span>-<span style="color: #000000;">201620</span></pre></div></div>

<p>Variabel ini akan kita tambahkan di nama file backup schema-nya untuk membedakan satu file dengan yang lain.</p>
<h3>The Cron</h3>
<p>Sekarang kita masuk ke bagian <strong>cron</strong>-nya sendiri. Kita tentukan kapan saja backup akan dilakukan. Misal kita ingin backup dilakukan setiap jam 12 malam setiap hari Senin dan Jum&#8217;at. Entri crontab-nya seperti ini:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">*</span> 00 <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">1</span>,<span style="color: #000000;">5</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>alam<span style="color: #000000; font-weight: bold;">/</span>train-backup.sh</pre></div></div>

<p>Untuk memasukkan entri diatas gunakan perintah <strong>crontab -e</strong>. Editor <strong>vi</strong> akan terbuka. Untuk masuk ke mode insert tekan tombol <strong>i</strong>. Ketikkan atau paste entri yang tadi kita buat. Untuk menyimpannya tekan tombol <strong>Esc</strong>, dilanjutkan dengan tombol <strong>:</strong>, dilanjutkan dengan tombol <strong>x</strong>, yang berarti menyimpan sekaligus keluar dari <strong>vi</strong>.<br />
Untuk melihat apakah penjadwalan tersebut sudah masuk gunakan perintah <strong>crontab -l</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&amp;</span>gt; crontab <span style="color: #660033;">-l</span>
<span style="color: #666666; font-style: italic;"># DO NOT EDIT THIS FILE - edit the master and reinstall.</span>
<span style="color: #666666; font-style: italic;"># (/tmp/crontab.XXXXLhlmgJ installed on Mon Jan  5 20:28:21 2009)</span>
<span style="color: #666666; font-style: italic;"># (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)</span>
<span style="color: #000000; font-weight: bold;">*</span> 00 <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">1</span>,<span style="color: #000000;">5</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>alam<span style="color: #000000; font-weight: bold;">/</span>train-backup.sh</pre></div></div>

<h3>The&#8230; End?</h3>
<p>Selesai! Untuk melihat berhasil atau tidaknya kita lihat lagi besok apakah file backup schema-nya sudah ada atau tidak. <img src='http://blog.neuronworks.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>The Update</h3>
<p>Coba kita lihat hasilnya:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> ll train-backup
total 0</pre></div></div>

<p>Lho kok tidak ada? Ayo kita cek script-nya dengan cara dijalankan langsung:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> .<span style="color: #000000; font-weight: bold;">/</span>train-backup.sh 
.<span style="color: #000000; font-weight: bold;">/</span>train-backup.sh: line <span style="color: #000000;">16</span>: exp: <span style="color: #7a0874; font-weight: bold;">command</span> not found</pre></div></div>

<p>Hm? <strong>PATH</strong>-nya kan sudah masuk mestinya? Coba kita <strong>export</strong> dan tes lagi satu-satu variabelnya:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_BASE</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle
alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$ORACLE_BASE</span>
alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">ORACLE_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span>
alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$ORACLE_HOME</span>
-bash: <span style="color: #7a0874; font-weight: bold;">cd</span>: <span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>product<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">10.2</span>: Permission denied</pre></div></div>

<p>Ini dia masalahnya. User <strong>alam</strong> tidak punya permission untuk masuk ke direktori <strong>/app/oracle/product</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">&gt;</span> ll <span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>oracle<span style="color: #000000; font-weight: bold;">/</span>
total <span style="color: #000000;">20</span>
drwxr-x--- <span style="color: #000000;">3</span> oracle oinstall <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">22</span> <span style="color: #000000;">17</span>:08 admin
drwxr-x--- <span style="color: #000000;">3</span> oracle oinstall <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">22</span> <span style="color: #000000;">17</span>:09 flash_recovery_area
drwxr-x--- <span style="color: #000000;">3</span> oracle oinstall <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">22</span> <span style="color: #000000;">17</span>:08 oradata
drwxrwx--- <span style="color: #000000;">6</span> oracle oinstall <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">22</span> <span style="color: #000000;">17</span>:07 oraInventory
drwxrwx--- <span style="color: #000000;">3</span> oracle oinstall <span style="color: #000000;">4096</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">22</span> 00:07 product</pre></div></div>

<p>Jadi bagaimana solusinya? Kita jalankan script tersebut sebagai user yang punya permission untuk mengakses direktori tersebut, yaitu <strong>oracle</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">oracle<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #c20cb9; font-weight: bold;">mkdir</span> train-backup
oracle<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>alam<span style="color: #000000; font-weight: bold;">/</span>train-backup.sh 
&nbsp;
Export: Release 10.2.0.1.0 - Production on Tue Jan <span style="color: #000000;">6</span> <span style="color: #000000;">14</span>:<span style="color: #000000;">59</span>:<span style="color: #000000;">42</span> <span style="color: #000000;">2009</span>
&nbsp;
Copyright <span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">1982</span>, <span style="color: #000000;">2005</span>, Oracle.  All rights reserved.
&nbsp;
&nbsp;
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Export <span style="color: #000000; font-weight: bold;">done</span> <span style="color: #000000; font-weight: bold;">in</span> US7ASCII character <span style="color: #000000; font-weight: bold;">set</span> and AL16UTF16 NCHAR character <span style="color: #000000; font-weight: bold;">set</span>
server uses WE8ISO8859P1 character <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>possible charset conversion<span style="color: #7a0874; font-weight: bold;">&#41;</span>
. exporting pre-schema procedural objects and actions
. exporting foreign <span style="color: #000000; font-weight: bold;">function</span> library names <span style="color: #000000; font-weight: bold;">for</span> user TRAIN 
. exporting PUBLIC <span style="color: #7a0874; font-weight: bold;">type</span> synonyms
. exporting private <span style="color: #7a0874; font-weight: bold;">type</span> synonyms
. exporting object <span style="color: #7a0874; font-weight: bold;">type</span> definitions <span style="color: #000000; font-weight: bold;">for</span> user TRAIN 
About to <span style="color: #7a0874; font-weight: bold;">export</span> TRAIN<span style="color: #ff0000;">'s objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export TRAIN'</span>s tables via Conventional Path ...
. . exporting table                          TRAIN          <span style="color: #000000;">2</span> rows exported
EXP-00091: Exporting questionable statistics.
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting materialized views
. exporting snapshot logs
. exporting job queues
. exporting refresh <span style="color: #c20cb9; font-weight: bold;">groups</span> and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully with warnings.
oracle<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> ll train-backup
total <span style="color: #000000;">16</span>
<span style="color: #660033;">-rw-r--r--</span> <span style="color: #000000;">1</span> oracle oinstall <span style="color: #000000;">16384</span> <span style="color: #000000;">2009</span>-01-06 <span style="color: #000000;">14</span>:<span style="color: #000000;">59</span> train-<span style="color: #000000;">20090106</span>-145942.dmp</pre></div></div>

<p>Jadi masukkan <strong>cron</strong> job-nya yang tadi untuk user <strong>oracle</strong> dengan <strong>crontab -e</strong> juga.<br />
Dan crontab yang di user <strong>alam</strong> dihapus saja:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> crontab <span style="color: #660033;">-r</span>
alam<span style="color: #000000; font-weight: bold;">@</span>NeuronServer:~<span style="color: #000000; font-weight: bold;">&gt;</span> crontab <span style="color: #660033;">-l</span>
no crontab <span style="color: #000000; font-weight: bold;">for</span> alam</pre></div></div>

<p>Sekarang sudah pasti berhasil.</p>
<p>Semoga bermanfaat and have a lot of fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neuronworks.net/2009/01/05/membackup-schema-oracle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Membuat Application Control Script</title>
		<link>http://blog.neuronworks.net/2008/12/29/membuat-application-control-script/</link>
		<comments>http://blog.neuronworks.net/2008/12/29/membuat-application-control-script/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 06:07:58 +0000</pubDate>
		<dc:creator>alam</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://blog.neuronworks.net/?p=16</guid>
		<description><![CDATA[Background
Sekitar seminggu yang lalu saya ditugaskan untuk membuat sebuah skrip yang digunakan untuk mengontrol service di Linux. Skrip tersebut harus bisa menjalankan proses server apabila servernya belum dijalankan, mampu memberhentikan service tersebut dan juga merestart server, baik dari keadaan sudah dijalankan atau belum. Server executablenya disini merupakan aplikasi java dalam bentuk java archive.
Work Flow
Apabila user [...]]]></description>
			<content:encoded><![CDATA[<h2>Background</h2>
<p>Sekitar seminggu yang lalu saya ditugaskan untuk membuat sebuah skrip yang digunakan untuk mengontrol service di Linux. Skrip tersebut harus bisa menjalankan proses server apabila servernya belum dijalankan, mampu memberhentikan service tersebut dan juga merestart server, baik dari keadaan sudah dijalankan atau belum. Server executablenya disini merupakan aplikasi java dalam bentuk java archive.</p>
<h2>Work Flow</h2>
<p>Apabila user menjalankan skrip tersebut, skripnya akan mengecek apakah user memberikan parameter yang dibutuhkan, yaitu start, restart atau stop. Apabila user memasukkan parameter yang tidak dikenali, skrip akan menampilkan pesan yang memberitahukan bahwa parameter tidak dikenal. Apabila user memberikan parameter <strong>start</strong> skrip akan memeriksa apakah file <strong>server.pid</strong> yang berisi pid dari aplikasi tersebut ada atau tidak. Apabila ada skrip akan menampilkan pesan bahwa aplikasi tersebut sudah jalan dengan pid yang dambil dari file <strong>server.pid</strong>. Apabila belum skrip akan menjalankan aplikasi tersebut dan menyimpan pid dari process itu ke file <strong>server.pid</strong>. Bila parameter yang diberikan parameter <strong>stop</strong> maka skrip akan memeriksa apakah aplikasinya memang berjalan dengan mengecek file <strong>server.pid</strong>. Apabila ada skrip akan memberhentikan process tersebut dengan bantuan pid yang diambil dari file <strong>server.pid</strong>, dan setelah process-nya berhenti file <strong>server.pid</strong> tersebut akan dihapus. Apabila file <strong>server.pid</strong> tidak ditemukan maka skrip akan menampilkan pesan bahwa aplikasi yang dimaksud tidak berjalan. Parameter <strong>restart</strong> akan menjalankan fungsi <strong>stop</strong> terlebih dahulu dilanjutkan dengan fungsi <strong>start</strong>.</p>
<h2>Code</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</pre></td><td class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;">#License GPL Version 2</span>
<span style="color: #666666; font-style: italic;">#script to start, stop and restart server application</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#check if user enter the parameter</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: `basename $0` {start | restart | stop}&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#variable that hold java binary</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">JAVABIN</span>=<span style="color: #000000; font-weight: bold;">`/</span>app<span style="color: #000000; font-weight: bold;">/</span>java<span style="color: #000000; font-weight: bold;">/</span>jdk1.6.0_03<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>java<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#variable that hold base directory</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BASEDIR</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>server
<span style="color: #666666; font-style: italic;">#variable that hold jar file or server application location</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">JARFILE</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.jar
<span style="color: #666666; font-style: italic;">#variable that hold date time format for renaming log file</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DTM</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">%</span>S<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#variable that hold log file location</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">LOG</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.log
<span style="color: #666666; font-style: italic;">#variable that hold file containing server pid</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PIDFILE</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.pid
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> startServer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$PIDFILE&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server already running with pid:`cat $PIDFILE`&quot;</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #007800;">$JAVABIN</span> <span style="color: #660033;">-jar</span> <span style="color: #007800;">$JARFILE</span> <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #007800;">PID</span>=<span style="color: #007800;">$!</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$PID</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PIDFILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server started with pid:$PID&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> stopServer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #666666; font-style: italic;">#check if server already running</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$PIDFILE&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$PIDFILE</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server running with pid:$PID&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-9</span> <span style="color: #007800;">$PID</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$PIDFILE</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$LOG</span> <span style="color: #007800;">$LOG</span>-<span style="color: #007800;">$DTM</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server stopped&quot;</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server are not running&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BASEDIR</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;start&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server start command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to start the server here</span>
startServer
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;stop&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server stop command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to stop the server here</span>
stopServer
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;restart&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server restart command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to restart the server here</span>
stopServer
startServer
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;unknown command `basename $1`, supported command are: start, restart, stop&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div>

<p>Simpan file ini sebagai server.sh. Beri permission execute dengan:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x server.sh</pre></div></div>

<p>Jalankan skrip ini dengan perintah:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>server.sh</pre></div></div>

<h2>Explanation</h2>
<p>Baris yang pertama berupa:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span></pre></div></div>

<p>merupakan opsional. Saya lupa lagi apa istilahnya, intrepeter directive atau apa. Baris ini memberitahukan kepada Linux intrepreter apa yang digunakan untuk mengeksekusi skrip tersebut, dalam hal ini kita meminta agar skrip ini dieksekusi menggunakan shell default yang memiliki path <strong>/bin/sh</strong>. Di sistem operasi openSUSE <strong>/bin/sh</strong> merupakan symlink untuk Shell Bash <strong>/bin/bash</strong>. Apabila kita tidak menggunakan baris ini user harus menjalankan shell dengan skrip ini sebagai parameter seperti dibawah ini:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sh</span> server.sh</pre></div></div>

<p>Baris berikutnya:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#License GPL Version 2</span>
<span style="color: #666666; font-style: italic;">#script to start, stop and restart server application</span></pre></div></div>

<p>merupakan baris komentar. Baris yang diawali dengan <strong>#</strong> akan diabaikan oleh shell.</p>
<p>Potongan kode berikutnya:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#check if user enter the parameter</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: `basename $0` start | restart | stop&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>untuk melakukan pengecekan apakah user mengeksekusi skrip beserta parameter yang dibutuhkan.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;$1&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>Operator <strong>-z</strong> digunakan untuk mengecek apakah stringnya null atau tidak. <strong>$1</strong> merupakan built-in variable yang dapat kita gunakan untuk mengakses parameter pertama yang dijalankan bersama dengan skrip. Untuk mengakses parameter kedua dan seterusnya ganti nilai 1 dengan 2 dan seterusnya sampai 9. Apabila kosong, yang berarti user tidak memasukkan parameter yang kita harapkan, baris ini menghasilkan nilai true yang berarti akan menjalankan kode berikutnya:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: `basename $0` {start | restart | stop}&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p><strong>echo</strong> digunakan untuk mencetak ke alat output standar, dalam hal ini layar monitor. <strong>exit</strong> akan menyebabkan skrip untuk keluar.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#variable that hold java binary</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">JAVABIN</span>=<span style="color: #000000; font-weight: bold;">`/</span>app<span style="color: #000000; font-weight: bold;">/</span>java<span style="color: #000000; font-weight: bold;">/</span>jdk1.6.0_03<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>java<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#variable that hold base directory</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BASEDIR</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>server
<span style="color: #666666; font-style: italic;">#variable that hold jar file location</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">JARFILE</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.jar
<span style="color: #666666; font-style: italic;">#variable that hold date time format for renaming log file</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">DTM</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d-<span style="color: #000000; font-weight: bold;">%</span>H<span style="color: #000000; font-weight: bold;">%</span>M<span style="color: #000000; font-weight: bold;">%</span>S<span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#variable that hold log file location</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">LOG</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.log
<span style="color: #666666; font-style: italic;">#variable that hold file containing application pid</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PIDFILE</span>=<span style="color: #007800;">$BASEDIR</span><span style="color: #000000; font-weight: bold;">/</span>server.pid</pre></div></div>

<p>Potongan kode diatas melakukan insialisasi variabel-variabel yang akan kita gunakan dalam skrip ini. <strong>export</strong> digunakan untuk menset variabel shell. Pastikan tidak ada spasi antara nama variabel, <strong>=</strong> dan isi variabelnya. Untuk mengakses variabel tambahkan <strong>$</strong> dollar sign didepan nama variabel yang dimaksud.</p>
<p>Perhatikan baris kode ini:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">BASEDIR</span>=<span style="color: #007800;">$HOME</span><span style="color: #000000; font-weight: bold;">/</span>server</pre></div></div>

<p>Variable <strong>$HOME</strong> belum pernah diinisialisasi, lalu bagaimana bisa ada nilainya? Shell Bash memiliki beberapa variabel global yang dapat digunakan oleh process shell-shell yang dijalankan dibawahnya. Dalam hal ini <strong>$HOME</strong> berisi path home untuk user. Untuk melihat variabel-variabel apa saja yang tersedia, jalankan perintah <strong>env</strong> di command line. Pastikan variabel yang dinisialisasi belum digunakan untuk menghindari terjadinya konflik variabel.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> startServer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$PIDFILE&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server already running with pid:`cat $PIDFILE`&quot;</span>
<span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #007800;">$JAVABIN</span> <span style="color: #660033;">-jar</span> <span style="color: #007800;">$JARFILE</span> <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #007800;">PID</span>=<span style="color: #007800;">$!</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$PID</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PIDFILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server started with pid:$PID&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Potongan kode diatas merupakan fungsi yang digunakan untuk menjalankan server.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> startServer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span></pre></div></div>

<p>Merupakan syntax untuk membuat fungsi. Syntax ini cukup jelas penggunaannya.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$PIDFILE&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server already running with pid:`cat $PIDFILE`&quot;</span></pre></div></div>

<p>Operator <strong>-f</strong> digunakan untuk mengecek apakah file yang dimaksud ada yang akan mengembalikan nilai true dan mencetak process id (PID) dari aplikasi server tersebut.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #007800;">$JAVABIN</span> <span style="color: #660033;">-jar</span> <span style="color: #007800;">$JARFILE</span> <span style="color: #000000; font-weight: bold;">&amp;</span></pre></div></div>

<p>Jika file <strong>server.pid</strong> tidak ada maka aplikasi servernya akan dijalankan, dalam hal ini berarti aplikasi java. Parameter <strong>&#038;</strong> digunakan untuk mengirim process aplikasi tersebut ke background. Kenapa dikirim ke background? Agar pid aplikasi tersebut dapat diambil menggunakan kode berikut:</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #007800;">PID</span>=<span style="color: #007800;">$!</span></pre></div></div>

<p>Variabel <strong>$!</strong> digunakan untuk mengambil pid dari background process terakhir, dalam hal ini aplikasi server yang kita jalankan sebelumnya.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$PID</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$PIDFILE</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server started with pid:$PID&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Setelah itu nilai pid tersebut disimpan ke dalam file, dan skrip akan menampilkan pesan bahwa server sudah dijalankan dengan pid yang didapatkan sebelumnya.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> stopServer<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #666666; font-style: italic;">#check if server already running</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;$PIDFILE&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span></pre></div></div>

<p>Seperti sebelumnya, skrip akan mengecek apakah servernya berjalan atau tidak dengan melihat apakah file <strong>server.pid</strong> ada atau tidak, apabila ada</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PID</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$PIDFILE</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server running with pid:$PID&quot;</span></pre></div></div>

<p>nilai pid-nya akan disimpan ke variable <strong>$PID</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-9</span> <span style="color: #007800;">$PID</span></pre></div></div>

<p>kemudian process tersebut diberhentikan secara paksa menggunakan perintah <strong>kill</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$PIDFILE</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$LOG</span> <span style="color: #007800;">$LOG</span>-<span style="color: #007800;">$DTM</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server stopped&quot;</span></pre></div></div>

<p>file <strong>server.pid</strong> kemudian dihapus dan file log yang dihasilkan aplikasi server tersebut di rubah namanya ditambahkan dengan informasi waktu saat perintah ini dijalankan.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server are not running&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>Jika tidak ada skrip akan menampilkan pesan bahwa process yang dimaksud tidak ada.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$BASEDIR</span></pre></div></div>

<p>Agar semua proses eksekusi dijalankan dari direktori utama, kita pindah ke direktori yang ditentukan sebagai direktori utama dari skrip server ini.</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;start&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span></pre></div></div>

<p>Kemudian dicek apabila parameter <strong>start</strong> yang diberikan maka</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server start command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to start the server here</span>
startServer
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p>skrip akan memanggil fungsi <strong>startServer</strong>. Cara menjalankan fungsi di bash cukup dengan memanggil nama fungsinya seperti diatas.<br />
Jika yang berikan adalah parameter <strong>stop</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;stop&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server stop command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to stop the server here</span>
stopServer
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p>maka panggil fungsi <strong>stopServer</strong>.<br />
Jika parameter yang dipanggil <strong>restart</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">elif</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;$1&quot;</span> == <span style="color: #ff0000;">&quot;restart&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;server restart command issued...&quot;</span>
<span style="color: #666666; font-style: italic;">#put the code to restart the server here</span>
stopServer
startServer
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p>Jalankan fungsi <strong>stopServer</strong> terlebih dahulu dilanjutkan dengan <strong>startServer</strong>. Fungsi restart disini tidak akan memeriksa apakah aplikasinya sedang berjalan atau tidak, karena memang tidak ada bedanya.<br />
Jika user memberikan parameter diluar yang sudah kita tentukan diatas</p>

<div class="wp_syntax"><div class="code"><pre class="bash bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">else</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;unknown command `basename $1`, supported command are: start, restart, stop&quot;</span>
<span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>maka skrip akan menampilkan pesan bahwa paramater yang dimaksud tidak dikenal.</p>
<h2>Summary</h2>
<p>Flow dalam scripting language seperti bash cukup mudah untuk dipahami, seperti dalam contoh diatas, skripnya menjalankan baris-baris kodenya satu-persatu mulai dari inisialisasi variabel, pembuatan fungsi sampai flow utamanya yaitu dengan mengecek paramater mana yang dimasukkan user dan menjalankan perintah sesuai dengan parameter yang dimasukkan.<br />
Koreksi, saran dan pertanyaan silakan gunakan fasilitas komentar di bawah ini.</p>
<p>Semoga bermanfaat and have a lot of fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.neuronworks.net/2008/12/29/membuat-application-control-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
