GNU/Linux >> Belajar Linux >  >> Linux

Proses saya terbunuh tetapi saya tidak dapat memahami pemberitahuan kernel

SAK dalam hal ini sebenarnya berarti Secure Attention Key . Pesan yang Anda lihat adalah pesan kernel yang didefinisikan di driver/tty/tty_io.c. SAK adalah kombinasi tombol yang memastikan login aman untuk pengguna di konsol. Di Linux SAK memastikan ini dengan mematikan semua proses yang terpasang pada terminal SAK yang dipanggil. Diharapkan bahwa init kemudian akan memulai ulang proses login tepercaya seperti getty diikuti oleh login atau server X dengan pengelola tampilan .

PID yang terdaftar memang merupakan PID dari utas aplikasi Anda CX_SC3 yang dibunuh oleh SAK.

fd#n opened to the tty berarti proses/utas yang dimatikan memiliki deskriptor file n dibuka ke terminal tempat SAK dipanggil.

Di Linux ada dua cara menjalankan SAK:

  1. Melalui tombol ajaib SysRq - biasanya Alt +SysRq +K (terminal virtual) atau Istirahat K (konsol seri). Ini bukan kasus Anda karena Anda sudah mencoba menonaktifkan SysRq ajaib oleh echo 0 > /proc/sys/kernel/sysrq dan mengirim Break K urutan secara tidak sengaja tidak mungkin.

  2. Melalui urutan kunci yang ditentukan (terminal virtual) atau sinyal putus (konsol serial). Ketersediaan SAK pada konsol serial dikontrol oleh setserial .

Sinyal pemutusan pada jalur serial adalah pengiriman terus-menerus dari nilai spasi selama waktu yang lebih lama dari waktu pengiriman karakter (termasuk bit mulai, berhenti, dan paritas). Dalam kasus Anda, kemungkinan besar kondisi sinyal Break muncul selama mematikan mesin host Anda. Coba matikan SAK pada port serial Anda pada perangkat target dengan setserial :

setserial /dev/ttyS0 ^sak

Anda dapat memeriksa status fungsionalitas SAK pada port serial dengan setserial -g /dev/ttyS0 . Saat dinyalakan akan menampilkan SAK setelah Flags: . Untuk pengaturan opsi otomatis setelah boot, lihat skrip startup yang pada sistem BusyBox biasanya /etc/init.d/rcS dan /etc/rc.d/S* atau centang /etc/inittab untuk kemungkinan lain.


Saya berhasil menyelesaikan masalah dengan bantuan jawaban pabouk. Solusi berbasis kode yang akhirnya saya temukan yang memungkinkan SAK flag untuk disetel/tidak disetel pada port serial saat dibuka menggunakan API userspace dapat ditemukan di stackoverflow di sini Bagaimana cara menonaktifkan opsi SAK port serial di Linux menggunakan API userspace?


Linux
  1. Selamat ulang tahun kernel Linux:Apa rilis favorit Anda?

  2. Siklus hidup pengujian kernel Linux

  3. Memecahkan masalah Tahun 2038 di kernel Linux

  1. Nilai Maksimum Id Proses?

  2. Linux – Apa yang Akan Terjadi Jika Hard Drive Gagal Saat Kernel Linux Berjalan?

  3. Bagaimana cara kerja copy_from_user dari kernel Linux secara internal?

  1. Analisis kernel Linux dengan ftrace

  2. Mengapa proses anak masih hidup setelah proses induk dimatikan di Linux?

  3. File mana di /proc yang dibaca oleh kernel selama proses boot?