Mematikan Pi dengan aman tanpa SSH atau monitor?

25

Pi saya saat ini tidak merespons SSH, dan satu-satunya monitor HDMI yang saya miliki adalah TV besar beberapa meter jauhnya. Saya pernah mendengar hal-hal buruk tentang mencabutnya, tetapi apakah saya punya pilihan lain?

Saat ini menjalankan raspbian tanpa kepala, mungkin saya bisa menghubungkan keyboard dan menebak tentang perintah?

vpzomtrrfrt
sumber
3
Ini tidak akan berfungsi untuk saat ini, tetapi Anda dapat menambahkan tombol ke pin GPIO Anda untuk mematikannya dengan benar di masa depan
Rizzle Light
Sebagai titik data: selama beberapa tahun saya telah menggunakan RPis untuk berbagai tugas pada robot seluler bertenaga baterai. Ini mendapatkan pemadaman listrik mereka sering dan tanpa peringatan. Saya belum menemukan masalah dengan salah satu kartu Pis / SD (well, selain koneksi SD menjadi longgar dari getaran konstan dan dinding-menghancurkan).
Mike Ounsworth
Anda tidak bisa memindahkan monitor HDMI sementara beberapa meter dan kemudian mengembalikannya setelah selesai?
jpmc26
@ jpmc26 menuruni tangga dan TV yang cukup besar.
vpzomtrrfrt

Jawaban:

25

Meskipun itu harus dianggap sebagai upaya terakhir karena memang meningkatkan risiko korupsi sistem file, mencabut kabelnya biasanya baik-baik saja jika lampu hijau ACT tidak berkedip intens .

Secara default, ACT led menunjukkan aktivitas I / O pada kartu SD. Jika tidak aktif, kemungkinan besar sistemnya idle. Ini tidak selalu benar, tetapi membunuh sistem yang sibuk dengan aktivitas intensif CPU (dan bukan I / O) pada dasarnya tidak menjadi masalah. Sistem operasi melakukan cache informasi sistem file dalam memori, artinya bisa tidak sinkron dengan penyimpanan aktual pada kartu SD, tetapi ini harus ditangani setidaknya setiap beberapa detik (Anda kadang-kadang dapat menyimpulkan pola ini dari ACT LED).

Jadi, jika muncul diam setelah menontonnya selama 5-10 detik dan Anda tidak punya pilihan lain, silakan dan cabut steker listriknya. Sekali lagi, ini tidak menjamin apa pun dan ada skenario yang tidak menguntungkan di mana sistem mungkin terkunci dan sinkronisasi sistem file tidak terjadi dengan benar, tetapi dalam kebanyakan kasus Anda harus baik-baik saja.

Saya mungkin harus menarik tali pada pi (atau listrik mati) lebih dari seratus kali dengan cara ini dan tidak ingat pernah mengalami kesedihan karenanya. Kadang-kadang saya akan meletakkan kartu di komputer lain dan berjalan e2fsck -fdi sistem file root, yang bermanfaat. OS akan memeriksa sistem file secara otomatis saat boot tetapi ada kemungkinan pemeriksaan ini gagal (atau tidak dilakukan dengan benar) dan tidak diperhatikan.

goldilocks
sumber
8
Periode idle 5 hingga 10 detik adalah karena pengaturan default Linux /proc/sys/vm/dirty_writeback_centisecsadalah 500 centiseconds (5 detik). Jadi jika Linux memiliki data tidak tertulis yang duduk di buffer I / O, itu akan mulai membilasnya ke disk setelah 5 detik, kecuali jika Anda mengubahnya. Secara teori, FS penjurnalan harus aman terhadap korupsi seluruh sistem file bahkan jika Anda mematikan selama menulis, tetapi menunggu itu menjadi menganggur memberi Anda kesempatan yang jauh lebih baik juga tidak merusak file yang baru saja dimodifikasi. (Yang penjurnalan hanya melindungi dengan data ext3 / ext4 = jurnal, yang bukan default)
Peter Cordes
31

Kunci SysRq Ajaib

Ini seharusnya membuatmu memulai.

Kunci SysRq ajaib adalah kombinasi kunci yang dipahami oleh kernel Linux, yang memungkinkan pengguna untuk melakukan berbagai perintah tingkat rendah terlepas dari kondisi sistem. Ini sering digunakan untuk memulihkan dari pembekuan, atau untuk me-reboot komputer tanpa merusak sistem file . Efeknya mirip dengan tombol reset perangkat keras komputer (atau saklar daya) tetapi dengan lebih banyak opsi dan lebih banyak kontrol.

Anda dapat mencolokkan keyboard dan mengetikkan item ini dalam keadaan buta (tanpa monitor.)

Tidak ada kerusakan filesystem, tidak ada perangkat keras tambahan yang diperlukan.


Tombol GPIO

Seperti yang disarankan Rizzle Light, Anda bisa mengambil semacam tombol dan menyambungkannya ke pin GPIO, dan melakukan sedikit pemrograman sulingan untuk menekan tombol mengeksekusi perintah "poweroff" (tentu saja dengan hak istimewa admin.)

Ada banyak tutorial pemrograman GPIO online yang dapat Anda adaptasi, seperti ini .

Rahul R Dhobi memiliki skrip python dua baris yang bagus yang akan mematikan Raspberry Pi:

import os
os.system("shutdown now -h")

jalankan skrip Anda dengan hak akses root.

Hydraxan14
sumber
3
Dokumentasi magic-SysRQ kernel Linux adalah satu-satunya dokumentasi yang pernah saya cetak di atas kertas :). (Dan itu kembali ketika saya hanya memiliki satu komputer.)
Peter Cordes
3

Tidak perlu menebak; cukup tancapkan keyboard dan ketik ini dan tekan enter:

sudo shutdown -h now

The shutdownperintah membutuhkan hak istimewa root untuk mengeksekusi.

Lightness Races dengan Monica
sumber
4
Anda harus masuk terlebih dahulu (buta) dan menggunakan akun istimewa atau (anggap pipengguna superpower Raspbian ...) menambahkan sudo.
goldilocks
2
@goldilocks: Anda mungkin ingin meletakkan sudodi awal perintah, daripada menambahkannya :-)
psmears
@goldilocks: Benar, masih, masuk sepertinya bukan tugas yang berat.
Lightness Races with Monica
1
Saya tidak mengomentari tingkat kesulitan;) @psmears Whoops, tinggalkan Anda! Dikoreksi.
goldilocks
@goldilocks: Cukup Adil :)
Lightness Races dengan Monica
1

Port serial adalah fallback yang baik untuk situasi seperti itu, dan diaktifkan secara default.

Anda dapat mencoba menghubungkan ke port serial menggunakan Putty. Jika itu berhasil, maka login menggunakan nama pengguna Anda dan keluarkan "sudo poweroff" untuk dimatikan dengan aman.

Lihat http://elinux.org/RPi_Serial_Connection untuk info lebih lanjut ...

Kuarsa
sumber
0

Saya sedang menguji server file di bagian rumah tanpa akses mudah ke monitor ketika saya mengalami masalah yang sama. Hal berikut ini berfungsi untuk saya, dengan asumsi pi Anda sedang boot ke lingkungan GUI default:

  1. Tancapkan keyboard (jika belum dilakukan).
  2. Tekan Alt-F2untuk membuka dialog Run.
  3. Ketik yang berikut dan tekan Enter untuk memulai jendela Terminal:

    lxterminal
    
  4. Tunggu beberapa detik hingga aman, lalu ketikkan yang berikut:

    sudo shutdoown now -h
    
  5. Tekan Enter.

Ini harus mematikan Pi. Jika berfungsi, keyboard akan menyala dan semua perangkat USB yang terpasang akan mati. Jika tidak, Anda dapat mengulangi langkah-langkah di atas jika Anda melakukan kesalahan mengetik perintah.

Nealios
sumber
-1

Tombol jendela - tombol sembilan kali ke bawah - 2 kali masuk ... Selamat menikmati ...

Prakhar Pandey
sumber
1
Terima kasih atas jawabannya - semua masukan sangat dihargai. Saya telah diminta untuk menyarankan beberapa perubahan untuk membantu Anda meningkatkan jawaban Anda: Pertama, saya berasumsi dengan "tombol Window", maksud Anda tombol dengan logo Microsoft pada keyboard Windows. Jika demikian, Anda harus menyatakannya secara eksplisit. Juga, urutan kunci tersirat dalam jawaban Anda, tetapi tidak cukup spesifik. Singkatnya, harap tulis ulang jawaban Anda untuk membuatnya benar-benar jelas apa jawaban Anda sebenarnya, daripada mengandalkan asumsi.
Seamus
Juga perhatikan bahwa penanya menjalankan raspbian tanpa kepala . Itu berarti lingkungan desktop tidak diinstal, jadi urutan kunci ini mungkin tidak akan membantu.
Hydraxan14