linux下普通使用者的定時任務
普通使用者定義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 <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 [email protected] Sun Jul 15 08:30:01 2018 Return-Path: <[email protected]> X-Original-To: root Delivered-To: [email protected] From: "(Cron Daemon)" <[email protected]> To: [email protected] 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
[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 <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檔案
[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 ~]$
喜歡的點點關注,點點贊。
對Java技術,架構技術感興趣的同學,歡迎加QQ群585550789,一起學習,相互討論。
群內已經有小夥伴將知識體系整理好(原始碼,筆記,PPT,學習視訊),歡迎加群領取。