Bağlantıyı kapattığımda bitmeyen SSH üzerinden komut dosyası nasıl çalıştırılır?


18

Komut dosyasını çalıştırmam gerekiyor, yürütmesi uzun sürüyor ya da sadece sonsuza kadar çalışmasını istiyorum. Makineme yalnızca SSH veremem, çünkü bağlantısını kestiğimde çalışmayı durdurur.

Onu başlatan kabuğa bağlı olmayan komut dosyası çalıştırmanın bir yolu var mı?

Ubuntu 9.04 kullanıyorum.

Yanıtlar:


24

Komutu önce nohup komutuyla çalıştırabilirsiniz. Ayrıca, terminali tekrar takmanıza olanak tanıyan 'ekranda' da çalıştırabilirsiniz.

Örneğin:

ssh mySever 'nohup bash myscript.sh'

Ya da nohup komutunu çalıştırın ve çalıştırın. Bağlantıyı kesseniz bile çalışmaya devam etmelidir. Bunun nedeni nohup'un SIGHUP singal'ı (hangup) durdurmasıdır.

Ekran biraz daha kapsayıcı, ancak 20 dakika boyunca temel bilgileri öğrenmeniz gerekebilir, buradaki en kullanışlı araçlardan biridir. İşte bir öğretici .


Kyle tarafından sniped ...> gülümseme <
Evan Anderson

Evan'ı yakalayan herkese +1. Mutlu 10K :)
squillman

1
öğreticiye bağlantı koptu :(
Ido Ran

7

Ben sadece nohup kullanırım. Çıktıya önem veriyorsam, onu bir günlük dosyasına yönlendiriyorum, yoksa / dev / null'a gönderirim.

Misal:

nohup scp file.tar.gz root@someserver:/var/tmp > /dev/null 2>&1 &

Çıktı / dev / null olacak şekilde arka planda kalır ve oturumu kapatırsanız HUP sinyaline karşı bağışıklık kazanır. Ayrıca, oturumunuza bağlı olmamak için işi belirli kabuklarla (bash gibi) "reddedebilirsiniz".

disown %1

1
İhmal için +1
Mark

5

Ekranı kurmak için: apt-get install screen

Sonra basitçe kullanarak başlatın: screen

Ve man screenanahtar bağlayıcılığı elde etmek için.


1! ekran da bir şey!
Javier

Ekran kullanıyordum, ancak çeşitli nedenlerle tmux'a geçtim. Google "tmux vs screen" ve bunun gibi bazı bağlantılar bulacaksınız: superuser.com/questions/236158/tmux-vs-screen
m0j0

2

Bir sunucuda oturumunuz açıkken, aşağıdaki komutla bir komut dosyasını müstakil modda çalıştırabilirsiniz:

nohup script >script.out 2>script.err &

Daha sonra tekrar oturum açtığınızda, herhangi bir çıktı için script.out ve herhangi bir hata iletisi için script.err dosyasını kontrol edebilirsiniz. Aynı dosyada çıktı ve hata mesajları istiyorsanız, şunu yapın:

nohup script >script.out 2>&1 &
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.