2012-12-03 338 views
2

我使用的是Debian,我有一個python腳本,我希望在rc.local期間運行它,以便在啓動時運行。我已經有了一個可以運行和終止的測試文件。將Python腳本作爲啓動腳本運行時結束?

問題是這個文件最終應該無限期地使用Scheduler運行。它的工作是進行串行讀取,對這些讀取進行少量處理,並插入到MySQL數據庫中。不過,如果需要進行更改,我無法取消腳本以獲得登錄提示,因爲我無法使用Ctrl + C(^ C)提前終止測試腳本,所以我很緊張。

我的希望是有一些命令,我​​只是失蹤,將實現這一點。是否有另一個關鍵命令,我會錯過,將終止python腳本並結束rc.local?

謝謝。

編輯:另一個可能的解決方案,這將有助於我在這裏是如果有一種方法在啓動時在後臺啓動一個python腳本。所以它會啓動腳本,然後允許登錄,同時繼續在後臺運行腳本。

我開始認爲這是不可能實現的,所以其他建議來完成類似於我所要做的事情也會有所幫助。

再次感謝。

+0

Ctrl + C應該正常終止一個Python腳本,除非你捕捉到所有異常或類似的東西(因爲Python將Ctrl + C解釋爲一個'InterruptException')。 –

+0

我可以在啓動後或通過空閒模式從shell中運行腳本時終止腳本。在啓動時通過/etc/rc.local運行它時,我無法終止腳本。當我按下Ctrl + C時,它會在shell中顯示一個^ C,但不會終止。 –

回答

1

似乎這只是我的一個愚蠢的錯誤。

我意識到這一點的全部意義在於允許python腳本在啓動過程中作爲後臺進程運行,所以我在腳本調用結尾處添加了「&」,就像從shell和中提琴運行時那樣我可以通過按「Enter」進入密碼提示。

我想把這個答案放在這裏,以防萬一這可能是可怕的錯誤,但它完成了我所尋找的東西。

0

Making scripts run at boot time with Debian

  1. 把你的腳本/etc/init.d/。因此,如果您的腳本位於名爲my_script的文件中,它應該位於/etc/init.d/my_script

  2. 以root身份運行update-rc.d my_script defaults

  3. 不要忘記讓腳本可執行幷包含shebang。這意味着腳本的第一行應該是#!/usr/bin/python

+0

謝謝。我更喜歡將腳本調用添加到/etc/rc.local,以便它是引導過程中最後一次調用的東西。 –