『壹』 設置linux開機自啟動服務的常見方法有哪些
到底哪些服務適合開機自啟動?是很多Linux運維在工作中會遇到的問題。其實,只要不影響系統及服務的運行,開多開少也沒關系。Linux運維人員要明確每項服務的作用,不用的就不安裝,默認安裝時則不開機自啟動。設置開機自啟動服務的常見方法有哪些?
1)執行命令,然後手動選擇處理的方法
方法1:執行ntsysv命令,然後在彈出窗口進行設置。
方法2:執行setup命令→system service,然後在彈出窗口中進行設置。
2)通過一行命令或She11腳本設置
在快速設置前,先查看默認情況下Linux系統開啟的服務有哪些。如果工作在文本模式3級別,那就只需要查找3級別上開啟的服務即可。了解了系統在3級別上開啟的服務後,就可以通過命令快速實現配置了。以下便是幾種通過命令或腳本設置開機自啟動的方法。
1:先全關閉,再開啟需要保留的。
2:一條命令搞定,Shell循環實現。默認情況下需要保留的服務都已開啟,因此,關閉3級別文本模式下已開啟但又不需要的服務就好了。
3:不要Shell循環語句也一條命令搞定。默認情況下要保留的服務都已開啟,因此,關閉3級別文本模式下已開啟但又不需要的服務就好了,不用循環結構而是利用命令拼出所有要處理的命令字元串,通過bash將其當作命令執行。
那麼到底將哪些服務作為開機自啟動服務合適?但作為一名優秀的Linux系統管理員,應該遵守最小化原則,盡量不安裝不使用的軟體、不開啟不需要的服務;這樣系統的性能和安全性才是最好的。
『貳』 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怎麼添加開機啟動程序
方法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開機自啟
開機啟動讀取的所有文件檢查一次,然後把登錄用戶讀取的文件所有都檢查一次。你這個任務可能不只是寫在了rc.local,rc.local僅僅是開機啟動的最常用修改文件,開機啟動會讀好幾個文件的,對應的順序也不一樣
『伍』 linux c程序開機自啟
第一種方式:在/etc/rc.local文件中加入啟動命令
這種方式適合linux用戶手動配置自啟動程序。
第二種方式:在/etc/rc[0-6].d/目錄建立軟鏈接,軟鏈接指向/etc/init.d/目錄下的控制腳本。命令詳解請查看」Linux命令大全「。
『陸』 如何使Linux系統上的程序開機後自動運行
閱讀之前建議先看一下附圖。本文中假設inittab中設置的init tree為:/etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d /etc/rc.d/rc6.d /etc/rc.d/init.d1. 關於Linux的啟動init是所有進程之父 init讀取/etc/inittab,執行rc.sysinit腳本 (注意文件名是不一定的,有些unix甚至會將語句直接寫在inittab中) rc.sysinit腳本作了很多工作: init $PATH config network start swap function set hostname check root file system, repair if needed check root space ....rc.sysinit根據inittab執行rc?.d腳本 Linux是多用戶系統,getty是多用戶與單用戶的分水嶺 在getty之前運行的是系統腳本2. 關於rc.d所有啟動腳本放置在 /etc/rc.d/init.d下 rc? number決定執行的順序3. 啟動腳本示例這是一個用來啟動httpd的 /etc/rc.d/init.d/apache 腳本: 代碼: #!/bin/bash source /etc/sysconfig/rc source $rc_functions case "" in start) echo "Starting Apache daemon..." /usr/local/apache2/bin/apachectl -k start evaluate_retval ;; stop) echo "Stopping Apache daemon..." /usr/local/apache2/bin/apachectl -k stop evaluate_retval ;; restart) echo "Restarting Apache daemon..." /usr/local/apache2/bin/apachectl -k restart evaluate_retval ;; status) statusproc /usr/local/apache2/bin/httpd ;; *) echo "Usage: " exit 1 ;;esac可以看出他接受start,stop,restart,status參數
『柒』 linux怎麼讓程序開機自動啟動
1. 開機啟動時自動運行程序
Linux載入後, 它將初始化硬體和設備驅動, 然後運行第一個進程init。init根據配置文件繼續引導過程,啟動其它進程。通常情況下,修改放置在
/etc/rc或
/etc/rc.d 或
/etc/rc?.d
目錄下的腳本文件,可以使init自動啟動其它程序。例如:編輯/etc/rc.d/rc.local 文件(該文件通常是系統最後啟動的腳本),在文件最末加上一行「xinit」或「startx」,可以在開機啟動後直接進入X-Window。
2. 登錄時自動運行程序
用戶登錄時,bash先自動執行系統管理員建立的全局登錄script :
/ect/profile
然後bash在用戶起始目錄下按順序查找三個特殊文件中的一個:
/.bash_profile、
/.bash_login、
/.profile,
但只執行最先找到的一個。因此,只需根據實際需要在上述文件中加入命令就可以實現用戶登錄時自動運行某些程序(類似於DOS下的Autoexec.bat)。
『捌』 Linux安裝後,需保留哪些自啟動服務
和Windows系統一樣,Linux伺服器運行過程中也會一些沒用的軟體服務默認運行,這些佔用了很多系統資源,也會有安全隱患,所以一般是建議關閉的。那麼,工作中Linux主機到底需要有哪些開機自啟動服務呢?
新裝Linux系統之後,有必要保留的開機自啟動服務有5個:
Ø sshd:遠程連接Linux伺服器時要用到,所以必須開啟,不然就無法提供遠程連接服務了。
Ø rsyslog:日誌相關軟體,這是操作系統提供的一種機制,系統的守護程序通常會使用rsyslog程序將各種信息寫到各個系統日誌文件中。
Ø network:系統啟動時,如果想激活或關閉各個網路介面的話,可以考慮開啟。
Ø crond:用於周期性的執行系統及用戶配置的任務計劃。有需要時開啟。幾乎是運維工作中必須要用的一個軟體。
Ø sysstat:sysstat是一個軟體包,是包含監測系統性能及效率的一組工具,這些工具對於收集系統性能數據很有幫助,比如CPU使用率、硬碟和網路吞吐數據等,對這些數據的收集和分析,有利於判斷系統運行是否正常。
sysstat軟體包集成的主要工具為:
Ø iostat工具提供CPU使用率及硬碟吞吐效率的數據。
Ø mpstat工具提供與單個或多個處理器相關的數據。
Ø sar工具負責收集、報告並存儲系統活躍的信息。
上述5個服務是安裝完系統後建議保留的開機自啟動服務,也是一切生產伺服器必須保留的開機自啟動服務。將來還可以根據伺服器的業務使用場景調整相應的自啟動服務。
『玖』 怎樣將一個linux服務設置成開機啟動
linux設置開機服務自動啟動
[root@localhost ~]# chkconfig --list 顯示開機可以自動啟動的服務
[root@localhost ~]# chkconfig --add *** 添加開機自動啟動***服務
[root@localhost ~]# chkconfig --del *** 刪除開機自動啟動***服務
www.2cto.com
[root@localhost ~]# setup 可以在shell圖形終端裡面配置的命令,去service里選擇
[root@localhost ~]# ntsysv 在shell終端圖形配置開機啟動服務命令,選項沒上面那個多
setup 、rc.local 和chkconfig三種方式都可以設置
第一種)
輸入#setup指令進入系統服務菜單,選擇你想啟動的服務比如httpd,然後重起機器或者/etc/rc.d./init.d/httpd
start
www.2cto.com
第二種)
把啟動命令放到/etc/rc.d/rc.local文件里這樣就可以每次啟動的時候自動啟動服務了,例如對於apache,編譯好apache後會在安裝目錄的bin下生成apachectl文件,這是個啟動腳本,我們只需要把這個命令加到rc.local里就可以了
(suse沒有rc.local。SUSE是可以這么定義自己的腳本的,如果希望在切換運行級之前和之後運行自己的腳本,那麼可以分別創建:
/etc/init.d/before.local
/etc/init.d/after.local)
echo /usr/local/apache/bin/apachectl>> /etc/rc.d/rc.local,
設置服務自動啟動的方式是在rc.local里還可以加入類似以下的一些腳本:
#sshd
/usr/local/sbin/sshd
#proftpd
/usr/local/sbin/proftpd
#apache
/home/apache/bin/apachectl start
#mysql
/home/mysql/bin/safe_mysqld --port=3306 &
#start oracle8i listener first
su - oracle -c 'lsnrctl start'
#start oracle8i
su - oracle -c 'dbstart'
第三種)
通過chkconfig指令.
使用chkconfig命令來把某項服務加到系統的各項運行級別中,步驟如下,
1 創建啟動腳本.
對於apache,mysql,ssh這樣的軟體都是自己帶的,我們只要稍微修改一下使之支持chkconfig就可以了
2 修改腳本
我們需要在腳本的前面加上一下2行,才能支持chkconfig命令
# chkconfig: 2345 08 92
#
# description: Automates a packet filtering firewall withipchains.
#
chkconfig:後面定義的使啟動服務的運行級別(例子中使2345啟動改服務),以及關閉和啟動服務的順序,(上例中關閉服務的順序使8,啟動的順序使92)
descriptions:對改服務的描述(上例中是ipchains包過濾),你可以換成自己想要的
修改好之後執行
cp 你的腳本 /etc/rc.d/init.d/腳本名
chmod 700 /etc/rc.d/init.d/腳本名
chkconfig --add 腳本名
例如:
將其加入Linux啟動過程,僅在level 3, level 5級別下運行
[root@Tester init.d]/sbin/chkconfig --add apache-httpd
[root@Tester init.d]/sbin/chkconfig --level 35 apache-httpdon
之後就可以了,以後每次重新啟動伺服器都會自動啟動和關閉我們的服務了
需要解決更多linux問題,詳情請看 http://www.linuxprobe.com/chapter-00.html
望採納!
『拾』 linux設開機自啟動服務
linux設開機自啟動服務
1.
把啟動命令放到/etc/rc.local中,
編輯:/etc/rc.local文件
如下:可以添加直接服務啟動,也可以添加SHELL腳本
bash
/etc/init.d/webstart
start
bash
/etc/init.d/redis
以上運行的程序都是以root許可權來執行的。如果某些程序要以某個用戶的身份去運行,那麼可以這樣:
su
show
-c
/home/show/server/tomcat/bin/startup.sh
2.
chkconfig命令
[root@localhost
~]#
chkconfig
--list
顯示開機可以自動啟動的服務
[root@localhost
~]#
chkconfig
--add
***
添加開機自動啟動***服務
[root@localhost
~]#
chkconfig
--del
***
刪除開機自動啟動***服務