anesteziker adlı üyeden alıntı
Merhaba,
Synology marka bir sunucum var. Açılışta ayağa kaldırmak için hazırladığım bir python dosyası var onu çalıştırmak istiyorum. Yani cihaz her boot edildiğinde otomatik olarak tetiklenmesi gerekiyor. Bunun için aşağıdaki kodları buldum. Örnekte bu şekilde çalışacağı yazıyor fakat bir türlü çalıştıramadım. Kod hakkında yardımcı ollursanız sevinirim. Kolay gelsin.
#!/bin/sh # Synology DSM bootup script # Configured Variables:
PYTHON_EXEC="/volume1/@appstore/Python3.9/usr/bin/python3.9"
SCRIPT_EXEC="/usr/share/plc/plc.py"
#Begin script case "$1" in start)
PATH=$PATH:/volume1/@appstore/Python3.9/usr/bin printf "%-30s" "Starting script" ${PYTHON_EXEC} ${SCRIPT_EXEC} & printf "[%4s]\n" "done";;stop)
printf "%-30s" "Stopping script" printf "[%4s]\n" "done" ;; *)
echo "Usage: $0 {start|stop}"
exit 1 esac
exit 0
Belirttiğiniz Synology sunucunuzun açılışında otomatik olarak bir Python betiğini çalıştırmak istiyorsanız, öncelikle bu işlem için bir init betiği oluşturmanız gerekebilir. Ancak dikkat edilmesi gereken bazı noktalar vardır.
-
İlk olarak, Synology cihazınıza SSH erişimi sağlamalısınız. Bu işlemi DSM yönetim arayüzünden etkinleştirebilirsiniz.
-
Python betiğinizin başlangıcında #!/usr/bin/python3.9
gibi bir "shebang" satırı olmalıdır, bu satır Python yürütücüsünü betiğinizi çalıştırmak için belirtir.
-
Ardından, /usr/local/etc/rc.d/
dizini içinde bir başlangıç betiği oluşturmanız gerekebilir. Örneğin, /usr/local/etc/rc.d/myscript.sh
gibi bir dosya oluşturun. Bu dosya, sistem başlatıldığında otomatik olarak çalıştırılacaktır.
-
Başlangıç betiği içinde, Python betiğinizi çalıştıracak komutları ekleyin. Başlangıç betiği çalıştırıldığında, bu Python betiği otomatik olarak çalışacaktır.
İşte örnek bir başlangıç betiği (myscript.sh) önerisi:
#!/bin/sh
case "$1" in
start)
/usr/bin/python3.9 /path/to/your/script.py
;;
stop)
# Durdurma işlemi gerekiyorsa buraya ekleyebilirsiniz.
;;
*)
echo "Kullanım: $0 {start|stop}"
exit 1
;;
esac
exit 0
Bu başlangıç betiği, cihaz başlatıldığında Python betiğinizi /path/to/your/script.py yolundaki betiği çalıştıracaktır. Betiğin yolu ve adı ile uygun şekilde güncellemeyi unutmayın.
Son olarak, başlangıç betiğinizi çalıştırılabilir hale getirmek için aşağıdaki komutları kullanın:
chmod +x /usr/local/etc/rc.d/myscript.sh
Artık Synology cihazınızı yeniden başlattığınızda, Python betiği otomatik olarak çalışacaktır.
Ayrıca, Verdiğiniz betikte bazı düzeltilmesi gereken hatalar bulunuyor. İşte düzeltilmiş betik:
#!/bin/sh
# Konfigüre Edilmiş Değişkenler
PYTHON_EXEC="/volume1/@appstore/Python3.9/usr/bin/python3.9"
SCRIPT_EXEC="/usr/share/plc/plc.py"
# Başlangıç komutları
case "$1" in
start)
PATH=$PATH:/volume1/@appstore/Python3.9/usr/bin
printf "%-30s" "Skript başlatılıyor..."
${PYTHON_EXEC} ${SCRIPT_EXEC}
printf "[%4s]\n" "tamamlandı"
;;
stop)
printf "%-30s" "Skript durduruluyor..."
# Durdurma işlemi gerekiyorsa buraya ekleyebilirsiniz.
printf "[%4s]\n" "tamamlandı"
;;
*)
echo "Kullanım: $0 {start|stop}"
exit 1
;;
esac
exit 0
Yapılan düzeltmeler ve açıklamalar:
-
#!/bin/sh satırı ile başlıyoruz, bu, betiğin bir shell betiği olduğunu belirtir.
-
Değişkenleri doğru bir şekilde atadık.
-
PATH ayarını start durumunda betiğin başında belirttik, böylece Python yürütücüsünün doğru yolu bulunur.
-
printf komutları düzeltilerek, betiğin çalışma durumunu daha iyi gösteriyorlar.
-
stop durumu için betiğinizi durdurma kodlarını eklemek isterseniz, bu kodu ilgili bölüme ekleyebilirsiniz.
Bu düzeltilmiş betik, Synology cihazınızın başlangıcında Python betiğinizi otomatik olarak çalıştırmalıdır.
Mesaj 1 defa düzenlendi. Son düzenleyen: OFffLaZZzz (16.10.2023 20:32)