1. 程式人生 > >crontab執行任務呼叫shell指令碼,相對路徑無法找到

crontab執行任務呼叫shell指令碼,相對路徑無法找到

問題出現的場景大概就是

1 cron呼叫一個python指令碼

2 python指令碼中呼叫一個shell指令碼(對日誌分析)獲取shell輸出然後傳送郵件

類似一個監控任務。

直接執行python指令碼沒有問題,但是寫在cron中之後,shell指令碼中的相對路徑就找不到了,總是提示無法找到某些檔案

後來解決的問題就是使用log檔案的絕對路徑,執行就正常了。

google了一些,發現很多人也遇到過類似的問題,可能和cron的機制有關係。

大部分人的問題都是因為環境變數造成的,因為cron是一個獨立程序,也不是使用者登入等,所以有些程式會無法執行成功。

類似: http://stackoverflow.com/questions/2388087/how-to-get-cron-to-call-in-the-correct-paths

但是從很多人的指令碼中基本都是絕對路徑,可能還是我寫的太少,很多原則和原理不是很清楚。

相關推薦

crontab執行任務呼叫shell指令碼相對路徑無法找到

問題出現的場景大概就是 1 cron呼叫一個python指令碼 2 python指令碼中呼叫一個shell指令碼(對日誌分析)獲取shell輸出然後傳送郵件 類似一個監控任務。 直接執行python指令碼沒有問題,但是寫在cron中之後,shell指令碼中的相對路徑就找不到

[Shell]crontab 執行任務呼叫shell指令碼相對路徑無法找到

問題出現的場景大概就是 1  cron呼叫一個python指令碼 2  python指令碼中呼叫一個shell指令碼(對日誌分析)獲取shell輸出然後傳送郵件 類似一個監控任務。 直接執行python指令碼沒有問題,但是寫在cron中之後,shell指令碼中的相對路徑

解決呼叫shell指令碼相對路徑的問題

依家我有1個軟體goagent目錄(大家懂得) 放在/home/gateman/Programs/ 下 1. proxy.py 入面有1個 proxy.py 檔案 放在/home/gateman/Programs/goagent/local/ 入面 2.breakwall.sh 我在 proxy.py 的上一

[Shell]crontab 運行任務調用shell腳本相對路徑無法找到

.net question pytho all call 路徑 con 調用 style 問題出現的場景大概就是 1 cron調用一個python腳本 2 python腳本中調用一個shell腳本(對日誌分析)獲取shell輸出然後發送郵件 類似一個監控任務。

linux的C程式 呼叫 shell指令碼獲取shell執行結果

linux下通過C執行命令的時候一半都是使用system()方法,但是該方法執行命令返回的值是-1或0,而有時候我們需要得到執行命令後的結果。可以使用管道實現 輸出到檔案流的函式是popen(),例如 FILE *isr; isr = popen("ls -l","r"

java呼叫shell指令碼解決傳參和許可權問題

1. java 執行shell java 通過 Runtime.getRuntime().exec() 方法執行 shell 的命令或 指令碼,exec()方法的引數可以是指令碼的路徑也可以是直接的 shell命令 程式碼如下(此程式碼是存在問題的。完整程式

Azkaban實戰Command型別單一job示例任務執行外部shell指令碼Command型別多job工作flow,HDFS操作任務MapReduce任務HIVE任務

1.Azkaban實戰 Azkaba內建的任務型別支援command、java Command型別單一job示例 1、建立job描述檔案 vi command.job #command.job type=command

Windows編寫的shell指令碼在linux上無法執行

  前兩天由於要查一個數據庫的binlog日誌,經常用命令寫比較麻煩,想著寫一個簡單的指令碼,自動去刷一下資料庫的binlog日誌,就直接在windows上面寫了,然後拷貝到linux中去執行,其實很簡單的指令碼,具體如下: #!/bin/bash #flush mysql logs every da

通過Linux定時任務shell指令碼檢測RabbitMQ消費者執行狀況以及自啟

目的:防止RabbitMQ消費者程序中斷影響業務 1、編寫 rabbitmq_consumer.php消費者檔案 (關於消費者和生產者請移步:https://blog.csdn.net/why444216978/article/details/84987011) 2、編寫she

在Oozie 中排程執行shell、hive 指令碼以及通過shell指令碼執行hive/sqoop/shell指令碼的方法

  最近專案需要用到OOzie工具,可是找了好久,也沒有找到一個完整的、統一的解決和部署方案。經過努力,終於打通了其中的所有環節,解決了各種坑爹的問題。   首先,就專案需求做一個簡單的介紹:      專案需要從mysql中匯入資料到hive進行離線計算後,再導回到mys

]利用shell指令碼crontabscp實現將一臺伺服器的目錄備份到另一臺伺服器

 關於scp的詳細功能可參考: 在這我以將伺服器A上的/home/proto目錄下的wordpress自動備份到 伺服器B的/home/proto/目錄下,其中proto為伺服器的使用者名稱, 在B下輸入命令 會發現要輸入A伺服器密碼,下面我們就解決輸入密碼

自動獲取shell指令碼的絕對路徑執行路徑

檔名 test.sh #!/bin/sh echo "指令碼所在的資料夾名:" dirname $0 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "指令碼的執行路徑

shell呼叫python指令碼並且向python指令碼傳遞引數

shell中: python test.py $para1 $para2 python中: import sys def main($canshu1, $canshu2)   ..... ma

java 呼叫 linux shell 指令碼並讀取返回值

String[] cmd = {"/bin/sh", "-c", "ps -elf | grep -v grep | grep EuropeStaticsEntrance | wc -l"}; while (true) { StringBuilder sb = ne

jenkin執行shell指令碼不到命令

jenkins預設是用非登入模式來執行shell命令,所有沒有載入環境變數配置檔案。 source /etc/profile 可以如下修改: 新增source /etc/profile

PHP 執行shell 指令碼常見問題

php呼叫shell指令碼 1)exec() 原型: string exec ( string $command [, array &$output [, int &$return_var ] ) 說明: exec執行系統外部命令時不會輸出結果,而是返回結果

linux -- shell指令碼呼叫其他指令碼shell指令碼傳遞引數

Shell 指令碼也可以看做是一個一個的函式,將命令進行了封裝。 看看自己的例子: outTop.sh 是最頂層的。【負責呼叫其他的shell 指令碼】out1.sh 是第2層。【被outTop.sh呼叫】outInsert是第2層。【被outTop.sh呼叫】檔案 out

cygwin安裝教程以及使用notepad++編寫shell指令碼並通過cygwin執行

cygwin是一個windows平臺上的unix模擬環境,主要是通過重新編譯,將posix系統上的軟體移植到windows上。相信很多朋友想安裝cygwin,但是不知道怎麼安裝,因為都是英語,對於跟英語不感冒的人來說是件痛苦的事,下面綠茶小編和大家分享cygwin安裝步驟。

(原創)Shell指令碼呼叫Aircrack-ng破解WEP加密的無線路由密碼

一小段bash程式碼,呼叫系統中已安裝的aircrack-ng破解WEP加密的無線路由密碼,可選擇是否改變MAC地址,用於隱藏。如需改變MAC地址,需安裝macchanger。 指令碼用於Linux系統中,用的是bash shell。 專案主頁: https://source

shell呼叫php指令碼並傳遞引數

命令列執行帶引數的php指令碼,並取得引數  發表於 2011-07-15 分類目錄: php 一,為什麼我們要在命令列下執行php指令碼呢? 個人理解,主要有二個原因: 1,利用crontab去跑php,可以給伺服器減壓,當然在這裡有一個條件,就是實時性要求