* * * * * root bash /home/alan/Desktop/clientscript.sh > /home/alan/Desktop/alan.txt
我需要从输入 clientscript.sh 输出 alan.txt,但是它在 alan.txt 上给出空输出,我找不到错误是什么
它不起作用,请尝试一些来通过这个
这是使用 live cd os ubuntu 18.04lts 创建的
答案1
确保您使用以下方式创建 cronjob:
crontab -e
运行上述命令时,您以哪个用户身份登录,哪个用户将成为执行 cronjob 的用户。如果您希望以 root 身份运行 cronjob,则需要以 root 身份登录或使用 sudo 命令:
sudo crontab -e
如果您使用上述命令创建作业,则“root”部分会破坏一切。您的作业应如下所示:
* * * * * /bin/bash /home/alan/Desktop/clientscript.sh > /home/alan/Desktop/alan.txt
在 cronjobs 中始终使用绝对路径,否则它们可能会中断。
正如 PerlDuck 所指出的:
如果上述内容是某个 /etc/cron.d/ 文件中的 cronjob,则 root 部分是必需的。但正如您正确指出的那样,只有在那里才需要。/etc/cron.d 下面的 cronjob 是所谓的系统 cronjob。语法几乎相同,只是您必须在时间规范后的附加列中说明要以哪个用户身份运行该作业。当然,您必须是 root 才能在该目录中创建文件 – PerlDuck
因此,如果您在 /etc/cron.d 中手动创建 cron 文件,那么原始 cron 作业将是正确的:
* * * * * root /bin/bash /home/alan/Desktop/clientscript.sh > /home/alan/Desktop/alan.txt
恕我直言,使用创建 cronjobscrontab -e
要容易得多。
最后,您可以通过运行以下命令查看 cronjobs 的任何输出:
grep CRON /var/log/syslog
答案2
运行crontab -e
并输入以下行:
*/1 * * * * /home/alan/Desktop/clientscript2.sh 1> /dev/null 2> /home/alan/test.err
在您的文件中输入clientscript2.sh
以下内容:
#!/bin/bash
/home/alan/Desktop/clientscript.sh > /home/alan/Desktop/alan.txt
此命令每分钟运行一次。test.err
如果命令不成功,文件将向您输出错误。