Forum
Linux de batch file hazırlamak istiyorum. Amacım tar komutu ile sıkıstırma arsivleme yapmak, service komutuyla servis acıp kapatmak.
Bu 2 ayrı komut icin windowsdaki gibi bat dosyası nasıl yapabilirim, hem text modda hem de GUI arabiriminde nasıl yapılır batch dosyası?
Bir de calıstırmak icin GUI de uzerine cift mi tıklanıyor? Yoksa Konsole dana dosya adınımı yazarak calıstırıyorsunuz?
Merhabalar,
Buna bat yazma demeyelim de(Linux kullanan üstadlara ayıp olur) betik yada script yazma diyelim. Yazdığınız script'i belirli zamanlarda çalıştırmak için onu crontab'e eklemeniz gerekir. Service komutu ile çalıştırmanıza gerek yok. Yazdığınız betik de hangi klasörleri yedek alacağını belirtirseniz sorun çözülür.
Hocam arkadasımızın sorusunu ben de merak ettim, yeniyim ben de Linux de.
linux script i komut satırından nasıl calıstırılır nasıl bir komutu vardır, ve tabi nasıl yazıcaz?
crontab -e Crontab'e girişini yapar, yoksa yaratır.
crontab -l Crontab'i görüntüler
crontab -r Crontab dosyaını kaldırır
crontab -v Crontab e en son girişini gösterir.
30 18
* * *
rm /tmp/* her gün akşam 6.30 tmp dosyalarını temizler.
Kolay gele
Konuyla ilgili ben de şunu anlamak istiyorum.
Linux shell komutları ile kernel komutları aynı şeyi ifade etmiyor değil mi? Mesela chmod komutu adduser komutu ls komutu bunlar Linux komutu olarak mı adlandırmak doğru shell komutu olarak mı adlandırmak doğrudur?
Öğrendiğim kadarıyla Linux scriptleri .sh uzantılı olarak yazılıyor. Script içinde iptables gibi komutlar ya da bilinen bütün linux komutları çalıştırılabilir mi?
Ve scripti o anda çalıştırmak için konsolda path ini ve adını yazmak yeterli midir?
Linux'da birden fazla kabuk bulunmaktadır ve komutlarda, işlevlerde farklılıklar gösterebilir. O bilgi birikime sahip isen sıfıdan kabuk bile yazabilirsin. Hangi kabuğu kullandığını öğrenmek için $ echo $SHELL komutu yeterli olacaktır. Script'de linux komutları kullanabilir, ama bu bana yeterli olmaz diyorsan eğer kabuk programlamaya giriş yapman gerekiyor. O ise biraz çetrefilli bir iş.
Scripti path'ini yazarak çağırabilirsin.
Öğrendiğim kadarıyla Linux scriptleri .sh uzantılı olarak
yazılıyor. Script içinde iptables gibi komutlar ya da bilinen bütün
linux komutları çalıştırılabilir mi?
evet çalıştırabilirsin hocam.
# vi deneme.sh
komutu ile bir dosya açın. dosya içine
ls
yazıp kaydedin çıkın.
#sh deneme.sh
komutunu çalıştırdığınızda ls komutunun çalıştığı görülür.
iyi çalışmalar.
Örnek bir uygulamam oracle yedeklerini alıp bir sunucu üzerine update ediyor.
Uzantlarda .sh zorunluluğu yoktur (Ne olduğunu anlamak isterseniz sh önerilir.) sadece chmod ile +x vermiş olmanız gerekir. (execute)
<!-- /* GeSHi (c) Nigel McNie 2004 ( http://qbnz.com/highlighter) */.bash .de1, .bash .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;color: #000020;}.bash {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;}.bash a:link {color: #000060;}.bash a:hover {background-color: #f0f000;}.bash .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}.bash .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}.bash .imp {font-weight: bold; color: red;}.bash li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;font: normal normal 95% 'Courier New', Courier, monospace; color: #003030;}.bash li.li2 {font-weight: bold;font-weight: bold; color: #006060;}.bash .kw1 {color: #b1b100;}.bash .kw3 {color: #000066;}.bash .es0 {color: #000099; font-weight: bold;}.bash .br0 {color: #66cc66;}.bash .st0 {color: #ff0000;}.bash .nu0 {color: #cc66cc;}.bash .re0 {color: #0000ff;}.bash .re1 {color: #0000ff;}.bash .re2 {color: #0000ff;}.bash .re3 {color: #808080; font-style: italic;}.bash .re4 {color: #0000ff;} html { background-color: #f0f0f0; } body { font-family: Verdana, Arial, sans-serif; margin: 10px; border: 2px solid #e0e0e0; background-color: #fcfcfc; padding: 5px; } h2 { margin: .1em 0 .2em .5em; border-bottom: 1px solid #b0b0b0; color: #b0b0b0; font-weight: normal; font-size: 150%; } h3 { margin: .1em 0 .2em .5em; color: #b0b0b0; font-weight: normal; font-size: 120%; } h4 { margin: .1em 0 .2em .5em; color: #b0b0b0; font-weight: normal; font-size: 100%; } #footer { text-align: center; font-size: 80%; color: #a9a9a9; } #footer a { color: #9999ff; } textarea { width:95%; border: 1px solid #b0b0b0; font-size: 90%; color: #333; margin-left: 20px; } select, input { margin-left: 20px; } p { font-size: 90%; margin-left: .5em; } --
Kayıt 12.03.2010 15:41 tarihinde eklendi. 1 kez okundu.
#SHELL=/bin/bash #PATH=/sbin:/bin:/usr/sbin:/usr/bin:/u01/app/oracle/product/11.2.0/db_1/bin #MAILTO=root DOSYAR=`date +%d%m%H.dmp` DOSYAL=`date +%d%m%H.log` BACKUPDIR=/home/oracle/yedek/ ftp_site=1.2.3.4 user_name=username pass=1234567890 filename=$BACKUPDIR$DOSYAR.tar.bz2 su - oracle -c "expdp system/MANAGER@orcl directory=infotec dumpfile=$DOSYAR logfile=$DOSYAL schemas=hastane" su - oracle -c "cd $BACKUPDIR && tar -cvpjf $DOSYAR.tar.bz2 $DOSYAR --remove-files" ftp -in <<EOF open $ftp_site user $user_name $pass cd backup put $BACKUPDIR$DOSYAL $DOSYAL binary put $filename $DOSYAR.tar.bz2 close bye EOFKayıt 0.015 saniyede renklendirildi.
Örnek bir uygulamam oracle yedeklerini alıp bir sunucu üzerine update ediyor.
Uzantlarda .sh zorunluluğu yoktur (Ne olduğunu anlamak isterseniz sh önerilir.) sadece chmod ile +x vermiş olmanız gerekir. (execute)
<!--
/* GeSHi (c) Nigel McNie 2004 ( http://qbnz.com/highlighter) */
.bash .de1, .bash .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;color: #000020;}
.bash {color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;}
.bash a:link {color: #000060;}
.bash a:hover {background-color: #f0f000;}
.bash .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}
.bash .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}
.bash .imp {font-weight: bold; color: red;}
.bash li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;font: normal normal 95% 'Courier New', Courier, monospace; color: #003030;}
.bash li.li2 {font-weight: bold;font-weight: bold; color: #006060;}
.bash .kw1 {color: #b1b100;}
.bash .kw3 {color: #000066;}
.bash .es0 {color: #000099; font-weight: bold;}
.bash .br0 {color: #66cc66;}
.bash .st0 {color: #ff0000;}
.bash .nu0 {color: #cc66cc;}
.bash .re0 {color: #0000ff;}
.bash .re1 {color: #0000ff;}
.bash .re2 {color: #0000ff;}
.bash .re3 {color: #808080; font-style: italic;}
.bash .re4 {color: #0000ff;}
html {
background-color: #f0f0f0;
}
body {
font-family: Verdana, Arial, sans-serif;
margin: 10px;
border: 2px solid #e0e0e0;
background-color: #fcfcfc;
padding: 5px;
}
h2 {
margin: .1em 0 .2em .5em;
border-bottom: 1px solid #b0b0b0;
color: #b0b0b0;
font-weight: normal;
font-size: 150%;
}
h3 {
margin: .1em 0 .2em .5em;
color: #b0b0b0;
font-weight: normal;
font-size: 120%;
}
h4 {
margin: .1em 0 .2em .5em;
color: #b0b0b0;
font-weight: normal;
font-size: 100%;
}
#footer {
text-align: center;
font-size: 80%;
color: #a9a9a9;
}
#footer a {
color: #9999ff;
}
textarea {
width:95%;
border: 1px solid #b0b0b0;
font-size: 90%;
color: #333;
margin-left: 20px;
}
select, input {
margin-left: 20px;
}
p {
font-size: 90%;
margin-left: .5em;
}
--
Kayıt 12.03.2010 15:41 tarihinde eklendi. 1 kez okundu.
#SHELL=/bin/bash #PATH=/sbin:/bin:/usr/sbin:/usr/bin:/u01/app/oracle/product/11.2.0/db_1/bin #MAILTO=root DOSYAR=`date +%d%m%H.dmp` DOSYAL=`date +%d%m%H.log` BACKUPDIR=/home/oracle/yedek/ ftp_site=88.249.244.10 user_name=oracle pass=1234567890 filename=$BACKUPDIR$DOSYAR.tar.bz2 su - oracle -c "expdp system/MANAGER@orcl directory=infotec dumpfile=$DOSYAR logfile=$DOSYAL schemas=hastane" su - oracle -c "cd $BACKUPDIR && tar -cvpjf $DOSYAR.tar.bz2 $DOSYAR --remove-files" ftp -in <<EOF open $ftp_site user $user_name $pass cd backup put $BACKUPDIR$DOSYAL $DOSYAL binary put $filename $DOSYAR.tar.bz2 close bye EOFKayıt 0.015 saniyede renklendirildi.
Mücahid Bey'e ek olarak deneme.sh adında kaydettikten sonra,
chmod +x deneme.sh
komutuda verilmesi gerekebilir.
Mücahid Bey'e ek olarak deneme.sh adında kaydettikten sonra,
chmod +x deneme.sh
komutuda verilmesi gerekebilir.
Selam Emre
yukarıdaki işlemleri uyguladığında +x (çalıştırma) yetkisinin verilmesi gerekmez, +x yetkisini vermeden de dosyayı çalıştırabilirsin. Sebebi ise,
# sh deneme.sh
komutunu verdiğinde "deneme.sh" dosyasını sh komutuna parametre olarak verdiğinden dolayı, +x yetkisi olmasa bile çalıştırabilirsin.
Senin +x olması gerekir dediğin durum
#./deneme.sh
şeklinde dosyayı çalıştırmak isteyenler için geçerlidir 🙂
yinede bilgilendirme için teşekkürler, konuyu iyice açıklamış olduk
merhaba benim bir okey sitem var bat dosyası verine .sh dosyası çalışıtıroyurum fakat söyle bir sorun var putty ile vps baglanıyorum ./start.sh diyorum baslıyor ama putty kapattıgımda gidiyor sh nin içinde java ve mysql baglatısı yapan bir kod var sürekli çalışır duruma nasıl getirirm
Merhabalar,
Konu biraz gaçmiş fakat "&" işareti çalıştırdığınız programı arkaya atar ve siz online olduğunuz sürece çalıştırmaya devam eder. Bu durumda siz online değil iseniz o zaman komut sonlanıdr bu durumda arkadaşların söylediği gibi root ile crontab içine atmalısınız.
Merhabalar,
Ek olarak bende bişey ekleyeyim
# screen
komutunu incelerseniz size yardımcı olabilir.
İyi çalışmalar