我把它安装在了一台工作机器上,但无论我怎么做,它都不起作用。所以现在我在家里的虚拟机上安装了它,但它也不起作用。以下是我想做的事情:
在 /home/john/Desktop 上有一个名为 test.sh 的文件。其内容为:
#!/bin/bash
echo "Bing!" > /tmp/cronjob
已完成chmod 777 test.sh
并可以运行它。列表显示它为 users/group/global 的 rwx。然后我执行crontab -e
并添加以下行:
* * * * * john /home/john/Desktop/test.sh
但它不起作用。文件从未写入。我也尝试过使用特定时间(例如,现在是晚上 9 点,所以我将小时设置为 05 21 并等待),但它也不起作用。我也尝试过在 crontab 中不使用用户“john”,但没有成功。我crontab -e -u john
也尝试过使用。什么都没用。
执行后service cron status
我发现它已启动/正在运行。我也尝试过重新启动它。
我究竟做错了什么?
另外,如果我需要以 root 身份运行某些命令,我应该使用它吗crontab -e -u <username> right
?
答案1
只是要确定:
crontab -e
然后
30 21 * * * /home/john/Desktop/test.sh
编辑:我的意思是你不需要在 cron 的时间部分和命令路径旁边有“john”。
答案2
有三种不同的方法来使用 cron。
- 将脚本放入 /etc/cron.hourly 、 /etc/cron.daily 、 /etc/cron.weekly 或 /etc/cron.monthly 文件夹中,
系统将在预定时间以 root 权限运行这些脚本 - 编辑 /etc/crontab
这需要类似于您尝试使用的语法crontab -e,因为在这里您可以指定哪个用户应该负责计划的作业,在您的情况下是约翰。 - crontab 命令,它将为执行该作业的用户保存一个 cron 选项卡,保存在 /var/spool/cron/crontabs 中
如果您使用第三种方法,则无需告诉它您是约翰,它已经知道了。但是,您可以使用 -u 标志告诉它将该作业保存在其他人的 cron 选项卡中。
使用第三种方法,您不需要约翰在* * * * * john /home/john/Desktop/test.sh
答案3
* * * * * john /home/john/Desktop/test.sh
这里的“john”是错误的。只有系统 crontab 才有用户名字段;使用 crontab -e 编辑的每个用户 crontab 没有该字段(用户是隐式的)。只需将其省略即可。
另外,如果我需要以 root 身份运行一些命令,我应该使用它和 crontab -e -u,对吗?
不,如果你想要一个 cronjob 以 root 权限运行,只需执行
sudo crontab -e
(或者将其放入系统crontab中,用户名是“root”)。