日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

例行性工作排程 (crontab)

發布時間:2024/1/3 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 例行性工作排程 (crontab) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說白了,就是一些例行工作的日常執行的排序程序

Linux 工作排程的種類: at,cron

鳥叔說,atd并不是在所有版本都是開啟的,但是centos7默認是開啟的

[root@localhost ~]# systemctl restart atd  #重啟atd服務
[root@localhost ~]# systemctl enable atd  #開機自運行
[root@localhost ~]# systemctl atd status  
Unknown operation 'atd'.
[root@localhost ~]# systemctl status atd  #查閱一下atd目前的狀態
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)     #是否開機啟動
   Active: active (running) since 一 2019-08-26 09:40:41 CST; 26s ago  #active(running)是否正在運行中
 Main PID: 49782 (atd)
   CGroup: /system.slice/atd.service
           └─49782 /usr/sbin/atd -f

8月 26 09:40:41 localhost.localdomain systemd[1]: Started Job spooling tools.

利用at進行工作排程,工作排程就類似于任務。就需要將任務放到一個文本文件中,這個文本文件放在/var/spool/at目錄中。這樣就可以利用at來執行了

這就類似于自啟動進程。在寫黑客程序的時候,都會有一個默認自啟動的服務,Linux這里就是類似于這么個東東,這就需要限制賬戶來執行Linux的at排程,以免黑客程序的入侵

利用/etc/at.allow與/etc/at.deny這兩個文件來限制at的執行。執行原理如圖

at語法

at指令的下達,會進入一個at shell的環境來操作。指令的下達就與環境變量有關,同時與當時的工作目錄也有關聯,因此使用絕對路徑會比較保險一些。

利用at命令,將/root/.bashrc進行郵寄

[root@localhost ~]# at now +5 minutes
at> /bin/mail -s "testing at job" root < /root/.bashrc
at> <EOT>
job 3 at Mon Aug 26 10:36:00 2019
[root@localhost ~]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=1; export XDG_SESSION_ID
HOSTNAME=localhost.localdomain; export HOSTNAME
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=192.168.132.1 64086 22; export SSH_CLIENT
PERL5LIB=/root/perl5/lib/perl5:; export PERL5LIB
SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE
QTDIR=/usr/lib64/qt-3.3; export QTDIR
QTINC=/usr/lib64/qt-3.3/include; export QTINC
PERL_MB_OPT=--install_base /root/perl5; export PERL_MB_OPT
SSH_TTY=/dev/pts/0; export SSH_TTY
QT_GRAPHICSSYSTEM_CHECKED=1; export QT_GRAPHICSSYSTEM_CHECKED
USER=root; export USER
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:; export LS_COLORS
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/lib64/qt-3.3/bin:/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/root; export PWD
LANG=zh_CN.UTF-8; export LANG
KDEDIRS=/usr; export KDEDIRS
SELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTED
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
PERL_LOCAL_LIB_ROOT=:/root/perl5; export PERL_LOCAL_LIB_ROOT
LOGNAME=root; export LOGNAME
QTLIB=/usr/lib64/qt-3.3/lib; export QTLIB
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share; export XDG_DATA_DIRS
SSH_CONNECTION=192.168.132.1 64086 192.168.132.16 22; export SSH_CONNECTION
LESSOPEN=||/usr/bin/lesspipe.sh %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins; export QT_PLUGIN_PATH
PERL_MM_OPT=INSTALL_BASE=/root/perl5; export PERL_MM_OPT
OLDPWD=/srv; export OLDPWD
cd /root || {
         echo 'Execution directory inaccessible' >&2
         exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER056cdc8c'
/bin/mail -s "testing at job" root < /root/.bashrc             #這里就是我們的指令

marcinDELIMITER056cdc8c

batch:系統有空時才進行的后臺任務

batch指令,會在cpu工作負載小于 0.8 的時候,才進行你所下達的任務指令。

鳥哥解釋的很清楚,這個工作負載的概念

整分時間 概念

循環執行的例行性工作排程

我理解的就是,每隔多長時間執行一次的程式

上面三個圖就是 日期格式 的范圍

上面倒數第而張圖,那個例子很清晰。。

上面幾個日期函數的特殊字符,我覺得很有用。。。

這里有個例外。就是鳥哥在文中說的,cron這個命令,有的unix會把他放到內存里去執行,這樣,需要重啟一下cron服務,才能執行你的修改后的指令 systemctl restart crond ,將服務重啟一下

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root              #發生錯誤時,發送的地址,默認是發送給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

將某個sh產生的信息丟入垃圾桶

xxxxx.sh > /dev/null 2>&1

后面的2>&1,不大理解為什么要加這個,所以查了一下

對于& 1 更準確的說應該是文件描述符 1,而1標識標準輸出,stdout。
對于2 ,表示標準錯誤,stderr。
2>&1 的意思就是將標準錯誤重定向到標準輸出。這里標準輸出已經重定向到了 /dev/null。那么標準錯誤也會輸出到/dev/null(這里才是重點)

可以把/dev/null 可以看作"黑洞". 它等價于一個只寫文件. 所有寫入它的內容都會永遠丟失. 而嘗試從它那兒讀取內容則什么也讀不到.

偶爾也可以把 & 在命令的最后加上,表示讓程序后臺執行。

為何2>&1要寫在后面?

index.php task testOne >/dev/null 2>&1

我們可以理解為,左邊是標準輸出,好,現在標準輸出直接輸入到 /dev/null 中,而2>&1是將標準錯誤重定向到標準輸出,所以當程序產生錯誤的時候,相當于錯誤流向左邊,而左邊依舊是輸入到/dev/null中。

可以理解為,如果寫在中間,那會把隔斷標準輸出指定輸出的文件

將指令至于背景中,我理解的意思就是后臺運行

在指令后面加&

[root@localhost ~]# tar -zpcf /tmp/etc.tar.gz /etc &

總結

以上是生活随笔為你收集整理的例行性工作排程 (crontab)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。