Environment-Variables
如何像在啟動時執行一樣執行腳本?
我在啟動時執行了一個腳本,但是它給了我在日誌文件中看到的錯誤。當我手動執行它時,它執行良好 - 可能環境已更改。
有沒有辦法在啟動時執行而不重新啟動的條件下執行這樣的腳本?
腳本位於
/etc/init.d
帶有符號連結的/etc/rc5.d/S97mounter.sh
.
你可以以root身份執行
env - scriptname
這將在執行腳本之前清除您的環境,但是,它也會保留您的
shell
. 要清除環境並將 shell 設置為sh
,請執行以下操作:
env -i /bin/sh -c scriptname
然後,這將使用
/bin/sh
. 但是,這不會完全模擬引導環境,因為這不包括當時可能未執行的其他服務。我發現了一個類似的問題來模擬 crontab 環境,並且mmccoo發布了一個非常有用的解決方案。
使用它,您可以在腳本中執行它並重新啟動主機,然後使用環境文件載入您的環境:
引導腳本的一部分:
env > /var/tmp/bootenv
然後在正常執行時設置相同的啟動環境,執行以下操作:
env - `cat /var/tmp/bootenv` /bin/sh -c scriptname