如何在不使用crontab的情況下連續運行腳本。腳本應該在我註銷後運行,如果在系統重新啓動後沒有啓動,腳本可以接受。我是unix的新手。如何在不使用crontab的情況下連續運行後臺腳本。
回答
使用&運營商在後臺啓動它。
./abc.sh &這將繼續,直到(一)執行完畢或者(b)你殺它或(c)系統重新啓動
除了在後臺啓動它,如上所述,您可能需要使用'nohup'。這意味着即使關閉終端,它也會繼續運行。
nohup的./abc.sh &
if [ "x$1" != "x--" ]; then
$0 -- 1> /dev/null 2> /dev/null &
exit 0
fi
這是你如何可以運行一個腳本作爲守護。首先你的劇本(父親)會創建一個自己的副本(一個孩子),所以它被認爲是父親的一個過程。然後當孩子還在跑時父親會自殺。猜猜你做這樣的事情會發生什麼?孩子被附加到init進程。所以即使你註銷,腳本仍然會運行。 您甚至可以在沒有「&」運算符的情況下啓動它,因爲您啓動了在一毫秒後死亡的父親。
您可以像在計算機上運行的任何程序一樣再次對其進行控制。
順便說一句,它不是一個真正的「守護進程」程序,它只是一種模擬。如果你想在登錄時啓動它,你就不能在啓動時啓動它(非常簡單地說是BOOT而不是登錄),很簡單,它就在你的.xinitrc
這個解決方案的主要優點是你的腳本不依賴於任何其他程序,比如「nohup」,我認爲這真的很糟糕。 PS:如果你想了解一些關於上述命令的信息,只需問我一下。這只是一個「參數」的事情。
嘿,你可以請讓我知道這是如何工作的。實際上,我有一個小腳本,我需要連續檢查某些條件,只要條件滿足,程序應該執行。這可以做到嗎?我想過使用crontab腳本每5分鐘左右運行一次,但現在我希望不用crontab來完成 – Atul
如果它不是一個連續運行的腳本,那麼應該使用cron。 以下是我在開始寫作時給出的條件的解釋: 如果程序的第一個參數不是「 - 」,那麼:運行帶有參數「 - 」的相同腳本,並將錯誤重定向到其他地方(/dev/null是垃圾文件夾)以及標準輸出。 然後退出。 在那裏你可以做一段時間[真]讓它無限期地運行。在你的while循環中,只需要添加一個你需要的時間(5分鐘)的睡眠函數,然後它就是一個常規的bash腳本。 這是一個例子:http://pastebin.com/us76BRKj – Depado
所以雖然runing有沒有必要用nohup來運行這個? – Atul
正如其他人之前提到的那樣,您需要使用nohup來防止進程獲得掛斷信號(因此無法啓動)。
但是,如果你在開始與後臺啓動過程中,由於
prompt> nohup process &
有沒有讓你進入可能需要得到流程開始時的任何數據的缺點。這可能是密碼/憑證或過程需要的其他輸入。
如果你有這個要求,最後在沒有「&」的情況下啓動它,輸入你的輸入,然後點擊Ctrl-Z讓進程進入休眠狀態。要將其發送到後臺,請在提示符處輸入「bg」並按Enter鍵。
prompt> nohup process
Enter password:
(Now press Ctrl-Z)
[1]+ Stopped process
prompt> bg
[1]+ process &
現在,即使您註銷,進程仍將繼續在後臺運行。
或者,如果您使用的是bash或zsh,如果您沒有使用nohup開始啓動進程,並且殺死它並重新啓動不是一個選項,那麼您可以使用內置的disown命令。首先暫停和背景的過程。然後停止掛斷信號到達它。
prompt> process
Enter password:
(Now press Ctrl-Z)
[1]+ Stopped process
prompt> bg
[1]+ process &
prompt> disown -h
注意:如果您有其它後臺任務運行時,您需要提供JOBSPEC只認這個特定的工作。
prompt> disown -h %1
相反的[1]如果你想看到的[2]當你停下來,發送過程中的背景,你會說disown -h %2
來代替。
+1關於如何在事後使用nohup ..我不知道這一點。 – Benj
謝謝。我還添加了一個解釋,用於防止SIGHUP從首先不是以nohup開始的進程發送。 –
- 1. 如何在不使用crontab的情況下在後臺連續運行腳本
- 2. 在Crontab中連續運行python腳本
- 3. 在不使用屏幕的情況下在後臺運行ruby腳本
- 4. 如何在不使用./script.py的情況下運行python腳本?
- 5. 如何在這種情況下繼續執行後臺進程
- 6. 如何在不阻塞的情況下運行腳本?
- 7. 如何在不重定向的情況下運行PHP腳本?
- 8. 如何在不使用命令行的情況下運行Perl腳本?
- 9. 如何在不運行腳本的情況下檢查bash腳本?
- 10. 如何在不運行腳本的情況下調試Python代碼(使用Eclipse)?
- 11. 如何在不首先運行函數腳本的情況下使用函數?
- 12. 如何在不使用「sh」命令的情況下運行shell腳本?
- 13. 如何在不使用'go'的情況下運行這個sql腳本?
- 14. 如何在沒有Windows控制檯出現的情況下運行Python腳本
- 15. 如何連續運行應用程序而不掛在後臺
- 16. 如何在不刷新頁面的情況下連續運行jsp文件
- 17. 多個腳本如何在沒有webworkers的情況下運行?
- 18. 如何在沒有文件的情況下運行node.js腳本?
- 19. 如何在頁面爲index.html的情況下運行jquery腳本
- 20. 在不使用spawn = true的情況下在後臺運行Ant目標
- 21. 在腳本B中運行腳本A,然後在不退出腳本的情況下退出腳本B
- 22. 如何在不從腳本複製到控制檯的情況下運行python腳本?
- 23. 如何在後臺運行php腳本?
- 24. 如何讓腳本在後臺運行
- 25. 如何使用Sidekiq運行連續的後臺作業?
- 26. 從後臺啓動連續運行Bash Shell腳本。 (Raspberry Pi)
- 27. 如何在不顯示窗口的情況下將PowerShell腳本作爲後臺任務運行?
- 28. 如何在不顯示Python應用程序的情況下運行Python腳本?
- 29. 如何在不使用GUI的情況下編寫Jmeter腳本?
- 30. 如何讓腳本在不制動的情況下使用setAttribute'style'CSP
這是不對的,如果你註銷這將停止,你可以使用'nohup'來防止這個,但我更喜歡屏幕。 – Benj