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

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

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

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

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

答案1

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

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

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

您可能想将这些文件存档,并在知道它们已打印后将其删除。

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

mkdir archived
mv "$file" archived

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

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

在您知道脚本有效之前,请勿将脚本作为 cronjob 运行或使用实际文件运行。

相关内容