Как остановить первую команду отказ влиять на вторую команду

Например, у меня есть много псевдонимов для Терминала, созданного так, чтобы с одной командой я мог выполнить много команд, таким образом, у меня может быть команда для обновления rkhunter который также делает freshclam, который является в основном этим:

sudo rkhunter --update && sudo rkhunter --versioncheck && sudo freshclam

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

И поскольку это - основная проблема для меня в данный момент особенно, если я хочу автоматизировать задачи через псевдонимы, и такой, не создавая сценарий и т.д., там любой способ сделать его так, чтобы, если одна из команд перестала работать для следующей команды после && все еще быть выполненным?

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

Так существует ли способ зафиксировать это, и почему он перестал работать так или иначе?

1
задан 21 July 2015 в 02:19

2 ответа

Используя:

sudo rkhunter --update; sudo rkhunter --versioncheck; sudo freshclam

или, если Вам нужны логические операции

sudo rkhunter --update || sudo freshclam
sudo rkhunter --update && sudo rkhunter --versioncheck; sudo freshclam

, Делают некоторые простые тесты с echo

  • echo -n a; echo -n b; echo -n c

    abc
    
  • echo -n a && echo -n b; echo -n c

    abc
    
  • echo -n a || echo -n b; echo -n c

    ac
    
<час>

, Объяснение

; между командами является не больше, чем разделителем между двумя или больше командами, не рассматривая ошибки.

Это совпадает со списком команд в сценарии

command1
command2
command3

OTOH , && ( логическая конъюнкция ) и || ( логическое разъединение ) логические операции .

  • &&, Если одно условие перестало работать, не имеет никакого смысла проверять второе или третье условие. Результатом было бы то же: отказ уже.

     A  B   A ∧ B
     ------------
     T  T   T
     T  F   F
     F  T   F
     F  F   F
    
  • ||, Если, и только если, сбои условия, имеет смысл проверять второе и третье условие. Если первая команда успешно выполнится , то второй не будет выполняться, потому что результатом, как считают уже, является успех.

     A  B   A ∨ B
     ------------
     T  T   T
     T  F   T
     F  T   T
     F  F   F
    
6
ответ дан 3 December 2019 в 06:21

Я собираюсь добавить свою ценность за два цента здесь.

, Если Вы выполняете из окна терминала следующие команды, они позволяют Вам настраивать и rkhunter и freshclam для того, когда их обновления будут выполнены. Freshclam на самом деле имеет демона, который может выполнять так много раз день, как Вы хотите. Во время процесса конфигурации freshclam это просит сколько раз дня проверять на обновления. Это принимает значение по умолчанию к 24, что означает однажды в час. rkhunter, с другой стороны, выполнения ежедневное сканирование, но обновления еженедельно.

freshclam настраивают:

sudo dpkg-reconfigure clamav-freshclam

rkhunter настраивают:

sudo dpkg-reconfigure rkhunter
3
ответ дан 3 December 2019 в 06:21

Другие вопросы по тегам:

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