當前位置:首頁 » 操作系統 » linux設置自啟動

linux設置自啟動

發布時間: 2022-02-26 20:00:23

linux如何設置程序開機啟動後台運行

有些時候,我們需要在終端啟動一個程序,並使之運行——但是如果關閉終端,那麼這個程序也就隨著關閉了。那麼有沒有什麼方法在關閉終端後,讓已經從這個終端啟動的程序繼續運行呢?有以下方法

1.讓linux忽略終端的hung up 信號,不關閉進程;

2.讓此進程變為終端的非子進程。

方法一:

在終端輸入命令:

# ./pso > pso.file 2>&1 &

解釋:將pso直接放在後台運行,並把終端輸出存放在當前目錄下的pso.file文件中。

當客戶端關機後重新登陸伺服器後,直接查看pso.file文件就可看執行結果(命

令:#cat pso.file )。

或者 在終端輸入命令:

# nohup ./pso > pso.file 2>&1 &

解釋:nohup就是不掛起的意思,將pso直接放在後台運行,並把終端輸出存放在當前

目錄下的pso.file文件中。當客戶端關機後重新登陸伺服器後,直接查看pso.file

文件就可看執行結果(命令:#cat pso.file )。

方法二:

實現方案就是nohup命令。

例如要啟動jboss,可以nohup ./run.sh &。這樣就可以了,結尾的「&」符號表示後台啟動jboss,從而不影響繼續運行其他命令。

但這樣有一個問題,nohup命令雖然可以讓linux「放過」這個進程,但是nohup會同時把進程的控制台輸出重定向到nohup.txt下(默認是這個文件),當然可以重定向為其他的文件,但是輸出總會有的。

如果jboss運行很長時間,而且如果有很多控制台輸出的話,nohup.txt文件就會變的很大很大。

通常項目中的日誌都會輸出到特定的日誌文件或者輸出到 資料庫 中,也就是說控制台的輸出對於程序的意義不大,那麼可不可以拋棄掉這些輸出呢?答案是肯定的。

這里講解一下linux的重定向(注意,是linux的重定向,不是針對nohup)。

0、1和2分別表示標准輸入、標准輸出和標准錯誤信息輸出,可以用來指定需要重定向的標准輸入或輸出。

在一般使用時,默認的是標准輸出,既1.當我們需要特殊用途時,可以使用其他標號。例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標准輸出還是在屏幕上,但是錯誤信息會輸出到log文件中。

另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標准輸出。

Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。

結合nohup,我們可以這樣 nohup ./run.sh >/dev/null &

這是最簡單的一種方式,既保證了程序能夠一直後台執行,又能保證不會產生太大的nohup.txt文件。

方法三:

利用的linux的一個機制,讓程序在subshell中執行,方法很簡單,將命令用括弧() 括起來即可。

ps -ef | grep test

可以看到run.sh的父進程為1,不是當前終端了,這樣就能忽略hung up信號。

當然linux還可以動態的讓程序後台運行或不被hung up 信號關閉,例如disown命令,setid命令等。


方法四:

如果是使用Ubuntu的話,你可以利用CTRL+ALT+T組合鍵打開終端。當然你也可以使用超級鍵(Windows鍵)打開Dash,搜索「TERM」,然後點擊「Term」圖標來打開終端窗口。
對於其他的桌面環境來說,例如XFCE、KDE、LXDE、Cinnamon以及MATE,你可以在菜單中找到終端。有些環境會在停靠欄或者面板上麵包含終端圖標。
通常情況下,你可以在終端裡面直接輸入應用程序名來啟動一個應用程序。比如說,你可以通過輸入「firefox」來啟動Firefox。
在終端啟動應用程序的好處是,你可以包含一些額外的參數。
例如,你可以通過下列命令來打開一個Firefox瀏覽窗口,然後利用默認的搜索引擎搜索相關信息:
firefox -search "linux.cn"

你可能會注意到,如果你啟動Firefox,程序打開以後,回到了終端窗口控制,這就意味著你可以繼續在終端進行工作。
通常情況下,如果你在終端啟動了應用程序,控制會切換到新啟動的應用程序,只有程序被關閉以後才會重新切換到終端控制。這是因為你在前台啟動了這個程序。
如果要在Linux終端打開應用程序並且返回終端控制,那麼你需要將應用程序啟動為後台進程。
和下面所列的命令一樣,我們可以通過增加一個(&)符號,將應用程序在後台啟動。
libreoffice &

譯者註:如果需要加參數的話,記得把&符號放在最後。
譯者註:一般情況下,關閉終端時,在這個終端啟動的後台程序也會被終止,要使終端關閉以後,後台程序依然保持執行可以使用下列命令
nohup command [arg...] &
如果應用程序目錄沒有安裝在PATH變數包含的目錄裡面的話,我們就沒有辦法直接通過應用程序名來啟動程序,必須輸入應用程序的整個路徑來啟動它。
/path/to/yourprogram &

如果你不確定程序輸入哪個Linux目錄結構的話,可以使用find或者location命令來定位它。
可以輸入下列符號來找到一個文件:
find /path/to/start/from -name programname

例如,你可以輸入下列命令來找到Firefox:
find / -name firefox

命令運行的結果會嗖的一下輸出一大堆,別擔心,你也可以通過less或者more來進行分頁查看。
find / -name firefox | more find / -name firefox | less

當find命令查找到沒有許可權訪問文件夾時,會報出一條拒絕訪問錯誤,
你可以通過sudo命令來提示許可權。當然,如果你沒有安裝sudo的話,就只能切換到一個擁有許可權的用戶了。
sudo find / -name firefox | more

如果你知道你要查找的文件在你的當前目錄結構中,那麼你可以使用點來代替斜杠:
sudo find . -name firefox | more

你可能需要sudo來提升許可權,也可能根本就不需要,如果這個文件在你的主目錄裡面,那麼就不需要使用sudo。
有些應用程序則必須要提升許可權才能運行,否則你就會得到一大堆拒絕訪問錯誤,除非你使用一個具有許可權的用戶或者使用sudo提升許可權。
這里有個小竅門。如果你運行了一個程序,但是它需要提升許可權來操作,輸入下面命令試試:
sudo !!

方法五:
在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令後可以不追加空格)
打開gnome-terminal,執行如下命令:
delectate@delectate:~$ totem &[1] 8510delectate@delectate:~$ 有幾點需要注意:
已經啟動的程序依然attach於當前pts,只有當前終端模擬器關閉(使用exit命令退出),進程自動被tty繼承。delectate@delectate:~$ ps -e | grep totem //程序已被以totem & 形式啟動,當前附在pts0上8819 pts/0 00:00:00 totemdelectate@delectate:~$ ps -e | grep totem //pts0的模擬終端被exit命令關閉,totem自動附在tty8819 ? 00:00:00 totemdelectate@delectate:~$
具有debug輸出的進程,需要按enter鍵進行中斷當前debug輸出。但是如果程序持續進行printf,你將無法輸入任何命令。delectate@delectate:~$ vlc &[1] 8850delectate@delectate:~$ VLC media player 1.0.6 Goldeneye[0x8b998b0] main libvlc: Running vlc with the default interface. Use 『cvlc』 to use vlc without interface. //enter presseddelectate@delectate:~$ //show a clean terminal now** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL』 failed //仍然在輸出數據…… //關閉程序[1]+ Done vlcdelectate@delectate:~$
你無法記錄程序的debug輸出結果。
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
使用nohup命令:
nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續執行)
但是當你嘗試使用命令:
1nohup command
時候卻會遇到不大不小的麻煩……
delectate@delectate:~$ nohup vlcnohup: ignoring input and appending output to `nohup.out』
是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。
所以你需要和第一個方法混用,即
nohupcommand {option}&
混用後,它會自動把你執行的命令輸出結果記錄到許可權為-rw——-,名為nohup.out的文件中。
但是你仍然需要
delectate@delectate:~$ nohup vlc &[1] 9045delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out』 //在這里按一下回車或以ctrl+c以 //show a clean terminal delectate@delectate:~$
與使用 「&」 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。
如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:
nohupcommand {option} > myout.file 2>&1 &
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
其他相關命令:
jobs:查看當前有多少在後台運行的命令
fg:將後台中的命令調至前台繼續運行。如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
bg:將一個在後台暫停的命令,變成繼續執行。如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
殺死進程
殺死已經啟動的程序和普通方式一樣:
pkill -9 name
killall name
kill pid

命令應用:
linux伺服器掛機下載;啟動相關服務;linux伺服器啟動進程(尤其是ssh登錄)
我就曾經用 1nohup aria2c -i downloadlist -m 0 -j 1 &

❷ linux開機自啟動在哪裡設置

chkconfig命令設置

❸ linux 怎麼把服務設置開機啟動

如果是已經安裝好的服務,需要使用chkconfig設置開機啟動。以Mysql為例,因各發行版不同,以及安裝方式的差異,伺服器的啟動腳本可能會有細微不同,現假設服務腳本文件是/etc/init.d/mysqld。
首先查看服務是否正確注冊
$ service --status-all | grep mysqld | grep -v 'grep'如果有含有mysqld文字的一行返回,則代表已正確注冊;若沒有需執行如下命令:
$ sudo chkconfig add mysqld
第二步設置開機自啟動
$ sudo chkconfig mysqld on
附:查看所有服務及其運行級別的命令
$ chkconfig --list

❹ Linux如何設置服務自啟動

  • 1.服務概述 在linux操作系統下,經常需要創建一些服務,這些服務被做成shell腳本,這些服務需要在系統啟動的時候自動啟動,關閉的時候自動關閉。 將需要自動啟動的腳本/etc/rc.d/init.d目錄下,然後用命令chkconfig --add filename將自動注冊開...

❺ Linux系統如何將某一程序設置為開機自啟動,linux 小白求詳細講解......

Linux開機啟動程序詳解

我們假設大家已經熟悉其它操作系統的引導過程,了解硬體的自檢引導步驟,就只從Linux操作系統的引導載入程序(對個人電腦而言通常是LILO)開始,介紹Linux開機引導的步驟。

載入內核
LILO啟動之後,如果你選擇了Linux作為准備引導的操作系統,第一個被載入的東西就是內核。請記住此時的計算機內存中還不存在任何操作系統,PC(因為它們天然的設計缺陷)也還沒有辦法存取機器上全部的內存。因此,內核就必須完整地載入到可用RAM的第一個兆位元組之內。為了實現這個目的,內核是被壓縮了的。這個文件的頭部包含著必要的代碼,先設置CPU進入安全模式(以此解除內存限制),再對內核的剩餘部分進行解壓縮。

執行內核
內核在內存中解壓縮之後,就可以開始運行了。此時的內核只知道它本身內建的各種功能,也就是說被編譯為模塊的內核部分還不能使用。最基本的是,內核必須有足夠的代碼設置自己的虛擬內存子系統和根文件系統(通常就是ext2文件系統)。一旦內核啟動運行,對硬體的檢測就會決定需要對哪些設備驅動程序進行初始化。從這里開始,內核就能夠掛裝根文件系統(這個過程類似於Windows識別並存取C盤的過程)。內核掛裝了根文件系統之後,將啟動並運行一個叫做init的程序。

注意:在這里我們故意略去了Linux內核啟動的許多細節,這些細節只有內核開發人員才感興趣。如果你好奇的話,可以訪問http://www.redhat.com:8080地址處的"Kernel Hackers Guide"。
init進程
init進程是非內核進程中第一個被啟動運行的,因此它的進程編號PID的值總是1。init讀它的配置文件/etc/inittab,決定需要啟動的運行級別(Runlevel)。從根本上說,運行級別規定了整個系統的行為,每個級別(分別由0到6的整數表示)滿足特定的目的。如果定義了initdefault級別,這個值就直接被選中,否則需要由用戶輸入一個代表運行級別的數值。
輸入代表運行級別的數字之後,init根據/etc/inittab文件中的定義執行一個命令腳本程序。預設的運行級別取決於安裝階段對登錄程序的選擇:是使用基於文本的,還是使用基於X-Window的登錄程序。
rc命令腳本程序我們已經知道,當運行級別發生改變時,將由/etc/inittab文件定義需要運行哪一個命令腳本程序。這些命令腳本程序負責啟動或者停止該運行級別特定的各種服務。由於需要管理的服務數量很多,因此需要使用rc命令腳本程序。其中,最主要的一個是/etc/rc.d/rc,它負責為每一個運行級別按照正確的順序調用相應的命令腳本程序。我們可以想像,這樣一個命令腳本程序很容易變得難以控制!為了防止這類事件的發生,需要使用精心設計的方案。

對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應的下級目錄。這些運行級別的下級子目錄的命名方法是rcX.d,其中的X就是代表運行級別的數字。比如說,運行級別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。在各個運行級別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接,但是,這些符號鏈接並不使用命令腳本程序在/etc/rc.d/init.d子目錄中原來的名字。如果命令腳本程序是用來啟動一個服務的,其符號鏈接的名字就以字母S打頭;如果命令腳本程序是用來關閉一個服務的,其符號鏈接的名字就以字母K打頭。
許多情況下,這些命令腳本程序的執行順序都很重要。如果沒有先配置網路介面,就沒有辦法使用DNS服務解析主機名!為了安排它們的執行順序,在字母S或者K的後面緊跟著一個兩位數字,數值小的在數值大的前面執行。比如:/etc/rc.d/rc3.d/S50inet就會在/etc/rc.d/rc3.d/S55named之前執行(S50inet配置網路設置,55named啟動DNS伺服器)。存放在/etc/rc.d/init.d子目錄中的、被符號鏈接上的命令腳本程序是真正的實幹家,是它們完成了啟動或者停止各種服務的操作過程。當/etc/rc.d/rc運行通過每個特定的運行級別子目錄的時候,它會根據數字的順序依次調用各個命令腳本程序執行。它先運行以字母K打頭的命令腳本程序,然後再運行以字母S打頭的命令腳本程序。對以字母K打頭的命令腳本程序來說,會傳遞Stop參數;類似地對以字母S打頭的命令腳本程序來說,會傳遞Start參數。編寫自己的rc命令腳本在維護Linux系統運轉的日子裡,肯定會遇到需要系統管理員對開機或者關機命令腳
本進行修改的情況。

有兩種方法可以用來實現修改的目的:
●如果所做的修改只在引導開機的時候起作用,並且改動不大的話,可以考慮簡單地編輯一下/etc/rc.d/rc.local腳本。這個命令腳本程序是在引導過程的最後一步被執行的。
●如果所做的修改比較細致,或者還要求關閉進程使之明確地停止運行,則需要在/etc/rc.d/init.d子目錄中添加一個命令腳本程序。這個命令腳本程序必須可以接受Start和Stop參數並完成相應的操作。
第一種方法,編輯/etc/rc.d/rc.local腳本,當然是兩種方法中比較簡單的。如果想在這個命令腳本程序中添加內容,只需要使用喜歡的編輯器程序打開它,再把打算執行的命令附加到文件的末尾就可以了。這對一兩行的修改來說的確很便利。

如果確實需要使用一個命令腳本程序,這時必須選擇第二個方法。編寫一個rc命令腳本程序的過程並不像想像中那麼困難。我們下面就給出一個例子,看看它是怎樣實現的(順便說一句,你可以把我們的例子當作範本,按照自己的需要進行修改和添加)。
假設你打算每隔60分鍾調用一個特殊的程序來彈出一條消息,提醒自己需要從鍵盤前面離開休息一會兒,命令腳本程序將包括下面幾個部分:
●關於這個命令腳本程序功能的說明(這樣就不會在一年之後忘記它);
●在試圖運行它之前驗證這個命令腳本程序確實存在;
●接受start和stop參數並執行要求的動作。

參數給定後,我們就可以編寫命令的腳本程序。這個程序很簡單,大家可以自己編寫一下,我在這里就不給出了。
編寫好新的命令腳本程序之後,再從相關的運行級別子目錄中加上必要的符號鏈接,來控制這個命令腳本程序的啟動或者停止。在我的印象中,只想讓它在運行級別3或者運行級別5中啟動,原因是我認為只有這兩個運行級別才是日常工作的地方。最後,希望這個命令腳本程序在進入運行級別6(重啟動)的時候被關閉。

激活或者禁止服務項目有的時候會發現,在引導的時候並不需要某個特定的服務被啟動。如果你正在考慮使用Linux替換Windows NT的文件和列印伺服器,就更是如此。我們已經知道,在特定的運行級別子目錄中給符號鏈接改個名稱,就可以讓該服務不被啟動,如把其名稱的第一個字母由S改為K。一旦熟練掌握了命令行和符號鏈接,就會發現這是激活或者禁止服務的最快辦法。

在學習這個改名方法的時候,可能會覺得圖形化的操作界面ksysv比較容易掌握。雖然它原來是設計使用在KDE環境里的,但在Red HatLinux 7.2下預設安裝的GNOME環境里也運行得很好。如果想啟動它,只需簡單地打開一個xterm窗口,並輸入ksysv命令就可以了。屏幕上會出現一個窗口,其中列出了能夠修改的全部參數,需要時還包括在線幫助。警告:如果是在一個現實中的系統上學習本文的知識,要多多運用常識。當試著對啟動腳本程序進行修改的時候,要記住所做的修改可能會造成你的系統不能正常工作,而且無法採用重啟動的方法恢復。不要在正常運轉的系統上實驗新的設置,對你准備修改的文件要全部進行備份。最重要的是,在手邊要准備一張引導盤以防不測。

❻ linux怎麼添加開機啟動程序

方法1:.利用ntsysv命令進行設置,利用root登陸
終端命令下輸入ntsysv 回車;如下圖

在這個界面上進行操作即可,簡要的操作說明:
括弧中(*)代表默認開機啟動,否則不會在開機的時候啟動;
按鈕功能:
上下鍵:可以在各個服務之間移動
空格鍵:設置啟動還是不啟動,*進行設置即可
Tab鍵:在方框、ok、cancle之間進行切換
F1鍵:進行幫助文檔,如下圖:

方法2:利用命令行chkconfig命令進行設置
簡要說明一下chkconfig 命令的使用方法
Chkconfig
--list:將目前的各項服務狀態欄顯示出來
--level:設置某個服務在該LEVEL下啟動或者關閉

單獨查看某一服務是否開機啟動的命令 :chkconfig --list 服務名
單獨開啟某一服務的命令 ;chkconfig 服務名 on
單獨關閉某一服務的命令;chkconfig 服務名 off
查看某一服務的狀態:/etc/intd.d/服務名 status
設置完成之後,重啟一下即可

方法3:用戶自定義開機程序(/etc/rc.d/rc.local)
用戶可以將自己書寫的shell script文件放入其中,或者資料庫的自動,was等等
比如讓資料庫開機自啟:
vi /etc/rc.local添加以下內容:
su - oracle -c 'lsnrctl start' //讓監聽啟動起來
su - oracle -c 'dbstart' //讓資料庫啟動起來

❼ linux 怎樣添加開機自動啟動程序

這是一個最簡單的方法,編輯「/etc/rc.local」,把啟動程序的shell命令輸入進去即可(要輸入命令的全路徑),類似於windows下的「啟動」。
使用命令 vi /etc/rc.local
然後在文件最後一行添加要執行程序的全路徑。
例如,每次開機時要執行一個haha.sh,這個腳本放在/opt下面,那就可以在「/etc/rc.local」中加一行「/opt/./haha.sh」,或者兩行「cd /opt」和「./haha.sh」。
二、crontab(類似於windows的任務計劃服務)
通過crontab可以設定程序的執行時間表,例如讓程序在每天的8點,或者每個星期一的10點執行一次。
crontab -l 列出時間表;
crontab -e編輯時間表;
crontab -d刪除時間表;
「-l」沒什麼可說的,就是一個查看而已;
「-e」是編輯,和vi沒什麼差別(其實就是用vi編輯一個特定文件);
「-d」基本不用,因為它把該用戶所有的時間表都刪除了,一般都是用「-e」編輯把不要了的時間表逐行刪除;

熱點內容
qq郵箱上傳不了 發布:2024-09-22 07:54:56 瀏覽:863
python字元轉ascii 發布:2024-09-22 07:54:51 瀏覽:642
idanmu解壓碼 發布:2024-09-22 07:48:26 瀏覽:985
四節課編程 發布:2024-09-22 07:19:11 瀏覽:297
安卓java模擬器apk 發布:2024-09-22 07:02:04 瀏覽:422
奈曼的扶貧密碼是多少 發布:2024-09-22 07:01:13 瀏覽:823
編程工資高 發布:2024-09-22 06:39:56 瀏覽:490
小票商品編程 發布:2024-09-22 06:39:12 瀏覽:371
電池存儲倉庫 發布:2024-09-22 06:08:21 瀏覽:368
伺服器添加多個ip 發布:2024-09-22 05:30:49 瀏覽:632