linux中普通用户的定时任务详解

吾爱主题 阅读:114 2024-04-05 15:05:03 评论:0

前言

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

?
1 [oracle@node2 ~]$ crontab -e

*/1 * * * * /bin/ls -al > /tmp/ls.log

如何判断定时任务有没有执行?首先crond服务要处于运行状态

?
1 2 3 4 5 6 7 8 9 [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命令

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 [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 <root@node2> /bin/ls" N796 (Cron Daemon) Sun Jul 15 08:26 35 /932 "Cron <root@node2> /bin/ls" N797 (Cron Daemon) Sun Jul 15 08:27 35 /932 "Cron <root@node2> /bin/ls" N798 (Cron Daemon) Sun Jul 15 08:28 35 /932 "Cron <root@node2> /bin/ls" N799 (Cron Daemon) Sun Jul 15 08:29 35 /932 "Cron <root@node2> /bin/ls" N800 (Cron Daemon) Sun Jul 15 08:30 35 /932 "Cron <root@node2> /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 <root@node2> /bin/ls" N794 (Cron Daemon) Sun Jul 15 08:24 35 /932 "Cron <root@node2> /bin/ls" N795 (Cron Daemon) Sun Jul 15 08:25 35 /932 "Cron <root@node2> /bin/ls" N796 (Cron Daemon) Sun Jul 15 08:26 35 /932 "Cron <root@node2> /bin/ls" N797 (Cron Daemon) Sun Jul 15 08:27 35 /932 "Cron <root@node2> /bin/ls" N798 (Cron Daemon) Sun Jul 15 08:28 35 /932 "Cron <root@node2> /bin/ls" N799 (Cron Daemon) Sun Jul 15 08:29 35 /932 "Cron <root@node2> /bin/ls" N800 (Cron Daemon) Sun Jul 15 08:30 35 /932 "Cron <root@node2> /bin/ls" &800 Message 800: From root@node2.matengbing.com Sun Jul 15 08:30:01 2018 Return-Path: <root@node2.matengbing.com> X-Original-To: root Delivered-To: root@node2.matengbing.com From: "(Cron Daemon)" <root@node2.matengbing.com> To: root@node2.matengbing.com Subject: Cron <root@node2> /bin/ls Content-Type: text /plain ; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-Cron-Env: <XDG_SESSION_ID=278> X-Cron-Env: <XDG_RUNTIME_DIR= /run/user/0 > X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL= /bin/sh > X-Cron-Env: <HOME= /root > X-Cron-Env: <PATH= /usr/bin : /bin > X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> 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

?
1 2 3 4 5 6 7 8 9 10 11 12 [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用户下定义的定时任务可能不能收到邮件)

?
1 2 3 4 5 6 7 8 9 10 11 12 13 [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 <oracle@localhost> ls -al" 2 (Cron Daemon) Sun Jul 15 06:10 57 /2777 "Cron <oracle@node2> /bin/ls -al" 3 (Cron Daemon) Sun Jul 15 06:11 57 /2777 "Cron <oracle@node2> /bin/ls -al" 4 (Cron Daemon) Sun Jul 15 06:12 57 /2778 "Cron <oracle@node2> /bin/ls -al" 5 (Cron Daemon) Sun Jul 15 06:13 57 /2778 "Cron <oracle@node2> /bin/ls -al" >U 6 (Cron Daemon) Sun Jul 15 08:38 26 /929 "Cron <oracle@node2> oracle /bin/ls -al > /tmp/ls.log" &

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

?
1 2 3 4 [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中写在该文件中执行会报错

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [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 ~]$

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。

原文链接:https://www.jianshu.com/p/4fe7abc0598c

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容