linux下普通用户的定时任务

参考:

crontab命令详解

mail用法(使用mail查看定时任务执行情况)

centos系统禁止普通用户使用crontab命令

普通用户定义crontab定时任务:

比如oracle用户定义一个定时任务:每分钟打印当前目录

[oracle@node2 ~]$ crontab -e
*/1 * * * * /bin/ls -al > /tmp/ls.log

如何判断定时任务有没有执行?

首先crond服务要处于运行状态

[oracle@node2 ~]$ service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-07-15 08:27:38 EDT; 2min 43s ago
 Main PID: 6189 (crond)
   CGroup: /system.slice/crond.service
           └─6189 /usr/sbin/crond -n
[oracle@node2 ~]$ 

1.在root用户下使用mail命令

[root@node2 ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 801 messages 9 new 94 unread
 N795 (Cron Daemon)         Sun Jul 15 08:25  35/932   "Cron  /bin/ls"
 N796 (Cron Daemon)         Sun Jul 15 08:26  35/932   "Cron  /bin/ls"
 N797 (Cron Daemon)         Sun Jul 15 08:27  35/932   "Cron  /bin/ls"
 N798 (Cron Daemon)         Sun Jul 15 08:28  35/932   "Cron  /bin/ls"
 N799 (Cron Daemon)         Sun Jul 15 08:29  35/932   "Cron  /bin/ls"
 N800 (Cron Daemon)         Sun Jul 15 08:30  35/932   "Cron  /bin/ls"
& file
"/var/spool/mail/root": 801 messages 9 new 94 unread
& h
>N793 (Cron Daemon)         Sun Jul 15 08:23  35/932   "Cron  /bin/ls"
 N794 (Cron Daemon)         Sun Jul 15 08:24  35/932   "Cron  /bin/ls"
 N795 (Cron Daemon)         Sun Jul 15 08:25  35/932   "Cron  /bin/ls"
 N796 (Cron Daemon)         Sun Jul 15 08:26  35/932   "Cron  /bin/ls"
 N797 (Cron Daemon)         Sun Jul 15 08:27  35/932   "Cron  /bin/ls"
 N798 (Cron Daemon)         Sun Jul 15 08:28  35/932   "Cron  /bin/ls"
 N799 (Cron Daemon)         Sun Jul 15 08:29  35/932   "Cron  /bin/ls"
 N800 (Cron Daemon)         Sun Jul 15 08:30  35/932   "Cron  /bin/ls"
&800
Message 800:
From [email protected]  Sun Jul 15 08:30:01 2018
Return-Path: 
X-Original-To: root
Delivered-To: [email protected]
From: "(Cron Daemon)" 
To: [email protected]
Subject: Cron  /bin/ls
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
X-Cron-Env: 
Date: Sun, 15 Jul 2018 08:30:01 -0400 (EDT)
Status: R

\
anaconda-ks.cfg
Desktop
Documents
Downloads
initial-setup-ks.cfg
Music
Pictures
Public
Templates
Videos

在mial交互环境下,通过file命令显示当前邮件总数等信息

通过head查看最近的邮件

输入编号查看该邮件的详细信息

2.查看日志:tail -n 10 /var/log/cron

[root@node2 ~]# tail -n 10 /var/log/cron
Jul 15 08:31:01 node2 CROND[6297]: (root) CMD (/bin/ls)
Jul 15 08:31:01 node2 CROND[6298]: (oracle) CMD (/bin/ls -al > /tmp/ls.log )
Jul 15 08:32:01 node2 CROND[6321]: (oracle) CMD (/bin/ls -al > /tmp/ls.log )
Jul 15 08:32:01 node2 CROND[6322]: (root) CMD (/bin/ls)
Jul 15 08:33:02 node2 CROND[6342]: (root) CMD (/bin/ls)
Jul 15 08:33:02 node2 CROND[6343]: (oracle) CMD (/bin/ls -al > /tmp/ls.log )
Jul 15 08:34:01 node2 CROND[6362]: (root) CMD (/bin/ls)
Jul 15 08:34:01 node2 CROND[6363]: (oracle) CMD (/bin/ls -al > /tmp/ls.log )
Jul 15 08:35:01 node2 CROND[6382]: (oracle) CMD (/bin/ls -al > /tmp/ls.log )
Jul 15 08:35:01 node2 CROND[6383]: (root) CMD (/bin/ls)
[root@node2 ~]#

日志文件中记录了所有用户的定时任务执行情况

3.在普通用户下使用mail查看(定时任务中要明确执行定时任务的用户,否则即使在oracle用户下定义的定时任务可能不能收到邮件)

[oracle@node2 ~]$ crontab -l
*/1 * * * * oracle  /bin/ls -al > /tmp/ls.log 
[oracle@node2 ~]$ 

[oracle@node2 ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/oracle": 6 messages 1 unread
    1 (Cron Daemon)         Mon Mar  5 14:10  52/2476  "Cron  ls -al"
    2 (Cron Daemon)         Sun Jul 15 06:10  57/2777  "Cron  /bin/ls -al"
    3 (Cron Daemon)         Sun Jul 15 06:11  57/2777  "Cron  /bin/ls -al"
    4 (Cron Daemon)         Sun Jul 15 06:12  57/2778  "Cron  /bin/ls -al"
    5 (Cron Daemon)         Sun Jul 15 06:13  57/2778  "Cron  /bin/ls -al"
>U  6 (Cron Daemon)         Sun Jul 15 08:38  26/929   "Cron  oracle  /bin/ls -al > /tmp/ls.log"
& 

在普通用户下不能直接查看/var/log/cron文件

[oracle@node2 ~]$ tail -n 10 /var/log/cron
tail: cannot open ‘/var/log/cron’ for reading: Permission denied
You have new mail in /var/spool/mail/oracle
[oracle@node2 ~]$ 

定时任务还有一种写在/etc/crontab文件中的方式,但是在centos7中写在该文件中执行会报错

[oracle@node2 ~]$ cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
[oracle@node2 ~]$ 


你可能感兴趣的:(linux,运维)