linux 佈建服務的命令service__linux

來源:互聯網
上載者:User
用途說明

service命令用於對系統服務進行管理,比如啟動(start)、停止(stop)、重啟(restart)、查看狀態(status)等。相關的命令還包括chkconfig、ntsysv等,chkconfig用於查看、設定服務的運行層級,ntsysv用於直觀方便的設定各個服務是否自動啟動。service命令本身是一個shell指令碼,它在/etc/init.d/目錄尋找指定的服務指令碼,然後調用該服務指令碼來完成任務。

看看下面的手冊頁可能更加清楚的瞭解service的內幕:service運行指定服務(稱之為System V初始指令碼)時,把大部分環境變數去掉了,只保留LANG和TERM兩個環境變數,並且把當前路徑置為/,也就是說是在一個可以預測的非常乾淨的環境中運行服務指令碼。這種指令碼儲存在/etc/init.d目錄中,它至少要支援start和stop命令。

  man service 寫道 service(8) service(8)

NAME
service - run a System V init script

SYNOPSIS
service SCRIPT COMMAND [OPTIONS]

service --status-all

service --help | -h | --version

DESCRIPTION
service runs a System V init script in as predictable environment as possible, removing most environment vari-
ables and with current working directory set to /.

The SCRIPT parameter specifies a System V init script, located in /etc/init.d/SCRIPT. The supported values of
COMMAND depend on the invoked script, service passes COMMAND and OPTIONS it to the init script unmodified. All
scripts should support at least the start and stop commands. As a special case, if COMMAND is --full-restart,
the script is run twice, first with the stop command, then with the start command.

service --status-all runs all init scripts, in alphabetical order, with the status command.

FILES
/etc/init.d
The directory containing System V init scripts.

ENVIRONMENT
LANG, TERM
The only environment variables passed to the init scripts.

SEE ALSO
chkconfig(8), ntsysv(8)

Jan 2006 service(8)
  常用方式

格式:service <service>

列印指定服務<service>的命令列使用協助。

 

格式:service <service> start

啟動指定的系統服務<service>

 

格式:service <service> stop

停止指定的系統服務<service>

 

格式:service <service> restart

重新啟動指定的系統服務<service>,即先停止(stop),然後再啟動(start)。

 

格式:chkconfig --list

查看系統服務列表,以及每個服務的運行層級。

 

格式:chkconfig <service> on

設定指定服務<service>開機時自動啟動。

 

格式:chkconfig <service> off

設定指定服務<service>開機時不自動啟動。

 

格式:ntsysv

以全螢幕文本介面設定服務開機時是否自動啟動。

  使用樣本 樣本一 網路重啟

當修改了主機名稱、ip地址等資訊時,經常需要把網路重啟使之生效。

[root@node34 root]# service network 
用法:/etc/init.d/network {start|stop|restart|reload|status}
[root@node34 root]# service network status 
配置裝置:
lo eth0
當前的活躍裝置:
lo eth0
[root@node34 root]# service network restart 
正在關閉介面 eth0:                                        [  確定  ]
關閉環回介面:                                             [  確定  ]
設定網路參數:                                             [  確定  ]
彈出環回介面:                                             [  確定  ]
彈出介面 eth0:                                            [  確定  ]
[root@node34 root]#

  樣本二 重啟MySQL

[root@node34 root]# service mysql 
mysql: unrecognized service
[root@node34 root]# service mysqld 
用法:/etc/init.d/mysqld {start|stop|status|condrestart|restart}
[root@node34 root]# service mysqld status 
mysqld (pid 1638) 正在運行...
[root@node34 root]# service mysqld restart 
停止 MySQL:                                               [  確定  ]
啟動 MySQL:                                               [  確定  ]
[root@node34 root]#

  樣本三 service指令碼源碼展示

[root@web ~]# 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

cd /
while [ $# -gt 0 ]; do
  case "${1}" in
    --help | -h | --h* )
       echo "${USAGE}" >&2
       exit 0
       ;;
    --version | -V )
       echo "${VERSION}" >&2
       exit 0
       ;;
    *)
       if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
          cd ${SERVICEDIR}
          for SERVICE in * ; do
            case "${SERVICE}" in
              functions | halt | killall | single| linuxconf| kudzu)
                  ;;
              *)
                if ! is_ignored_file "${SERVICE}" \
                    && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
                  env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" status
                fi
                ;;
            esac
          done
          exit 0
       elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
          SERVICE="${1}"
          if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
            env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" stop
            env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" start
            exit $?
          fi
       elif [ -z "${SERVICE}" ]; then
         SERVICE="${1}"
       else
         OPTIONS="${OPTIONS} ${1}"
       fi
       shift
       ;;
   esac
done

if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
   env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "${SERVICEDIR}/${SERVICE}" ${OPTIONS} 
else
   echo $"${SERVICE}: unrecognized service" >&2
   exit 1
fi
[root@web ~]#

  樣本四 crond服務的源碼

[root@web init.d]# cat /etc/init.d/crond 
#! /bin/bash
#
# crond          Start/Stop the cron clock daemon.
#
# chkconfig: 2345 90 60 
# description: cron is a standard UNIX program that runs user-specified \
#              programs at periodic scheduled times. vixie cron adds a \
#              number of features to the basic UNIX cron, including better \
#              security and more powerful configuration options.
# processname: crond
# config: /etc/crontab
# pidfile: /var/run/crond.pid

# Source function library.
. /etc/init.d/functions
. /etc/sysconfig/crond
t=${CRON_VALIDATE_MAILRCPTS:-UNSET}
[ "$t" != "UNSET" ] && export CRON_VALIDATE_MAILRCPTS="$t"
 
# See how we were called.
  
prog="crond"

start() {
        echo -n $"Starting $prog: "
        if [ -e /var/lock/subsys/crond ]; then
            if [ -e /var/run/crond.pid ] && [ -e /proc/`cat /var/run/crond.pid` ]; then
                echo -n $"cannot start crond: crond is already running.";
                failure $"cannot start crond: crond already running.";
                echo
                return 1
            fi
        fi
        daemon crond $CRONDARGS
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/crond;
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        if [ ! -e /var/lock/subsys/crond ]; then
            echo -n $"cannot stop crond: crond is not running."
            failure $"cannot stop crond: crond is not running."
            echo
            return 1;
        fi
        killproc crond
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/crond;
        return $RETVAL
}

rhstatus() {
        status crond
}

restart() {
        stop
        start
}

reload() {
        echo -n $"Reloading cron daemon configuration: "
        killproc crond -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        restart
        ;;
  reload)
        reload
        ;;
  status)
        rhstatus
        ;;
  condrestart)
        [ -f /var/lock/subsys/crond ] && restart || :
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
        exit 1
esac
[root@web init.d]#

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.