linux系統下 service 命令解析

2021-12-30 11:29:11 字數 1249 閱讀 1477

我們平時都會用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 "$" >&2

exit 1

fi……

一些引數條件判斷

if [ -f "$/$" ]; then

env -i path="$path" term="$term" "$/$" $

else

echo $"$: unrecognized service" >&2

exit 1

fi其實這個指令碼service主要作了如下兩點:1.初始化執行環境變數path和term path=/sbin:/usr/sbin:/bin:/usr/bin term,為顯示外設的值,一般為xterm2.呼叫/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/mysqlrestart為引數,將傳遞給mysqld指令碼這個命令在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...

Linux如何配置service

service檔案定義了乙個服務,分為 unit service install 三個小節 詳細配置字段說明可參考 unit description 描述,after 在network.target,auditd.service啟動後才啟動 conditionpathexists 執行條件 serv...

Linux 基礎Service學習筆記

root localhost echo path usr local sbin usr local bin usr sbin root bin 配置ip位址 root localhost nmcli connection modify eth0 ipv4.method manual ipv4.add...