linux service命令解析(重要)

2021-09-24 23:06:41 字數 2531 閱讀 4350

我們平時都會用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...