由于linux的应用场景往往是多用户的,不谨慎的操作可能会导致crontab任务的串线(a用户设置的任务,在其他用户下也被执行。或者某些需要全局运行的任务,只在某个用户下进行),所以我们要分清crontab任务的归属和执行范围。
我们先创建三个用户,分别为yuangong1,yuangong2,yuangong3
adduser yuangong1
adduser yuangong2
adduser yuangong3
查看家目录确认创建成功
#登录yuangong1账户,创建一个crontab任务。
su -l yuangong1
#crontab -e创建任务
*/1 * * * * touch /home/yuangong1/test/$(date +\%Y\%m\%d\%H\%M\%S)
#等待执行一会
任务被执行了。
这时候,我们查看一下crontab的配置文件。
目录为:/var/spool/cron/
我们发现文件夹下有一个yuangong1的文件,这个就是我们刚刚用yuangong1账户创建的crontab任务。
这个任务是清晰的归属于yuangong1的,并且使用yuangong1的用户名命名的。
这个文件是crontab自动创建的,目的就是为了防止串线,起到一个隔离的作用。
当我们需要一个全局的命令时,使用sudo权限,去编辑/etc/crontab文件即可。
我们查看etc下的包含cron的文件,发现有如下文件:
这些文件也很好理解。
cron.daily每天执行一次,在6点25分执行
cron.hourly每小时执行一次,每小时的17分执行
cron.monthly每月执行一次,每月1号的6点52分执行
cron.weekly每周执行一次,每周的第七天6点47分执行
具体的执行时间可以根据需求进行修改,上面列出的为系统默认的时间。