我正在学习crontab
命令,并且正在做一些尝试。
我使用命令编辑了默认的 crontab 文件crontab -e
,我想添加一行,每分钟向当前 shell 进程发送一个 SIGUSR1(进程号 14515),然后在收到信号后,将默认消息打印到stdout。
我添加了这一行:
1 * * * * kill -USR1 14515 | trap "echo Sigusr1 received" SIGUSR1
但过了一分钟,我什么都没看到打印在终端上。出了什么问题?我可以用其他方法做这件事吗?
答案1
有几个问题。首先,crontab 文件中的任何内容都在后台运行,而不是在您的终端中运行。因此,其中的任何“回声”都不会被看到(除非它通过电子邮件发送给您)。
尝试将杀戮留在那里(我确信您知道如果您注销它会改变),但将“陷阱”移到您的 shell 中。
此外,正如所写,您的行将仅在每小时的第一分钟运行(2:01、3:01 等)。如果您希望每分钟运行某项操作,请执行以下操作:
* * * * * kill -USR1 PID