Linux配置定時crontab及環境變量

1、linux配置定時crontab
一、執行方法
  a、crontab –e : 修改 crontab 文件,若是文件不存在會自動建立。
  b、10 0 . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
  c、crontab -l:顯示 crontab 文件,查看定時配置。
二、定時含義(參考附件crontab格式說明)
五個參數依次表明的含義分、時、日、月、星期。
三、秒級定時任務執行採起sleep方式,執行的時間間隔要能被60整除,以下例子。也能夠把sleep命令寫進程序中而後引入程序。
例如:
程序每10s執行一次php

          • . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 10; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 20; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 30; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 40; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 50; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
            程序每5s執行一次
          • . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 5 . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 10; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 15; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 20; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 25; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 30; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 35; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 40; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 45; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 50; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
          • sleep 55; . ./.bash_profile;sh /home/zjtxjb_scp1/etc/shell/x.sh
            四、crontab環境變量問題:crontab老是不會缺省的從用戶profile文件中讀取環境變量參數,常常致使在手工執行某個腳本時是成功的,可是到crontab中試圖讓它按期執行時就是會出錯。2種方法能夠解決這個問題,主要是讓環境變量在crontab中被定義
              a、在Shell文件裏面獲取環境變量值的路徑寫成絕對路徑,別用環境變量的路徑值。
              b、Shell腳本缺省的#!/bin/sh開頭換行後的第一行用(前提是profile和.bash_profile分別存在須要的路徑配置)
                 #!/bin/sh
                 . /etc/profile
                 . ~/.bash_profile
              只有crontab在執行腳本的時候可以讀到用戶的環境變量參數,才能保證定時能正常被執行。

二、關於linux環境變量
系統級:
  (1)/etc/profile:該文件是用戶登陸時,操做系統定製用戶環境時使用的第一個文件,應用於登陸到系統的每個用戶。該文件通常是調用/etc/bash.bashrc文件。
/etc/bash.bashrc:系統級的bashrc文件。
  (2)/etc/environment:在登陸時操做系統使用的第二個文件,系統在讀取你本身的profile前,設置環境文件的環境變量。
用戶級(這些文件處於家目錄下)
  (1)~/.profile:每一個用戶均可使用該文件輸入專用於本身使用的shell信息,當用戶登陸時,該文件僅僅執行一次!默認狀況下,他設置一些環境變量,執行用戶的.bashrc文件。這裏是推薦放置我的設置的地方
  (2)~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登陸時以及每次打開新的shell時,該該文件被讀取。不推薦放到這兒,由於每開一個shell,這個文件會讀取一次,效率確定有影響。
  (3)~/.bash_profile or ~./bash_login當這個文件存在時,在登陸shell時會讀取./bash_profile文件,而不是.profile文件。我認爲該文件實現的目的 跟.profile文件是同樣的,當查找的資料中須要你修改.bash_profile文件,但卻你沒有該文件的時候,也能夠修改.profile來完成 實現linux

點贊
————————————————
版權聲明:本文爲CSDN博主「簡單式smiling」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/u012240363/article/details/88301033shell

使用Laravel分版本環境部署時遇到的問題bash

Crontab 執行 Laravel 獲取不到用戶全局變量,經過查閱資料獲知 Crontab 載入配置的時候 並未載入 /etc/profile ;ide

針對這個現象 初期解決方式是在Crontab 任務內添加配置文件載入網站

?操作系統

1
2
3
4
5.net

          • source /etc/profile && php task.php
            • export PHP_ENV=prod && php task.php
            • /home/user_name/task.sh && php task.php

以後發現配置文件的載入順序
•/etc/environmentblog

是系統在登陸時讀取的第一個文件,用於爲全部進程設置環境變量。系統使用此文件時並非執行此文件中的命 令,而是根據KEY=VALUE模式的代碼,對KEY賦值以VALUE,所以文件中若是要定義PATH環境變量,只需加入一行形如 PATH=$PATH:/xxx/bin的代碼便可。
•/etc/profile進程

是系統登陸時執行的第二個文件,能夠用於設定針對全系統全部用戶的環境變量。
•~/.profile

是對應當前登陸用戶的profile文件,用於定製當前用戶的我的工做環境。
•/etc/bash.bashrc

是針對全部用戶的bash初始化文件,在此中設定的環境變量將應用於全部用戶的shell中,此文件會在用戶每次打開shell時執行一次。
•~/.bashrc

是對應當前登陸用戶的bash初始化文件,當用戶每次打開shell時,系統都會執行此文件一次。

經測在 /etc/environment 設置後一樣生效

總結

以上所述是小編給你們介紹的Linux Crontab 獲取環境變量配置解析,但願對你們有所幫助,若是你們有任何疑問請給我留言,小編會及時回覆你們的。在此也很是感謝你們對腳本之家網站的支持!

相關文章
相關標籤/搜索