![用于检查文件夹、打印文件然后删除这些文件的脚本](https://linux22.com/image/31191/%E7%94%A8%E4%BA%8E%E6%A3%80%E6%9F%A5%E6%96%87%E4%BB%B6%E5%A4%B9%E3%80%81%E6%89%93%E5%8D%B0%E6%96%87%E4%BB%B6%E7%84%B6%E5%90%8E%E5%88%A0%E9%99%A4%E8%BF%99%E4%BA%9B%E6%96%87%E4%BB%B6%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我正在寻找一些有关创建脚本的指导,该脚本将检查特定文件夹,打印所有文档(如果有),然后删除这些文档。我还想将此脚本作为 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 运行或使用实际文件运行。