Post

Girişte tmux İçinde Otomatik Yeniden Başlatma ve Günlüklemeyle Bash Betiği Çalıştırma

🇹🇷 Arch Linux'ta tmux içinde Bash betiklerini otomatik başlatma, yeniden başlatma ve günlükleme rehberi.

Girişte tmux İçinde Otomatik Yeniden Başlatma ve Günlüklemeyle Bash Betiği Çalıştırma

Arch Linux’ta systemd olmadan girişte bir Bash betiğini tmux içinde otomatik olarak başlatabilir ve şimdi de daha kolay izleme için çıktısını günlüğe kaydedebilirsiniz. Bu rehber şunları gösterir:

  1. Otomatik Bağlanma - hemen bağlanır.
  2. Arka Plan - ayrılmış olarak çalışır.
  3. Otomatik Yeniden Başlatma - betik çökerse yeniden başlatır.
  4. Günlükleme - çıktıyı bir dosyaya kaydeder.

Basit (Günlüklemesiz)

Adım 1: ~/tmux_simple.sh Oluşturun

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

SESSION="fbses"

# Oturumun zaten var olup olmadığını kontrol et
tmux has-session -t $SESSION 2>/dev/null

if [ $? != 0 ]; then
    # Oturum yok, oluştur ve Python betiğini çalıştır
    tmux new-session -d -s $SESSION
    tmux send-keys -t $SESSION "python3 /home/fb/autostart/myprogram/run.py" Enter
fi

# Oturuma bağlan
tmux attach -t $SESSION

Çalıştırılabilir yapın:

1
chmod +x ~/tmux_simple.sh

Adım 2: ~/.bash_profile‘dan Çağırın

1
2
[[ -f ~/.bashrc ]] && . ~/.bashrc
/home/fb/tmux_simple.sh

Otomatik Yeniden Başlatma ve Günlükleme ile Otomatik Bağlanma

Adım 1: ~/tmux.sh Oluşturun

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash

SESSION="fbses"
SCRIPT="/home/fb/autostart/myprogram/run.py"
LOG="/home/fb/autostart/myprogram/run.log"

# Oturumun var olup olmadığını kontrol et
tmux has-session -t $SESSION 2>/dev/null

if [ $? != 0 ]; then
    # Oturum oluştur ve Python betiğini yeniden başlatma döngüsü ve günlükleme ile çalıştır
    tmux new-session -d -s $SESSION "while true; do python3 $SCRIPT >> $LOG 2>&1; echo 'Betik çöktü. 5s içinde yeniden başlatılıyor...' >> $LOG; sleep 5; done"
fi

# Otomatik olarak bağlan
tmux attach -t $SESSION

Çalıştırılabilir yapın:

1
chmod +x ~/tmux.sh

Adım 2: ~/.bash_profile‘dan Çağırın

1
2
[[ -f ~/.bashrc ]] && . ~/.bashrc
/home/fb/tmux.sh

Sadece Arka Planda Otomatik Yeniden Başlatma ve Günlükleme ile

Adım 1: ~/tmux_bg.sh Oluşturun

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

SESSION="fbses"
SCRIPT="/home/fb/autostart/myprogram/run.py"
LOG="/home/fb/autostart/myprogram/run.log"

# Oturumun var olup olmadığını kontrol et
tmux has-session -t $SESSION 2>/dev/null

if [ $? != 0 ]; then
    # Oturum oluştur ve Python betiğini yeniden başlatma döngüsü ve günlükleme ile çalıştır
    tmux new-session -d -s $SESSION "while true; do python3 $SCRIPT >> $LOG 2>&1; echo 'Betik çöktü. 5s içinde yeniden başlatılıyor...' >> $LOG; sleep 5; done"
fi

# Kullanıcıyı bilgilendir
echo "tmux oturumu '$SESSION' arka planda çalışıyor."
echo "Görüntülemek için 'tmux attach -t $SESSION' kullanın."
echo "Betik çıktısı $LOG dosyasına kaydediliyor"

Çalıştırılabilir yapın:

1
chmod +x ~/tmux_bg.sh

Adım 2: ~/.bash_profile‘dan Çağırın

1
2
[[ -f ~/.bashrc ]] && . ~/.bashrc
/home/fb/tmux_bg.sh

tmux Oturumlarını Yönetme

  • Oturumları listele:
1
tmux ls
  • Manuel olarak bağlan:
1
tmux attach -t fbses
  • Ayrıl (çalışmaya devam etsin):
1
Ctrl + b, sonra d
  • Gerekirse oturumu sonlandır:
1
tmux kill-session -t fbses
  • Günlüğü kontrol et:
1
tail -f /home/fb/autostart/myprogram/run.log

Hangi Sürümü Kullanmalısınız?

  • Basit (Günlüklemesiz) Hızlı testler veya küçük betikler için bunu kullanın. Sadece betiğin çalışmasını ve hemen görmeyi istediğinizde, çökme kurtarma veya günlükler olmadan iyidir.

  • Otomatik Yeniden Başlatma ve Günlükleme ile Otomatik Bağlanma Sürekli izlemek istediğiniz uzun süren betikler için en iyisi. Çökerse otomatik olarak yeniden başlatır ve her şeyin tam bir günlüğünü tutar.

  • Sadece Arka Planda Otomatik Yeniden Başlatma ve Günlükleme ile Girişte bir tmux penceresi açmadan çalışması gereken betikler için idealdir. Başsız sunucular veya arka plan görevleri için mükemmeldir, aynı zamanda yeniden başlatılabilir ve günlüğe kaydedilir.

İpucu: Tüm sürümler, kullanıcınız altında bir tmux oturumu oluşturur. Şunları kullanabilirsiniz:

1
tmux ls

sadece arka planda olanlar da dahil olmak üzere tüm oturumları görmek için ve:

1
tmux attach -t fbses

gerektiğinde manuel olarak bağlanmak için.

Bu şekilde, tekrarlanan girişlerde birden fazla oturum oluşturmadan betikleri güvenle yönetebilirsiniz.

This post is licensed under CC BY 4.0 by the author.