我們平時都會用service *** 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
"$">
&2exit 1
fi……
一些引數條件判斷
if[ -f "$/$"];
then
env -i path=
"$path" term=
"$term"
"$/$"
$else
echo $"$: unrecognized service"
>
&2exit 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=「pat
h"te
rm="
path" term="
path"t
erm=
"term」 「ser
vice
dir/
/se
rvic
edir
/」 $
相當於執行了如下命令
/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 檢視單個服務的狀態
linux service命令解析
我們平時都會用service start來啟動某個程序,那麼它背後究竟執行了什麼?其實service的絕對路徑為 sbin service 開啟這個檔案cat sbin service,我們會發現其實它就是乙個很普通的shell指令碼 root zejin240 cat sbin service b...
linux service命令解析
我們平時都會用service start來啟動某個程序,那麼它背後究竟執行了什麼?其實service的絕對路徑為 sbin service 開啟這個檔案cat sbin service,我們會發現其實它就是乙個很普通的shell指令碼 root zejin240 cat sbin service b...
linux service命令解析
我們平時都會用service start來啟動某個程序,那麼它背後究竟執行了什麼?其實service的絕對路徑為 sbin service 開啟這個檔案cat sbin service,我們會發現其實它就是乙個很普通的shell指令碼 root zejin240 cat sbin service b...