如何停止第一个命令而不影响第二个命令

如何停止第一个命令而不影响第二个命令

例如,我为终端创建了许多别名,以便使用一个命令可以执行许多命令,因此我可能有一个要更新的命令,rkhunterfreshclam基本上是这样的:

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

我甚至可能希望自动执行此任务,使其每小时左右运行一次,但这样做存在一个问题,因为如果这些命令中的任何一个失败,则其后的命令(如果有)将不会被执行。而且由于这也可能是一项自动化任务,我甚至不知道在某个地方出现了问题,这意味着该点之后的所有内容都不会运行。

而这对我来说目前是一个大问题,特别是如果我想通过别名等自动执行任务而不创建脚本等,有没有什么办法可以让其中一个命令失败,而下一个命令仍然可以&&运行?

此外,另一件事是,这种情况并不总是发生,事实上有时它会失败并且仍然运行下一个命令,但大多数时候它不会,所以实际上甚至没有任何方法可以预测它是否会失败,我甚至不太确定它为什么会失败。

那么有没有办法解决这个问题,为什么会失败呢?

答案1

使用:

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

另一方面&&逻辑连接词) 和||逻辑析取) 是逻辑运算

  • &&   如果一个条件失败,检查第二个或第三个条件就没有意义了。结果是一样的:已经失败了。

     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
    

答案2

我要在这里提出我的看法。

如果您从终端窗口运行以下命令,它们允许您配置和rkhunter何时freshclam运行它们的更新。 Freshclam实际上有一个守护进程,可以根据您的需要每天运行多次。在配置过程中,freshclam它会询问每天检查更新多少次。它默认为24每小时一次。 rkhunter另一方面,它每天运行扫描,但每周更新一次。

freshclam 配置:

sudo dpkg-reconfigure clamav-freshclam

rkhunter 配置:

sudo dpkg-reconfigure rkhunter

相关内容