运行 crontab 在Linux 目录下新建文件时
Run Crontab in Linux when a new file created in a directory
我在 ubuntu 16.04 中设置了一个 crontab,通过 PHP 脚本从 /var/www/html/import/IMPORT-DATA.CSV
获取数据。
*/5 * * * * php /var/www/html/cron/import-csv.php
它工作正常,在获取数据后,我的 PHP 脚本将删除文件 (/var/www/html/import/IMPORT-DATA.CSV
)。
我想在 Linux 中设置一个脚本(crontab 或其他),如果 IMPORT-DATA.CSV
文件上传到 运行 我的 PHP script
一次目录 /var/www/html/import/
一种分配任务的方法是使用 3 个不同的脚本并将它们链接到 cron 中。
*/5 * * * * php /var/www/html/cron/import-csv.php && /var/www/html/cron/YOUR_PERFORM_SOME_OTHER_TASK_PHP_SCRIPT && /var/www/html/cron/YOUR_DELETE-CSV-SCRIPT.php
&&
将确保下一个脚本仅在前一个脚本运行时运行
运行成功。
有几种方法我可以立即想到:
- 查明您的 FTP 服务器是否可以配置为为您触发脚本。 (例如pureftpd的upload-script功能 https://linux.die.net/man/8/pure-uploadscript ,并不是所有的FTP服务端软件都能做到。)
- 可能使用
inotify-tools.
设置一个 inotify
观察器(您也可以使用 PHP 创建自己的观察器 (inotify extension),但这可能会抵消任何性能提升因为你会经常有一个 PHP 的实例 运行。)
还有第三种选择: 如果您只是想避免调用 PHP 只是为了查看文件不存在 - 您可以在调用 PHP 脚本之前链接到 bash 文件测试。 cron 调用仍然每 5 分钟运行一次,但仅在文件存在时才调用 PHP。 (请注意,我还没有完全测试过这个,但很有信心它会起作用。)
SHELL=/bin/bash
*/5 * * * * test -e /var/www/html/import/IMPORT-DATA.CSV && php /var/www/html/cron/import-csv.php
我在 ubuntu 16.04 中设置了一个 crontab,通过 PHP 脚本从 /var/www/html/import/IMPORT-DATA.CSV
获取数据。
*/5 * * * * php /var/www/html/cron/import-csv.php
它工作正常,在获取数据后,我的 PHP 脚本将删除文件 (/var/www/html/import/IMPORT-DATA.CSV
)。
我想在 Linux 中设置一个脚本(crontab 或其他),如果 IMPORT-DATA.CSV
文件上传到 运行 我的 PHP script
一次目录 /var/www/html/import/
一种分配任务的方法是使用 3 个不同的脚本并将它们链接到 cron 中。
*/5 * * * * php /var/www/html/cron/import-csv.php && /var/www/html/cron/YOUR_PERFORM_SOME_OTHER_TASK_PHP_SCRIPT && /var/www/html/cron/YOUR_DELETE-CSV-SCRIPT.php
&&
将确保下一个脚本仅在前一个脚本运行时运行
运行成功。
有几种方法我可以立即想到:
- 查明您的 FTP 服务器是否可以配置为为您触发脚本。 (例如pureftpd的upload-script功能 https://linux.die.net/man/8/pure-uploadscript ,并不是所有的FTP服务端软件都能做到。)
- 可能使用
inotify-tools.
设置一个inotify
观察器(您也可以使用 PHP 创建自己的观察器 (inotify extension),但这可能会抵消任何性能提升因为你会经常有一个 PHP 的实例 运行。)
还有第三种选择: 如果您只是想避免调用 PHP 只是为了查看文件不存在 - 您可以在调用 PHP 脚本之前链接到 bash 文件测试。 cron 调用仍然每 5 分钟运行一次,但仅在文件存在时才调用 PHP。 (请注意,我还没有完全测试过这个,但很有信心它会起作用。)
SHELL=/bin/bash
*/5 * * * * test -e /var/www/html/import/IMPORT-DATA.CSV && php /var/www/html/cron/import-csv.php