检查文件夹,打印文件然后删除这些文件的脚本

use*_*353 2 scripting cron printing

我正在寻找有关创建脚本的指导,该脚本将检查特定文件夹、打印所有文档(如果有)然后删除这些文档。我还想将此脚本作为 cron 作业运行。

我希望这样做的原因是因为我目前有一个 PHP 网络应用程序,它可以动态创建 pdf 发票并将它们保存在某个文件夹中,但我无法从网络自动打印这些文档(我想是为了安全/垃圾邮件问题)。

我没有语言偏好,但理想情况下希望脚本能够控制打印多少份,在打印机中使用哪个托盘等。

小智 5

我还没有测试过这个,但这应该有效:

cd some-directory

for file in *.pdf ; do
    lp -n2                        # number of copies
    -o media=a4\                  # media
    -o number-up=2\               # number of pages per sheet
    -o fit-to-page\               # scale to page
    -o sides=two-sided-long-edge\ # duplex (can be 'one-sided')
    -o tray1\                     # tray
    -d SomePrinter\               # device
    "$file"
    rm "$file"
done
Run Code Online (Sandbox Code Playgroud)

您需要先安装和配置 cups,然后才能使用lp. 有关常用选项的更多信息,请参阅lp联机帮助页 ( man lp)。

您可能希望将文件存档,并在知道它们已被打印后将其删除。

为此,请替换rm "$file"为:

mkdir archived
mv "$file" archived
Run Code Online (Sandbox Code Playgroud)

正如Anthon 的评论中提到,您可能想要实现某种文件锁定,以确保您的 cron 作业和应用程序不会相互干扰。为此,您有几个选择flock可能是你最好的选择;它具有出色的 PHP 支持。

您可以将此脚本直接放入 cronjob 中。只需确保将您的路径设置为包含/usr/bin/bin

在您知道它可以工作之前,不要将脚本作为 cronjob 或您的实际文件运行。