A|B
выполняет A и B (параллельно ), и стандартный вывод A подается на стандартный ввод B. В случае
A $(B)
оболочка сначала выполняет B, собирает стандартный вывод B, затем выполняет A, но для этого выполнения назначает отдельные слова вектору ARGV -A (, т.е. A может получить доступ к этим словам с помощью обычного argv механизм, известный из C и других языков ).
Кроме того, что в обоих случаях задействованы две программы А и Б, я не вижу между ними ничего похожего.
Вы можете узнать, когда система была перезагружена, несколькими способами... "время безотказной работы", "последняя перезагрузка" и т. д. Узнать, когда она была выключена, немного сложнее. Предполагая, что у вас регулярно ведется системный журнал через rsyslogd, вы можете использовать модуль immark в качестве подпрограммы «регистрировать что-то каждые несколько секунд», добавив следующее в /etc/rsyslogd.conf:
$ModLoad immark
$MarkMessagePeriod <your time granularity here, in seconds>
$ActionWriteAllMarkMessages on
Можно тоже не заморачиваться, а лучше посмотреть одну из двух вещей в файле сообщений. Если файл ротируется при загрузке системы, вы можете просто посмотреть дату предыдущей версии файла, используя «ls -l», чтобы получить довольно точное представление о том, когда система прекратила запись в него. Если вы не чередуете системный журнал, вы можете добиться той же точности, посмотрев временную метку строки непосредственно перед строкой, указывающей на перезапуск. Наши перезапуски выглядят примерно так:
2020-03-29T03:20:01.529437-04:00 [hostname] rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="1615" x-info="h
ttp://www.rsyslog.com"] rsyslogd was HUPed
Если выключение не было неожиданным, все становится проще, так как системный регистратор запишет сообщение в журнал, прежде чем он умрет.
Если вы отключили ведение системного журнала, все это, конечно, становится спорным. Если вы все еще записываете что-то в системные журналы, вы можете получить статистику некоторых файлов и примерно определить, когда система отключилась, просмотрев время модификации :
.root# stat /var/log/messages-01.gz
File: '/var/log/messages-01.gz'
Size: 185529 Blocks: 368 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 12689803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: (658178/ mssgro)
Access: 2020-04-08 10:27:47.691311523 -0400
Modify: 2020-04-05 03:01:34.000000000 -0400 <=== that's what you're after ==
Change: 2020-04-07 18:16:40.252668164 -0400
Birth: -
Выберите самый последний из выбранных файлов, и вы получите довольно точную оценку времени остановки системы.
Просто несколько идей, надеюсь, они помогут.