我有一个shell脚本,它在我的arch linux系统上的一个文件夹上运行一个clamav扫描,并且应该通过电子邮件发送结果。下面是代码:
/usr/bin/clamscan -r -i /path/to/folder | /usr/bin/mailx -A gmail -s "Clam Scan Results $(/usr/bin/date +%F)" address@gmail.com如果在bash命令行上运行,上面的一行程序可以正常工作,并且我确认在/etc/mailrc中配置的帐户工作并收到了电子邮件。但是我希望它按计划运行,我设置了一个systemd服务单元来调用一个名为~/bin/viruscan.sh的脚本,并设置了一个systemd计时器单元来在每晚凌晨2点触发它。管道后面的mailx段总是报告... email not sent
SystemD执行脚本的方式有显著差异吗?
/usr/lib/systemd/system/viruscan.service
[Unit]
Description=Daily virus scan
[Service]
Type=simple
ExecStart=/home/username/bin/virusscan.sh
[Install]
WantedBy=multi-user.target/usr/lib/systemd/system/viruscan.timer
[Unit]
Description=Execute virus scan daily at 2 AM
[Timer]
OnCalendar=*-*-* 02:00:00
Unit=virusscan.service
[Install]
WantedBy=multi-user.target然后,我可以运行服务imediatelly来进行测试:
sudo systemctl start virusscan 服务运行时的状态如下:
virusscan.service - Daily virus scan
Loaded: loaded (/usr/lib/systemd/system/virusscan.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2016-10-04 11:54:39 PDT; 11s ago
Main PID: 29915 (virusscan.sh)
Tasks: 4 (limit: 4915)
CGroup: /system.slice/virusscan.service
├─29915 /bin/sh /home/username/bin/virusscan.sh
├─29920 /usr/bin/clamscan -r -i /path/to/folder/
└─29921 /usr/bin/mailx -A gmail -s Clam Scan Results 2016-10-04 address@gmail.com
Oct 04 11:54:39 hurricane systemd[1]: Started Daily virus scan.它看起来像是SystemD将脚本中的一行分解成单独的进程,它还扩展了本应作为消息主题行的字符串,并删除引号.也许这就是问题所在,我只需要适当地逃避.然后,当服务单元运行完毕时,我总是在最后有以下一行.
Oct 04 11:55:01 hurricane virusscan.sh[29915]: ... message not senthttps://unix.stackexchange.com/questions/314329
复制相似问题