我們平時都會用
service *** start來啟動某個程序,那麼它背後究竟執行了什麼?
其實service的絕對路徑為/sbin/service ,開啟這個檔案cat /sbin/service,我們會發現其實它就是乙個很
普通的shell指令碼:
[root@zejin240 ~]# cat /sbin/service其實這個指令碼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"$
" >&2
exit 1fi
……一些引數條件判斷
if [ -f "
$/$" ]; then
env -i path="
$path
" term="
$term""
$/$"
$else
echo $"
$: unrecognized service
" >&2
exit
1fi
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/mysqlrestart為引數,將傳遞給mysqld指令碼-rwxr-xr-x. 1 root root 10815 jan 14
2014 /etc/init.d/mysql
這個命令在service執行到後面最終呼叫的是:
env -i path="$path" term="$term" "$/$" $
相當於執行了如下命令
/etc/init.d/mysqld restart
類似的,如果你的執行命令為service mysqld stop start,那麼就相當於執行了
/etc/init.d/mysqld stop start
至於命令執行成不成功,就看你指令碼支不支援多個引數的呼叫。
轉至(
linux系統下 service 命令解析
我們平時都會用service start來啟動某個程序,那麼它背後究竟執行了什麼?其實service的絕對路徑為 sbin service 開啟這個檔案cat sbin service,我們會發現其實它就是乙個很普通的shell指令碼 root zejin240 cat sbin service b...
android 除錯命令service
在android中,可以利用service命令去做很多除錯工作,例如service list命令顯示系統當前所有在service manager註冊的service,其命令具體使用如下,service service usage service h service list service chec...
Service類的命令
service命令是redhat linux相容的發行版中用來控制系統服務的實用工具,它以啟動 停止 重新啟動和關閉系統服務,還可以顯示所有系統服務的當前狀態。service 服務名 引數 服務名 服務的名稱 引數 statu 狀態 stop 關閉 start 開始 h 顯示幫助資訊 status ...