UNIX/Redhat

Linux Admin2 - Chapter4 Schedule Future linux tasks

99iberty 2018. 7. 18. 17:10


1. AT

넘나 불편 별로 안 쓴다.

[root@station13 ~]# date
Thu Jul 19 10:03:52 KST 2018
[root@station13 ~]# at -t 201807191012
at> /usr/bin/date > /tmp/at.work
at> /usr/bin/df -h >> /tmp/at.work
at> <EOT> (Ctrl + d)
job 1 at Thu Jul 19 10:12:00 2018
[root@station13 ~]# atq
1    Thu Jul 19 10:12:00 2018 a root
[root@station13 ~]#

[root@station13 ~]# at -c 1    (at -c 작업지시서_번호)
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_VTNR=1; export XDG_VTNR
SSH_AGENT_PID=1839; export SSH_AGENT_PID
XDG_SESSION_ID=1; export XDG_SESSION_ID
GUESTFISH_INIT=\\e[1\;34m; export GUESTFISH_INIT
HOSTNAME=station13.example.com; export HOSTNAME
IMSETTINGS_INTEGRATE_DESKTOP=yes; export IMSETTINGS_INTEGRATE_DESKTOP
GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1; export GPG_AGENT_INFO
SHELL=/bin/bash; export SHELL
XDG_MENU_PREFIX=gnome-; export XDG_MENU_PREFIX
VTE_VERSION=3804; export VTE_VERSION
HISTSIZE=1000; export HISTSIZE
WINDOWID=37748743; export WINDOWID
IMSETTINGS_MODULE=none; export IMSETTINGS_MODULE
USER=root; export USER
LS_COLORS=rs=0:di=38\;5\;27:ln=38\;5\;51:mh=44\;38\;5\;15:pi=40\;38\;5\;11:so=38\;5\;13:do=38\;5\;5:bd=48\;5\;232\;38\;5\;11:cd=48\;5\;232\;38\;5\;3:or=48\;5\;232\;38\;5\;9:mi=05\;48\;5\;232\;38\;5\;15:su=48\;5\;196\;38\;5\;15:sg=48\;5\;11\;38\;5\;16:ca=48\;5\;196\;38\;5\;226:tw=48\;5\;10\;38\;5\;16:ow=48\;5\;10\;38\;5\;21:st=48\;5\;21\;38\;5\;15:ex=38\;5\;34:\*.tar=38\;5\;9:\*.tgz=38\;5\;9:\*.arc=38\;5\;9:\*.arj=38\;5\;9:\*.taz=38\;5\;9:\*.lha=38\;5\;9:\*.lz4=38\;5\;9:\*.lzh=38\;5\;9:\*.lzma=38\;5\;9:\*.tlz=38\;5\;9:\*.txz=38\;5\;9:\*.tzo=38\;5\;9:\*.t7z=38\;5\;9:\*.zip=38\;5\;9:\*.z=38\;5\;9:\*.Z=38\;5\;9:\*.dz=38\;5\;9:\*.gz=38\;5\;9:\*.lrz=38\;5\;9:\*.lz=38\;5\;9:\*.lzo=38\;5\;9:\*.xz=38\;5\;9:\*.bz2=38\;5\;9:\*.bz=38\;5\;9:\*.tbz=38\;5\;9:\*.tbz2=38\;5\;9:\*.tz=38\;5\;9:\*.deb=38\;5\;9:\*.rpm=38\;5\;9:\*.jar=38\;5\;9:\*.war=38\;5\;9:\*.ear=38\;5\;9:\*.sar=38\;5\;9:\*.rar=38\;5\;9:\*.alz=38\;5\;9:\*.ace=38\;5\;9:\*.zoo=38\;5\;9:\*.cpio=38\;5\;9:\*.7z=38\;5\;9:\*.rz=38\;5\;9:\*.cab=38\;5\;9:\*.jpg=38\;5\;13:\*.jpeg=38\;5\;13:\*.gif=38\;5\;13:\*.bmp=38\;5\;13:\*.pbm=38\;5\;13:\*.pgm=38\;5\;13:\*.ppm=38\;5\;13:\*.tga=38\;5\;13:\*.xbm=38\;5\;13:\*.xpm=38\;5\;13:\*.tif=38\;5\;13:\*.tiff=38\;5\;13:\*.png=38\;5\;13:\*.svg=38\;5\;13:\*.svgz=38\;5\;13:\*.mng=38\;5\;13:\*.pcx=38\;5\;13:\*.mov=38\;5\;13:\*.mpg=38\;5\;13:\*.mpeg=38\;5\;13:\*.m2v=38\;5\;13:\*.mkv=38\;5\;13:\*.webm=38\;5\;13:\*.ogm=38\;5\;13:\*.mp4=38\;5\;13:\*.m4v=38\;5\;13:\*.mp4v=38\;5\;13:\*.vob=38\;5\;13:\*.qt=38\;5\;13:\*.nuv=38\;5\;13:\*.wmv=38\;5\;13:\*.asf=38\;5\;13:\*.rm=38\;5\;13:\*.rmvb=38\;5\;13:\*.flc=38\;5\;13:\*.avi=38\;5\;13:\*.fli=38\;5\;13:\*.flv=38\;5\;13:\*.gl=38\;5\;13:\*.dl=38\;5\;13:\*.xcf=38\;5\;13:\*.xwd=38\;5\;13:\*.yuv=38\;5\;13:\*.cgm=38\;5\;13:\*.emf=38\;5\;13:\*.axv=38\;5\;13:\*.anx=38\;5\;13:\*.ogv=38\;5\;13:\*.ogx=38\;5\;13:\*.aac=38\;5\;45:\*.au=38\;5\;45:\*.flac=38\;5\;45:\*.mid=38\;5\;45:\*.midi=38\;5\;45:\*.mka=38\;5\;45:\*.mp3=38\;5\;45:\*.mpc=38\;5\;45:\*.ogg=38\;5\;45:\*.ra=38\;5\;45:\*.wav=38\;5\;45:\*.axa=38\;5\;45:\*.oga=38\;5\;45:\*.spx=38\;5\;45:\*.xspf=38\;5\;45:; export LS_COLORS
SSH_AUTH_SOCK=/run/user/0/keyring/ssh; export SSH_AUTH_SOCK
USERNAME=root; export USERNAME
SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1671,unix/unix:/tmp/.ICE-unix/1671; export SESSION_MANAGER
GUESTFISH_PS1=\\[\\e[1\;32m\\]\>\<fs\>\\[\\e[0\;31m\\]\ ; export GUESTFISH_PS1
GNOME_SHELL_SESSION_MODE=classic; export GNOME_SHELL_SESSION_MODE
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin; export PATH
MAIL=/var/spool/mail/root; export MAIL
DESKTOP_SESSION=gnome-classic; export DESKTOP_SESSION
QT_IM_MODULE=ibus; export QT_IM_MODULE
PWD=/root; export PWD
XMODIFIERS=@im=ibus; export XMODIFIERS
LANG=en_US.UTF-8; export LANG
GDM_LANG=en_US.UTF-8; export GDM_LANG
GUESTFISH_OUTPUT=\\e[0m; export GUESTFISH_OUTPUT
GDMSESSION=gnome-classic; export GDMSESSION
HISTCONTROL=ignoredups; export HISTCONTROL
XDG_SEAT=seat0; export XDG_SEAT
HOME=/root; export HOME
SHLVL=2; export SHLVL
GNOME_DESKTOP_SESSION_ID=this-is-deprecated; export GNOME_DESKTOP_SESSION_ID
XDG_SESSION_DESKTOP=gnome-classic; export XDG_SESSION_DESKTOP
LOGNAME=root; export LOGNAME
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-0wikN5hekV,guid=67304b6efdb0ced5711bc3eb5b4c235f; export DBUS_SESSION_BUS_ADDRESS
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
WINDOWPATH=1; export WINDOWPATH
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME; export XDG_CURRENT_DESKTOP
GUESTFISH_RESTORE=\\e[0m; export GUESTFISH_RESTORE
XAUTHORITY=/run/gdm/auth-for-root-op8ATU/database; export XAUTHORITY
cd /root || {
     echo 'Execution directory inaccessible' >&2
     exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER7ff29d74'
/usr/bin/date > /tmp/at.work
/usr/bin/df -h >> /tmp/at.work

marcinDELIMITER7ff29d74


[root@station13 ~]# ll /var/spool/at  (여기에 at 스케줄 있다.)
total 8
-rwx------. 1 root   root   4498 Jul 19 10:04 a0000101859928
drwx------. 2 daemon daemon    6 Nov  6  2016 spool


[root@station13 ~]# vim /var/spool/at/a0000101859928   (AT스케줄 수정해야 할때)


#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_VTNR=1; export XDG_VTNR
SSH_AGENT_PID=1839; export SSH_AGENT_PID
XDG_SESSION_ID=1; export XDG_SESSION_ID
GUESTFISH_INIT=\\e[1\;34m; export GUESTFISH_INIT
HOSTNAME=station13.example.com; export HOSTNAME
IMSETTINGS_INTEGRATE_DESKTOP=yes; export IMSETTINGS_INTEGRATE_DESKTOP
GPG_AGENT_INFO=/run/user/0/keyring/gpg:0:1; export GPG_AGENT_INFO
SHELL=/bin/bash; export SHELL
XDG_MENU_PREFIX=gnome-; export XDG_MENU_PREFIX
VTE_VERSION=3804; export VTE_VERSION
HISTSIZE=1000; export HISTSIZE
WINDOWID=37748743; export WINDOWID
IMSETTINGS_MODULE=none; export IMSETTINGS_MODULE
USER=root; export USER



2. crontab

1) crontab 포맷


Minute of the hour


Hour of the Day


Day of the Month


Month of the year


Day of the week

요일

46

16

*

*

1-5

(일월화수목금토 = 0~6, 일요일은 0,7 둘 다 됨)


#### /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



3. anacron

: cron 스케줄이 유지보수 등으로 실행되지 못했을때, 보험같은 존재

1) 아나크론은 데몬이 아님. 시스템 부팅될때 실행되는게 아님.

2) 크론데몬이 아나크론 실행시킴.

ㄱ. systemd가 커널에 의해 실행됨.

ㄴ. systemd가 데몬들을 쭉 실행시키는게 그 중 하나가 crond

ㄷ. crond의 환경설정파일은 /etc/crontab

----> 별 내용 없음. anacron 이 그 자리 대체.

----> 매시 1분마다 crond가 anacron 실행

[root@station13 cron.d]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

[root@station13 cron.d]#
[root@station13 cron.d]# ls /etc/cron.hourly/
0anacron  mcelog.cron
[root@station13 cron.d]#

[root@station13 cron.d]# cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
    day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
    exit 0;
fi

# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
    /usr/bin/on_ac_power >/dev/null 2>&1
    if test $? -eq 1; then
    exit 0
    fi
fi
/usr/sbin/anacron -s
[root@station13 cron.d]#