Saya menjalankan ini:
ssh -t -vvv -i ~/.ssh/druid-keypair -o StrictHostKeyChecking=no ubuntu@${INSTANCE_ADDRESS} <<EOI
# Setup Oracle Java
...
# Install dependencies - mysql must be built from source, as the 12.04 apt-get hangs
export DEBIAN_FRONTEND=noninteractive
sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password diurd'
sudo debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password_again password diurd'
sudo apt-get -q -y -V --force-yes --reinstall install mysql-server-5.5
echo "ALL DONE with druid environment setup!"
exit
EOI
Catatan: Saya sudah mencoba dengan dan tanpa -t di ssh.
Output debug dari -vvv adalah ini:
...
ldconfig deferred processing now taking place
ALL DONE with druid environment setup!
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
Dan kemudian proses itu hanya duduk di sana selamanya. Mengapa perintah ssh tidak akan berakhir? Saya telah mencoba dengan -t dan tanpa, dan saya telah mencoba dengan pintu keluar dan tanpa. Itu tidak membuat perbedaan :(
Pembaruan: Ketika saya mengetik 'pekerjaan' di akhir skrip, saya melihat:
JOBS:
[1]- Running nohup bin/zookeeper-server-start.sh config/zookeeper.properties 2>&1 > /dev/null &
[2]+ Running nohup bin/kafka-server-start.sh config/server.properties 2>&1 > /dev/null &
Bagaimana saya bisa menjalankan layanan ini dan masih memiliki sesi ssh yang berakhir?
Pembaruan: Saya sekarang secara manual menolak proses ini. Masalahnya masih belum keluar. Pasangan WTF?
Pembaruan: Saat menjalankan baris demi baris, dua perintah tidak kembali ke shell tanpa menekan CR:
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
nohup bin/kafka-server-start.sh config/server.properties &
Jawaban:
Biasanya, sesi terminal SSH menggantung jika masih ada koneksi latar belakang yang masih terbuka. Dengan koneksi latar belakang, maksud saya hal-hal seperti:
Lihatlah koneksi yang masih aktif di sesi SSH Anda yang digantung dengan mengetik
~#
di terminal SSH Anda.Bisa jadi skrip Anda membuka sesi yang tidak Anda sadari. Atau konfigurasi terminal mesin jarak jauh Anda seperti
.profile
(atau.bashrc
, dll.) Mungkin memiliki sesuatu di dalamnya yang membentuk sesi. Semoga beruntung berburu!Ngomong-ngomong, beberapa urutan pelarian lain yang ditawarkan oleh klien OpenSSH mungkin juga berguna:
Satu hal lagi, jika Anda ingin SSH menjalankan perintah Anda dan segera keluar - yaitu, Anda tidak ingin sesi terminal jarak jauh - Anda dapat menggunakan
-f
opsi inissh
. Itu akan memaksa koneksi SSH menjadi pekerjaan latar belakang.sumber
-f
bekerja untukku.background connection
dan dapatkahdisown
proses latar belakang sehingga koneksi ssh tidak hang?