Если кого-то интересует исправление для этой bash
функции, а не столько философия, стоящая за ней , вот предложение:
Не запускайте проблемную команду напрямую, а из оболочки, которая a )ожидает ее завершения b )не связывается с сигналами, а c )не не реализует сам механизм WCE, но просто умирает при получении SIGINT
.
Такую оболочку можно сделать с помощью awk
+ ее system()
функции.
$ while true; do awk 'BEGIN{system("ping -c5 localhost")}'; done
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.082 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.087 ms
^C
--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1022ms
rtt min/avg/max/mdev = 0.082/0.084/0.087/0.009 ms
[3]- Terminated ping -c5 localhost
Вставить скрипт как у OP:
#!/bin/bash
while true; do
echo -e "\n*** DATE:" `date` " ***";
echo "********************************************"
awk 'BEGIN{system(ARGV[1])}' "ping -c5 ${1-localhost}"
done
root@gonzo:/home/jasen# dd if=/dev/mem bs=64k skip=12 count=1 | strings | head
1+0 records in
1+0 records out
65536 bytes (66 kB, 64 KiB) copied, 8.9787e-05 s, 730 MB/s
K7400
VIDEO
IBM VGA Compatible
P10/24/11
DPMIDl
3GV-N560OC-1GI/F32
Version 70.24.21.00.02
Copyright (C) 1996-2011 NVIDIA Corp.
GF104B Board - 10400050
мне кажется VGA ROM.
Отличная тема. Теперь следует мой способ получить vbios.rom под Kubuntu 20.04 LTS:
Сначала я не знал, где искать ром-файл, к счастью, существует команда, которая находит и отображает любой ром-файл:
clemens@iMac-4:~$ find /sys/devices -name rom
Это показывает мне два файла:
/sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/rom
/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom
Но какой из них правильный? Также для этого существует хорошая команда:
clemens@iMac-4:~$ lspci | grep 02:00.0
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)
Это был не тот вариант, похоже, это ПЗУ сетевой карты Marvell. Еще одна попытка...
clemens@iMac-4:~$ lspci | grep 01:00.0
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV530/M56-P [Mobility Radeon X1600]
Вот и мы! Это видеобиография видеокарты AMD/ATI Mobility Radeon X1600 GPU!
Итак, я выполнил две другие команды, но с несколько более логичным синтаксисом, первая:
clemens@iMac-4:~$ echo 1 | sudo tee /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom
1
Тот только что показал мне "1", -хорошо. Но второй дает мне, наконец, файл vbios.rom, который попал прямо в мою пользовательскую папку :
.sudo cat /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/rom > vbios.rom
Заключительное замечание: -попробуем это также под Mac OS . Может быть, это работает и там. Обновление:Это не работает в Mac OS, поскольку Mac OS не поддерживает функцию sysfs
.
Источник:
Колин Ян Кинг -Использование интерфейса PCI sysfs для создания дампа ПЗУ Video BIOS