2015-05-30 37 views
-2

「無法打開* .SH」消息當我使用init.d目錄鏈接到/etc/rcS.d在啓動時運行的腳本S*.sh,我得到以下信息:,同時啓動

Can't open file py.sh

py.sh包括在S*.sh並應該執行。所有文件都設置爲超級用戶,所有用戶都有權讀取,寫入和執行。當我手動啓動S*.sh時,它工作正常。

這是寫在S*.sh代碼:

#!/bin/sh 
x=1 
while [ $x -le 14400 ] 
do 
DD=$(date +%d) 
MM=$(date +%m) 
date >> /home/lasbr/Dokumente/"bmv"$DD$MM".log" 
sh /etc/init.d/py.sh & 
sleep 60s 
x=$(($x + 1)) 
done 

也許,因爲它的工作原理手動它關係到啓動的順序。也許Ubuntu試圖在需要運行幾個服務來處理腳本之前啓動腳本?

+0

您沒有分享大量信息,而且您的問題很混亂。你是否可能不帶絕對路徑調用y.sh,PATH環境變量不包含路徑? – jsfan

+0

你需要哪些信息?我使用絕對路徑調用y.sh(/etc/init.d/y.sh) – lasbr

+0

發佈腳本減去所有敏感信息。 – jsfan

回答

1

檢查您的包含。您必須提供包含的完整路徑,否則如果您只放置腳本的名稱,則會假定該文件應位於當前工作目錄中,該目錄可能與腳本的位置不同。

+1

很好的答案,但它不完整,因爲它是。通常你應該使用評論,但是由於缺乏聲譽,你應該嘗試回答一些更明確的問題。 – kenorb

+0

包含什麼意思?沒有路徑名(/etc/init.d/py.sh)嗎? – lasbr

0

直接在/etc/rc.local處直接調用該腳本在開始時運行它。

/etc/y.sh &>/dev/null & 
0

現在我發現,爲什麼系統在啓動時掛起。 Can't open py.sh不是主要問題。問題是while循環,因爲腳本沒有在後臺啓動。系統將等待,直到while -loop完成(需要10天),然後繼續引導。

Py.sh訪問設備(電池計算機),並且只能使用正在運行的系統訪問此設備。當然,它說py.sh找不到,但同時我只是從py.sh代碼中,並認識到系統需要運行來訪問設備。

現在所有這些的結果是一個問題:如何在啓動時在背景中啓動一個shell腳本?