与选项一起使用时,cronjob 不会重定向命令的输出

与选项一起使用时,cronjob 不会重定向命令的输出

使用 cronjob 运行时,我无法将命令的输出重定向到文件中

[root@mail /]# crontab -l  
*/1   *   *     *   *    /sbin/ausearch -i  >  /rummy

[root@mail /]# cat /rummy

奇怪的是,当我不提供-i选项时,我能够很好地重定向它。

[root@mail /]# crontab -l  
*/1 *   *   *   *   /sbin/ausearch > /rummy

[root@mail /]# cat /rummy  
usage: ausearch [options]
    -a,--event <Audit event id> search based on audit event id  
    --arch <CPU>            search based on the CPU architecture  
    -c,--comm  <Comm name>      search based on command line name  
    -  
    -  
    -  

是否有任何语法错误或者我在这里遗漏了一些东西?

注意-“ausearch -i”在终端上获取下面的输出,并将输出重定向到文件,它按原样重定向它。

    [root@server ~]# ausearch -i  
type=DAEMON_START msg=audit(05/22/2017 11:14:10.391:6858) : auditd                     start, ver=2.4.5 format=raw kernel=2.6.32-696.el6.x86_64 auid=unset pid=1319 subj=system_u:system_r:auditd_t:s0 res=success 
----
type=CONFIG_CHANGE msg=audit(05/22/2017 11:14:10.519:5) : audit_backlog_limit=320 old=64 auid=unset ses=unset subj=system_u:system_r:auditctl_t:s0 res=yes 
----
type=USER_ACCT msg=audit(05/22/2017 11:20:01.108:6) : user pid=2073 uid=root auid=unset ses=unset subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:accounting acct=root exe=/usr/sbin/crond hostname=? addr=? terminal=cron res=success' 
----
type=CRED_ACQ msg=audit(05/22/2017 11:20:01.108:7) : user pid=2073 uid=root auid=unset ses=unset subj=system_u:system_r:crond_t:s0-s0:c0.c1023 msg='op=PAM:setcred acct=root exe=/usr/sbin/crond hostname=? addr=? terminal=cron res=success' 
----
type=LOGIN msg=audit(05/22/2017 11:20:01.119:8) : pid=2073 uid=root subj=system_u:system_r:crond_t:s0-s0:c0.c1023 old auid=unset new auid=root old ses=unset new ses=1 
----

答案1

该命令不会产生输出,但运行正常。

您可以看到这一点,因为文件rummy已创建。

实用性ausearch似乎期待一个“搜索标准”,而空输出可能是由于您没有提供输出。

有关详细信息,请参阅ausearch系统手册。


阅读了一些ausearch手册后,我发现了以下内容:

--input-logs
使用日志文件位置auditd.conf作为搜索的输入。ausearch如果您使用cron 作业,则需要这样做。

进行一些谷歌搜索确认这确实可能是问题所在。一封电子邮件描述了问题

您需要使用该--input-logs选项。如果ausearch将 stdin 视为管道,则它假定这是从中获取数据的地方。输入日志选项告诉它忽略 stdin 是管道的事实并处理日志。Aureport有同样的问题和修复它的选项。

此问题已在 1.6.7 一般版本中修复,并向后移植到 1.6.5 RHEL5 版本。

似乎也有用户没有通过使用 来解决这个问题--input-logs,但不清楚还有什么可能是错误的,因为他们从来没有任何后续行动。

相关内容