Linux命令中service的用法

用途說明

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]# 問題思考 相關資料 【1】測試人生 linux 中不經常使用的命令--service http://www.51testing.com/?uid-66775-action-viewspace-itemid-78574 【2】linux大棚 《service》-「linux命令五分鐘系列」之二 http://roclinux.cn/?p=47 【3】yqh860921 Linux Service 服務管理 http://blogold.chinaunix.net/u3/95470/showart_1934759.html 【4】酷勤 Linux system service 註釋 http://www.kuqin.com/linux/20090824/67321.html 【5】momodog 自定義Linux Service http://momodog.iteye.com/blog/286047
相關文章
相關標籤/搜索