aynı anda iki komut yürütme

Başlatan shigej38, 29 Temmuz 2019 - 10:00:58

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

shigej38

merhabalar arkadaşlar biyoinformatik işlerinde kullanılan programları bir .sh betiği ile sıra sıra çalıştırıp elimde ki dataları işliyorum. kullandığım programlar bi hayli uzun süreçlerde işlem yapıyorlar ve bilgisayarın kaynakları sonuna kadar kullanmıyorlar bunun için biraz daha hız kazanmak adına:
1- aynı anda aynı programa 2 farklı dosyayı işleyecek şekilde komut verilebilir mi sh betiği ile
2- ya da aynı anda 2 farklı program tek bir betik üzerinden çalıştırılabilir mi?

gecegezen

Çok bilgili değilim baştan söyliyeyim, Aynı anda değil ama bir komutun sonu & işareti konulduğu zaman komutun bitmesini beklemeden diğer komuta geçiyor buda sizin işinizi görü heralde. Örnek;
#!/bin/bash
ls -a /examplefolder &
leafpad &
ls -a /home
exec bash
Yotube kanalım hepinizi beklerim...
https://www.youtube.com/channel/UCsRQPZxNJKZbfpGy6r97nJw

illedelinux

Şu şekil yaparsan iki komut sırayla işlenir.

#!/bin/bash
sh -c "birinci-komut  ;  ikincikomut"


Şu şekil yaparsan iki komut aynı anda işlenir.

#!/bin/bash
sh -c "birinci-komut" &
sh -c "ikincikomut" &


Her iki tür uygulamada sayıları arttırabilirsin.

İstersen süre gerektiği durumlarda araya sleep komutu ekleyebilirsin.

#!/bin/bash
sh -c "sleep 2s ; birinci-komut ; sleep 2s ;  ikincikomut"

Veya

#!/bin/bash
sh -c "sleep 2s ; birinci-komut" &
sh -c "sleep 2s ; ikincikomut" &


Ayrıca işlem bittikten sonra çalışan ögeyi otomatik olarak sonlandırabilirsin.

#!/bin/bash
sh -c "sleep 2s ; birinci-komut ; sleep 2s ;  ikincikomut ; killall öge"

Veya

#!/bin/bash
sh -c "sleep 2s ; birinci-komut ; killall öge" &
sh -c "sleep 2s ; ikincikomut ; killall öge" &


Yine istersen işlemin bittiğini görsel uyarıyla yapabilirsin.

#!/bin/bash
sh -c "sleep 2s ; birinci-komut ; sleep 2s ;  ikincikomut ; killall öge ; notify-send 'İşlem tamamlandı' "

Veya

#!/bin/bash
sh -c "sleep 2s ; birinci-komut ; killall öge ; notify-send 'İşlem tamamlandı' " &
sh -c "sleep 2s ; ikincikomut ; killall öge ; notify-send 'İşlem tamamlandı' " &
GNU/Linux kullanmıyorum, onu yaşıyorum...

shigej38

İlginiz için her ikinize de teşekkür ederim bu kadar hızlı cevap gelmesini beklemiyordum.

bunu biraz daha geliştirelim desem mümkün olur mu?
mesela ilk başta fastq dosyalarımı alıp bunları sam dosyalarına çeviriyorum ve bu işlem dosya boyutuna göre zaman alabiliyor (zaman değişkenlik gösteriyor dosyadan dosyaya) burda ilk komutun işi bittikten sonra ikinci komutu yürütmesi gerekiyor çünkü ilk komutun çıktısı birinci komutun girdisi olucak şekilde düzenleniyor. bunu && ile yapabilirim ancak bu durum sadece ilk dosya işlenmesi süresince gerekicek bir durum daha sonrasında hazırda bir dosya olduğu için ilk dosyanın süreci devam edip bu süreç devam ederken ikinci dosyayı alıp işlemesini sağlar mı bilemiyorum