Saya mengikuti panduan ini tentang cara mengatur otentikasi SSH tanpa kata sandi dengan ssh-agent.
Untuk memulai ssh-agent, penulis merekomendasikan kode berikut dalam .bash_profile
:
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Saya tidak mengerti mengapa ini menjebak sinyal 0. Menurut sinyal manusia 7 tidak ada sinyal seperti itu.
Apakah ini hanya kesalahan ketik atau bug atau apakah ini benar-benar mencapai sesuatu?
0
shelltrap
. Ketika mengirim sinyal dengankill
, nomor sinyal 0 berarti tidak mengirim sinyal sama sekali; ini adalah cara menguji keberadaan proses target.trap -l
!Seperti yang ditunjukkan @Mat dalam jawabannya, SIGSPEC 0, saat digunakan pada
trap
perintah akan menyebabkantrap
perintah dijalankan ketika skrip keluar.Contoh ini menggambarkan apa yang terjadi.
Ketika kami menjalankan ini:
Itu duduk di sini menunggu tanpa batas. Di jendela lain jika sekarang kami mengirim
kill
sinyal ke sana Anda akan melihat bahwa akill -0
tidak akan membunuh proses, meskipun sinyal 0 tercantum dalamtrap
perintah.Namun jika kita
kill
script menggunakan sinyal 1,kill -1
:Kita akan melihat bahwa skrip keluar, dan mencetak pesan, "hai" 2 kali. Yang pertama untuk sinyal 1, dan yang kedua karena skrip keluar.
sumber
trap on 0 dijalankan ketika shell keluar. Ini biasanya digunakan untuk membersihkan file tmp di satu tempat yang selalu dijalankan:
pintu keluar di ujung perangkap keluar dari shell saat pembersihan dengan status yang benar.
sumber