GNU/Linux >> Belajar Linux >  >> Linux

Dari ruang pengguna, bagaimana saya bisa tahu jika pengawas lunak Linux dikonfigurasi tanpa jalan keluar?

AHA! Setelah menggali melalui linux/watchdog.h kernel dan drivers/watchdog/softdog.c , saya dapat menentukan kemampuan softdog ioctl() antarmuka. Melihat kemampuan yang diumumkan di struct watchdog_info :

static struct watchdog_info ident = {
                .options =              WDIOF_SETTIMEOUT |
                                        WDIOF_KEEPALIVEPING |
                                        WDIOF_MAGICCLOSE,
                .firmware_version =     0,
                .identity =             "Software Watchdog",
        };

ya mendukung tutup ajaib yang (tampaknya) menimpa CONFIG_WATCHDOG_NOWAYOUT . Jadi, ketika mengakhiri secara normal, saya harus menulis satu karakter 'V' ke /dev/watchdog kemudian tutup, dan timer akan berhenti menghitung.

Sebuah ioctl() sederhana pada deskriptor file ke /dev/watchdog menanyakan WDIOC_GETSUPPORT memungkinkan seseorang untuk menentukan apakah bendera ini disetel. Kode palsu:

int fd;
struct watchdog_info info;

fd = open("/dev/watchdog", O_WRONLY);
if (fd == -1) {
   perror("open");
   // abort, timer did not start - no additional concerns
}

if (ioctl(fd, WDIOC_GETSUPPORT, &info)) {
    perror("ioctl");
    // abort, but you probably started the timer! See below.
}

if (WDIOF_MAGICCLOSE & info.options) {
   printf("Watchdog supports magic close char\n");
   // You have started the timer here! Handle that appropriately.
}

Saat bekerja dengan pengawas perangkat keras, Anda mungkin ingin membuka dengan O_NONBLOCK jadi ioctl() bukan open() blok (sehingga mendeteksi kartu sibuk).

Jika WDIOF_MAGICCLOSE tidak didukung, anggap saja bahwa soft watchdog dikonfigurasikan dengan NOWAYOUT. Ingat, baru buka perangkat berhasil memulai hitungan mundur. Jika semua yang Anda lakukan adalah memeriksa untuk melihat apakah itu mendukung tutup ajaib dan mendukungnya, maka tutup ajaib . Jika tidak, pastikan untuk menghadapi kenyataan bahwa Anda sekarang memiliki pengawas yang sedang berjalan.

Sayangnya, tidak ada cara nyata untuk mengetahui dengan pasti tanpa benar-benar memulainya, setidaknya yang tidak dapat saya temukan.


pengawas menjaga agar sistem tidak terkunci dengan keras, baik karena kerusakan perangkat lunak, atau kegagalan perangkat keras.

yang Anda butuhkan adalah daemon monitoring daemon (dmd). centang 'monit'


Linux
  1. Bagaimana saya bisa menemukan file tertentu dari terminal Linux?

  2. Bagaimana saya bisa melakukan pembagian dengan variabel di shell Linux?

  3. Bagaimana saya bisa mengetahui apakah sistem Linux menggunakan Wayland atau X11?

  1. Bagaimana saya bisa memindahkan file dengan xargs di Linux?

  2. Bagaimana cara mengeluarkan kunci Windows 8+ tertanam saya dari lingkungan Linux?

  3. Bagaimana cara memigrasi instalasi Linux dari HDD ke SSD?

  1. Cara Mengirim Email Dengan Lampiran dan Isi dari Linux

  2. Bagaimana membedakan biner dari file teks di linux

  3. Bagaimana saya bisa tahu di Linux proses mana yang mengirim sinyal ke proses saya