Crontab: 运行 仅当第一个命令正常时才执行两个命令

Crontab: run two commands only if first command was ok

我有一个 bash-脚本,它检查某些文件是否存在并将它们复制到其他地方。如果文件不存在,则它以状态码 4 退出。

如果状态代码为 0,则两个 php-脚本应该 运行 并处理复制的文件。但我不知道如何告诉第三个命令(第二个 php 脚本)应该 运行 只有当第一个命令是 0.

复制文件的脚本:

/var/www/dms-live/import-xknddb.sh >> /var/log/importer/import-cron.log

第一个php脚本:

php -f "xknddb-import.php" live k000 >> /var/log/importer/live.xknddb.log

第二个php脚本:

php -f "xknddb-import.php" test k000 >> /var/log/importer/test.xknddb.log

这两个 php-脚本可以同时 运行,所以我尝试了这个:

/var/www/dms-live/import-xknddb.sh >> /var/log/importer/import-cron.log && php -f "xknddb-import.php" live k000 >> /var/log/importer/live.xknddb.log &  php -f "xknddb-import.php" testAll k000 >> /var/log/importer/test.xknddb.log &

如果第一个命令失败,第一个 php-脚本不会 运行。但是第二个 php 脚本总是从 运行 开始。

是否可以将两个 php 脚本或其他东西分组?

只需将两个 php 脚本与括号 () 或方括号 {} 组合在一起,如果您不想打开子 shell:

$ false && (echo "Hello" & echo "World") 


$ true && (echo "Hello" & echo "World") 
Hello 
World

你的情况:

/var/www/dms-live/import-xknddb.sh >> /var/log/importer/import-cron.log && (php -f "xknddb-import.php" live k000 >> /var/log/importer/live.xknddb.log &  php -f "xknddb-import.php" testAll k000 >> /var/log/importer/test.xknddb.log &)