Komut reboot -f
asla geri dönmez (yeniden başlatmaya neden olma izniniz yoksa). Verildiği noktada, SSH istemcisi yapılması gereken bir şey bekliyor, bu da şunlar olabilir:
- SSH sunucusu istemciye dikkat edilmesi gereken bir şey olduğunu, örneğin görüntülenecek bir çıktı olduğunu veya uzak komutun bittiğini bildiren;
- istemci tarafında, röle sinyali gibi bazı olaylar;
- istemcinin kalıcı bir ileti göndermesine neden olan bir zamanlayıcı tetiklenir (ve sunucu yanıt vermezse bağlantıyı kapatır).
SSH sunucusu işlemi öldüğünden, zamanlayıcı tetiklenene kadar SSH istemcisi ölmez.
Eğer ssh remotehost 'reboot -f >/dev/null &'
koşarsan ne olur:
- Uzak kabuk,
reboot
komutu arka planda başlatır .
- Sunucu tarafı kabuk komutu çıktığı ve standart çıktı için dosya tanımlayıcısını açık tutan bir işlem olmadığından, SSH sunucusu bağlantıyı kapatır.
reboot
Komut yeniden başlatma Makineyi neden olur.
Ancak, bu güvenilir değildir: zamanlamaya bağlı olarak, 3. adımdan önce 3. adım gerçekleşebilir. Bir zamanlayıcı eklemek bunu mümkün kılmaz:
ssh remotehost '{ sleep 1; reboot -f; } >/dev/null &'
Sunucu tarafının çalışmayı taahhüt reboot
ettiğinden emin olmak için, istemciye işlendiğini bildirmeden önce gerçekten yeniden başlatılmadığından emin olmak için, sunucudan istemciye gitmek için ek bir bildirime ihtiyacınız vardır. Bu SSH bağlantısı üzerinden verilebilir, ancak karmaşık hale gelir.