Çözüm seçin
SSH oturumunuz kapandıktan sonra bir komutun çalışmaya devam etmesini sağlamak için aşağıdaki çözümlerden birini seçin:
Çözüm 1: nohup ve & komutlarını kullanma: Tek seferlik, etkileşimli olmayan otomatik betikleri veya komutları çalıştırmak için en uygun yöntemdir.
Çözüm 2: GNU screen kullanma: Uzun süren, hata ayıklama gerektirebilecek veya daha sonra sürdürülmesi gereken etkileşimli görevler için idealdir.
Çözüm 1: nohup ve & komutlarını kullanın
nohup komutu, terminali kapattığınızda bir işlemin çalışmaya devam etmesini sağlar; & sembolü ise işlemi arka plana gönderir.
-
Komutu arka planda çalıştırın.
Bu komut, hem standart çıktıyı hem de hata çıktısını
[your_log_file]dosyasına yönlendirir.sudo nohup [your_command] >[your_log_file] 2>&1 &Örneğin,
bash hello.shkomutunu arka planda çalıştırmak ve çıktıyı geçerli dizindekioutput.logadlı yeni bir dosyaya yazmak için aşağıdaki komutu çalıştırın:sudo nohup bash hello.sh > output.log 2>&1 &. -
Komut çıktısını görüntüleyin.
sudo tail -f [your_log_file] -
İşlemi sonlandırın.
Önemliİşlemi sonlandırmak, ilgili komutun veya görevin durmasına neden olur. Dikkatli olun.
-
İşlem Kimliğini (PID) bulun.
[your_command]ifadesini, 1. Adım içinde çalıştırdığınız komutla değiştirin.sudo ps aux | grep "[your_command]"Örneğin,
sudo nohup bash hello.sh > output.log 2>&1 &komutunu çalıştırdıysanız, PID'yi bulmak içinsudo ps aux | grep "bash hello.sh"komutunu çalıştırın. İşlemi sonlandırmak için
sudo kill [PID]komutunu kullanın.
-
Çözüm 2: GNU screen kullanın
-
GNU screen yükleyin.
-
Alibaba Cloud Linux ve CentOS için
sudo yum install -y screen -
Debian ve Ubuntu için
sudo apt-get install -y screen
-
-
Yeni bir oturum oluşturun ve bu oturuma girin.
[Name]ifadesi, oturumunuz için belirlediğiniz özel addır.screen -S [Name]Örneğin,
mysessionadlı bir oturum oluşturmak içinsudo screen -S mysessionkomutunu çalıştırın. Görevinizi yeni oturumda çalıştırın.
-
Oturumu ayırın.
Geçerli
screenoturumundan ayrılmak için Ctrl+A+D tuşlarına basın. -
Oturuma yeniden bağlanın.
-
Hedef oturumun PID'sini bulmak için mevcut screen oturumlarını listeleyin.
sudo screen -lsThere is a screen on: 2046.mytask (Detached) 1 Socket in /run/screen/S-root.Bu örnekte, oturum PID'si
2046değeridir. -
Oturuma yeniden bağlanın.
[PID]ifadesini, önceki adımdaki oturum PID'si ile değiştirin.sudo screen -r -d [PID]Örneğin, PID'si 2046 olan oturuma yeniden bağlanmak için
sudo screen -r -d 2046komutunu çalıştırın.
-
-
Oturumu sonlandırın.
ÖnemliBir oturumu sonlandırmak, bu oturum içinde çalışan tüm görevleri ve komutları da durdurur. Dikkatli olun.
[PID]ifadesini oturumun PID'si ile değiştirin.sudo kill [PID]