當前位置:首頁 » 網頁前端 » centos76定時執行腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

centos76定時執行腳本

發布時間: 2023-02-27 11:00:43

1. linux 在screen下定時執行腳本

首先查看一下/etc/crontab文件:

$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是有關設置cron任務運行的環境變數。SHELL變數的值指定系統使用的SHELL環境(該樣例為bash shell),PATH變數定義了執行命令的路徑。Cron的輸出以電子郵件的形式發給MAILTO變數定義的用戶名。如果MAILTO變數定義為空字元串(MAILTO=""),電子郵件不會被發送。執行命令或腳本時HOME變數可用來設置基目錄。
文件/etc/crontab中每行任務的描述格式如下:

minute hour day month dayofweek command

minute - 從0到59的整數
hour - 從0到23的整數
day - 從1到31的整數 (必須是指定月份的有效日期)
month - 從1到12的整數 (或如Jan或Feb簡寫的月份)
dayofweek - 從0到7的整數,0或7用來描述周日 (或用Sun或Mon簡寫來表示)
command - 需要執行的命令(可用as ls /proc >> /tmp/proc或 執行自定義腳本的命令)

root表示以root用戶身份來運行
run-parts表示後面跟著的是一個文件夾,要執行的是該文件夾下的所有腳本

對於以上各語句,星號(*)表示所有可用的值。例如*在指代month時表示每月執行(需要符合其他限制條件)該命令。
整數間的連字型大小(-)表示整數列,例如1-4意思是整數1,2,3,4
指定數值由逗號分開。如:3,4,6,8表示這四個指定整數。
符號「/」指定步進設置。「/<interger>」表示步進值。如0-59/2定義每兩分鍾執行一次。步進值也可用星號表示。如*/3用來運行每三個月份運行指定任務。

以「#」開頭的為注釋行,不會被執行。

如果一個cron任務需要定期而不是按小時,天,周,月來執行,則需要添加/etc/cron.d目錄。這個目錄下的所有文件和文件/etc/crontab語法相同,查看樣例:

# record the memory usage of the system every monday
# at 3:30AM in the file /tmp/meminfo
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo
# run custom scrīpt the first day of every month at 4:10AM
10 4 1 * * /root/scrīpts/backup.sh

除了root用戶之外的用戶可以執行crontab配置計劃任務。所有用戶定義的crontab存儲在目錄/var/spool/cron下,任務會以創建者的身份被執行。要以特定用戶創建一個crontab,先以該用戶登錄,執行命令crontab -e,系統會啟動在VISUAL或者EDITOR中指定的的編輯軟體編輯crontab。文件內容與/etc/crontab格式相同。示例如下:

0 3 * * * /home/dbbackup/db1backup.sh backup
0 4 * * * /home/dbbackup/db2backup.sh backup

表示每天3點執行/home/dbbackup/db1backup.sh backup,4點執行/home/dbbackup/db2backup.sh backup,如果是每五分鍾執行一次可改為:

*/5 * * * * /home/dbbackup/db2backup.sh backup

當更改的crontab需要保存時,文件會保存在成如下文件/var/spool/cron/username。文件名會根據用戶名而不同。

cron服務會每分鍾檢查一次/etc/crontab、/etc/cron.d/、/var/spool/cron文件下的變更。如果發現變化,就會下載到存儲器中。因此,即使crontab文件改變了,程序也不需要重新啟動。推薦自定義的任務使用crontab -e命令添加,退出後用/etc/init.d/crond restart命令重啟crond進程,官方文件說不用重啟進程,但我遇到不重啟無法運行任務的情況。開始不知道/etc/crontab文件中的run-parts是什麼意思,直接把命令按照/etc/crontab的格式加上總是無法運行,後來才知道run-parts是指後面跟著的是文件夾。

2. 求教關於Centos 7開機自動啟動腳本 問題

1. 自己新建一個腳本,如centnet-service.sh
經過後面的幾個步驟後,這個腳本在開機的時候會執行,在這個腳本裡面可以寫你開機的時候想執行的命令,如啟動tomcat,oracle等服務
2. 在腳本中輸入啟動服務的命令,如(開機啟動tomcat):
#!/bin/bashexport JDK_HOME=/home/java/jdk1.8.0_91export JAVA_HOME=/home/java/jdk1.8.0_91/home/tomcat/apache-tomcat-8.0.36/bin/startup.sh

3. 執行如下命令,將該腳本標記為可執行文件(添加可執行的許可權)
chmod +x /home/centnet/centnet-service.sh

4. 執行如下命令將/etc/rc.d/rc.local文標記為可執行文件
在centos7中,/etc/rc.d/rc.local文件的許可權被降低了,開機的時候執行在自己的腳本是不能起動一些服務的,執行下面的命令可以文件標記為可執行的文件

chmod +x /etc/rc.d/rc.local

5. 打開/etc/rc.d/rc.local文件,在最後面添加如下腳本
/home/centnet/centnet-service.sh

這樣,centnet-service.sh這個腳本在開機的時候就會被執行了,以後再這裡面寫啟動服務的命令就可以了

3. CentOS7 設置開機自啟動腳本

兩種實現方式:
方法一: (rc.local)
1、因為在 centos7 中 /etc/rc.d/rc.local 的許可權被降低了,所以需要賦予其可執行權

2、賦予腳本可執行許可權
假設 /usr/local/sca/start.sh 是你的腳本路徑,給予執行許可權

3、打開 /etc/rc.d/rc.local 文件,在末尾增加如下內容

方法二: (chkconfig)
1、將腳本移動到 /etc/rc.d/init.d 目錄下

2、增加腳本的可執行許可權

3、添加腳本到開機自動啟動項目中

chkconfig 啟動腳本規范 在腳本開頭加入下面內容:

注意:不添加以上內容的話添加啟動項時會提示service myservice does not support chkconfig
Linux啟動優先順序:

4. 求教關於Centos 7開機自動啟動腳本 問題。

Centos 7 中 /etc/rc.d/rc.local 這個文件許可權降低了。你可以看下 ll /etc/rc.d/rc.local 看他的許可權。
你可以試著加下許可權。
chmod +x /etc/rc.d/rc.local