Killallow для этого терминала только

Ubuntu 14.04 - это прекрасно работает:

htop --sort-key=PERCENT_MEM
0
22.11.2018, 16:45
2 ответа

Определение затруднено, так как многие процессы используют одно и то же значение.

% ssh 2>/dev/null localhost 'exit 255' ; echo $?
255
% ssh 2>/dev/null nopelocalhost 'exit 0' ; echo $?
255

С помощью эвристики вы можете угадать, какой код принадлежит какой программе, основываясь на обычно используемых кодах выхода; это было бы в основном правильно, если только задействованные программы не перекрываются или не происходит что-то неожиданное. Стандартная ошибка может быть доступна или недоступна, а код выхода может меняться в зависимости от того, как программа завершает работу :

.
% ssh localhost./segfault ; echo $?
255
%./segfault ; echo $?
zsh: bus error ./segfault
138
% 

Таким образом, не так надежно гадать, откуда взялся $?. Вместо этого лучшим вариантом может быть разработка протокола, который передает больше информации, чем предоставляется словом состояния выхода; примеры могут включать Nagios или Ansible, которые сообщают больше, чем просто $?при определении того, как выполняется удаленная команда. Это может быть простая строка текста, которая зависит от того, как smartctlвыполнялась (или segfault, или... )или что-то более сложное, например, структура JSON со стандартным словом состояния out, err, exit, и другие подобные метаданные. Таким образом, вместо того, чтобы запускать smartctlнапрямую, вы должны вызвать программу-оболочку, которая запускает smartctlи анализирует его вывод, а на другой стороне sshвы будете собирать этот вывод; если вывод недоступен, значит, что-то пошло не так с sshили с вашей программой-оболочкой.

2
28.01.2020, 02:16

Из справочных страниц:

EXIT STATUS
     ssh exits with the exit status of the remote command or with 255 if an error occurred.

Если с командой ssh ​​произошла ошибка, она вернет 255, в противном случае она вернет статус выхода удаленной команды.

Пример:

$ ssh root@not.exists
ssh: Could not resolve hostname not.exists: Name or service not known
$ echo $?
255

В вашем случае 1 — это статус выхода команды smartctl, а неssh


РЕДАКТИРОВАТЬ:

статусы выхода smartctl:

EXIT STATUS
       The  exit  statuses  of  smartctl  are  defined by a bitmask.  If all is well with the disk, the exit status (return value) of smartctl is 0 (all bits turned off).  If a problem occurs, or an error,
       potential error, or fault is detected, then a non-zero status is returned.  In this case, the eight different bits in the exit status have the following meanings for ATA disks; some of these  values
       may also be returned for SCSI disks.

       Bit 0: Command line did not parse.

       Bit 1: Device open failed, device did not return an IDENTIFY DEVICE structure, or device is in a low-power mode (see '-n' option above).

       Bit 2: Some SMART or other ATA command to the disk failed, or there was a checksum error in a SMART data structure (see '-b' option above).

       Bit 3: SMART status check returned "DISK FAILING".

       Bit 4: We found prefail Attributes <= threshold.

       Bit 5: SMART status check returned "DISK OK" but we found that some (usage or prefail) Attributes have been <= threshold at some time in the past.

       Bit 6: The device error log contains records of errors.

       Bit 7: The device self-test log contains records of errors.  [ATA only] Failed self-tests outdated by a newer successful extended self-test are ignored.

Статус выхода 1 на smartctl будет означать, что бит 0 включен, поскольку 1=2^0, поэтому командная строка не обрабатывается

3
28.01.2020, 02:16

Теги

Похожие вопросы