由于linux的应用场景往往是多用户的,不谨慎的操作可能会导致crontab任务的串线(a用户设置的任务,在其他用户下也被执行。或者某些需要全局运行的任务,只在某个用户下进行),所以我们要分清crontab任务的归属和执行范围。

    我们先创建三个用户,分别为yuangong1,yuangong2,yuangong3

    1. adduser yuangong1
    2. adduser yuangong2
    3. adduser yuangong3

    查看家目录确认创建成功
    截图录屏_选择区域_20200101193950.png

    1. #登录yuangong1账户,创建一个crontab任务。
    2. su -l yuangong1
    3. #crontab -e创建任务
    4. */1 * * * * touch /home/yuangong1/test/$(date +\%Y\%m\%d\%H\%M\%S)
    5. #等待执行一会

    截图录屏_选择区域_20200101194735.png

    任务被执行了。

    这时候,我们查看一下crontab的配置文件。
    目录为:/var/spool/cron/
    截图录屏_选择区域_20200101195120.png
    我们发现文件夹下有一个yuangong1的文件,这个就是我们刚刚用yuangong1账户创建的crontab任务。
    这个任务是清晰的归属于yuangong1的,并且使用yuangong1的用户名命名的。
    这个文件是crontab自动创建的,目的就是为了防止串线,起到一个隔离的作用。

    当我们需要一个全局的命令时,使用sudo权限,去编辑/etc/crontab文件即可。

    我们查看etc下的包含cron的文件,发现有如下文件:
    截图录屏_选择区域_20200101195751.png

    这些文件也很好理解。
    cron.daily每天执行一次,在6点25分执行
    cron.hourly每小时执行一次,每小时的17分执行
    cron.monthly每月执行一次,每月1号的6点52分执行
    cron.weekly每周执行一次,每周的第七天6点47分执行

    具体的执行时间可以根据需求进行修改,上面列出的为系统默认的时间。