[Çözüldü] Çalışan betiğin oturumu açıp kapattıktan sonra tekrar çalışmasını engellemek

Başlatan guopx, 04 Mayıs 2013 - 01:43:54

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

guopx

Başlangıç uygulamalarına eklediğim birkaç betik var mesela birinin adı betik1 olsun. Sistem açıldığında bu betik başlatılıyor ve işlemlerde betik1 olarak görünüyor ancak problem şu; oturumu kapatıp açtığımda işlemlerde 2 tane betik1 görüyorum, tekrar kapatıp açtığımda 3 tane... Yani betik çalıştığı halde tekrar tekrar çalıştırılıyor. Bunu engellemenin bir yolu var mı?
Ya betik oturum kapatılırken sonlandırılsın ya da tekrar giriş yapıldığında eğer çalışıyorsa tekrar çalıştırılmasın istiyorum.
Teşekkürler
Sevdiklerine sevdiğini söyle çok geç olmadan.

if


guopx

Sevdiklerine sevdiğini söyle çok geç olmadan.

if

Hmm...Şu an aklıma gelen tek yöntem şu: diyelim betiği çalıştırınca rotatelog arka planda süreli çalışıyor. Bu da rotatelog'un bir pid'ye sahip olduğu anlamına gelir. Betiği çalıştırdığımızda bu pid "null" değilse (yani hâl-i hazırda çalışıyorsa) hiç bir şey yap diyebiliriz.


PID_OF_PROCESS=`pidof logrotate`
if [[ "$PID_OF_PROCESS" ]]
then
: # burdaki : bir şey yapma anlamında
else
logrotate
fi
exit 0
gibi

guopx

Cahilliğimi bağışlayın logrotate nedir?
Ben de şöyle bir şey buldum işe yarıyor gibi
#!/bin/bash
if ps aux | grep "[b]etik1" > /dev/null
then
    echo "Çalışıyor bir şey yapma"
else
    echo "Çalışmıyor o zaman çalıştır :)"

fi
Sevdiklerine sevdiğini söyle çok geç olmadan.

if

Ne cahilliği @guopx, logrotate örnek bir komut. Bu betiğin içinde en azından bir komut çalıştırıyorsunuz değil mi? İşte ben de o komutun pid'sini kullanıp istediğinizi gerçekletirecek bir örnek sundum.

Sizin bulduğunuz benim yaptğımı anlatmış fakat sizin bulduğunuz istediğinizi gerçekleştirmez. Sadece "Çalışıyor bir şey yapma" ya da "Çalışmıyor o zaman çalıştır :)" yazdırır ekrana.

PID_OF_SCRIPT=`ps aux | grep [b]etik | awk '{ print $2 }'`
if [[ "$PID_OF_SCRIPT" ]]
then
: # burdaki : bir şey yapma anlamında
else
./nerede/bu/betik # burda betiği çelıştırırız
fi
exit 0
bu şekilde daha açıklayıcı olmuştur.

guopx

Sevdiklerine sevdiğini söyle çok geç olmadan.

if


guopx

Sevdiklerine sevdiğini söyle çok geç olmadan.