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

时间:2017-05-24 09:51:52

标签: bash crontab

我有一个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脚本分组?

1 个答案:

答案 0 :(得分:2)

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

$ 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 &)