2013-02-22 42 views
-2

背景創建在啓動時運行

我需要創建在啓動時運行一個python腳本python腳本。問題是這個腳本必須是平臺獨立的,因爲它將被用在不同的操作系統上。它需要是自動設置的,因爲它將由用戶運行,所以我將無法在每臺單獨的機器上設置任務計劃程序。

問題

  1. 如何找出哪個OS計算機是在Python上運行?
  2. 如何使在啓動時運行的腳本(在Linux,Mac OSX,Windows中)
+4

那麼你的問題是什麼? – wRAR 2013-02-22 00:49:44

+0

[此帖](http://nedbatchelder.com/blog/201001/running_code_at_python_startup.html)可能適合您的需要。 – Octipi 2013-02-22 00:53:31

+0

@WinRAR我剛剛添加了我認爲可能是真正的問題。希望編輯通過。 – xxmbabanexx 2013-02-22 00:55:16

回答

4

問題1很簡單:

如何找出哪個OS計算機是在Python上運行?

這是sys.platform

​​

第二部分也容易,但不是在路上,你想聽到的:

如何使在啓動時運行的腳本(Linux操作系統, Mac OSX,Windows)

你不知道。不在腳本內。你使用某種安裝程序(或包postflight腳本,或其他)。

添加啓動時運行的東西需要root/admin權限。您的腳本(希望)沒有運行這些權利。因此,它不能這樣做。是的,可以通過各種方式提升權限,但在啓動時最終運行的腳本中,您幾乎可以確定這不是您想要執行的操作。

那麼,你的安裝程序是如何做到的呢?

OS X:您需要創建一個啓動守護進程,並附帶啓動的plist。這在Creating Launch Daemons and Agents中描述。如果你沒有閱讀過這篇文章,你不應該試圖做到這一點,而且你已經知道如果你閱讀過這篇文章,所以沒有什麼別的可以說的了。

Windows:官方的方式在Run and RunOnce Registry Keys中有解釋。同樣,如果不閱讀本文,則不應該這樣做,在閱讀文章之後,很明顯,除了兩件事:首先,在四個鍵中,它是HKLM Run鍵。其次,在現代Windows中,這並不實際在啓動時運行,而是在啓動後第一次登錄;如果這是不可接受的,請考慮改爲RunServices

Linux:什麼是安裝程序?你是否期待有一種方法可以爲每個發行家族做到這一點? This primer爲您提供了所需的大部分信息,除了確切知道您想要在每個發行版上執行什麼操作。一般來說,如果你只想讓你的腳本運行一次並退出,並且有一個rc.local.d,你只需要在那裏放一個鏈接。否則,您需要創建一個rc.d腳本,將其安裝到正確的位置,然後運行正確的chkconfig命令,或者您需要編輯rc.local以運行腳本。但最簡單的是:只需在INSTALL文件中放入英文文字,告訴人們這樣做。最終,當有人決定爲Ubuntu製作DEB或爲Redhat製作RPM時,他們會爲他們的發行版做正確的事情,並向您提交補丁或單獨維護。

+1

好吧,它不會像我想象的那麼容易,但至少我知道要看什麼方向。謝謝 – taylor 2013-02-22 05:20:24