linux service命令解析(重要)


我們平時都會用 service xxx start來啟動某個進程,那么它背后究竟執行了什么?
其實service的絕對路徑為/sbin/service ,打開這個文件cat /sbin/service,我們會發現其實它就是一個很 普通的shell腳本
復制代碼
[root@zejin240 ~]# cat /sbin/service #!/bin/sh . /etc/init.d/functions VERSION="$(basename $0) ver. 0.91" USAGE="Usage: $(basename $0) < option > | --status-all | \ [ service_name [ command | --full-restart ] ]" SERVICE= SERVICEDIR="/etc/init.d" OPTIONS= if [ $# -eq 0 ]; then echo "${USAGE}" >&2 exit 1 fi …… 一些參數條件判斷 if [ -f "${SERVICEDIR}/${SERVICE}" ]; then env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS} else echo $"${SERVICE}: unrecognized service" >&2 exit 1 fi
復制代碼

 

 
其實這個腳本service主要作了如下兩點:
1.初始化執行環境變量PATH和TERM
PATH=/sbin:/usr/sbin:/bin:/usr/bin
TERM,為顯示外設的值,一般為xterm
 
2.調用/etc/init.d/文件夾下的相應腳本,腳本的參數為service命令第二個及之后的參數
 
service mysqld restart為例
那么mysqld為/etc/init.d/下面的一個可執行文件,我們可以看到
[root@zejin240 chenzejin]# ll /etc/init.d/mysql
-rwxr-xr-x. 1 root root 10815 Jan 14 2014 /etc/init.d/mysql
 
restart為參數,將傳遞給mysqld腳本
 
這個命令在service執行到后面最終調用的是:
env -i PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
 
相當於執行了如下命令
/etc/init.d/mysqld restart
 
 
類似的,如果你的執行命令為service mysqld stop start,那么就相當於執行了
/etc/init.d/mysqld stop start
 

至於命令執行成不成功,就看你腳本支不支持多個參數的調用。

 

 

 

第二種理解:

service命令,顧名思義,就是用於管理Linux操作系統中服務的命令。

這個命令不是在所有的linux發行版本中都有。主要是在redhat、fedora、mandriva和centos中。

此命令位於/sbin目錄下,用file命令查看此命令會發現它是一個腳本命令。

分析腳本可知此命令的作用是去/etc/init.d目錄下尋找相應的服務,進行開啟和關閉等操作。

開啟httpd服務器:service httpd start
start可以換成restart表示重新啟動,stop表示關閉,reload表示重新載入配置。

關閉mysql服務器:service mysqld stop

 

用法:

 

強烈建議大家將service命令替換為/etc/init.d/mysqld stop (因為有一些linux的版本不支持service)

Usage: service < option > | –status-all | [ service_name [ command | –full-restart ] ]

service oracle start   傳遞參數start
service oracle stop   傳遞參數為stop
service oracle restart   傳遞參數為restart
service oracle status  傳遞參數為status

service --status-all   顯示所有服務的狀態

service tomcat status 查看單個服務的狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM