用于管理Linux系统中的各种服务的命令service命令

我们知道service命令是用于管理Linux系统中的各种服务的命令。其实service是位于系统中/usr/sbin/service的一个可执行的脚本,其内容如下:

  1. #!/bin/sh
  2. ###########################################################################
  3. # /usr/bin/service
  4. #
  5. # A convenient wrapper for the /etc/init.d init scripts. 
  6. #(不过是/etc/init.d/ 目录下各种可执行脚本的一个为了方便调用而增加的一个包装而已。)
  7. #
  8. ###########################################################################
  9. is_ignored_file() {
  10. case "$1" in
  11. skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh)
  12. return 0
  13. ;;
  14. esac
  15. return 1
  16. }
  17. VERSION="`basename $0` ver. 0.91-ubuntu1"
  18. USAGE="Usage: `basename $0` < option > | --status-all | \
  19. [ service_name [ command | --full-restart ] ]"
  20. SERVICE=
  21. ACTION=
  22. SERVICEDIR="/etc/init.d"
  23. OPTIONS=
  24. # 没有给出参数,打印提示信息
  25. if [ $# -eq 0 ]; then
  26. echo "${USAGE}" >&2
  27. exit 1
  28. fi
  29. # 改变目录
  30. cd /
  31. while [ $# -gt 0 ]; do
  32. case "${1}" in
  33. --help | -h | --h* )     # 处理 service --help / -h / --h
  34. echo "${USAGE}" >&2
  35. exit 0
  36. ;;
  37. --version | -V )         # 处理 service --version / -V
  38. echo "${VERSION}" >&2
  39. exit 0
  40. ;;
  41. *)                       # 处理 其它的情况
  42. # 没有命令名,并且参数个数为1,并且此参数为 --status-all. 也就是 "service --status-all"
  43. if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
  44. cd ${SERVICEDIR}          # 进入目录/etc/init.d/
  45. for SERVICE in * ; do     # 对目录/etc/init.d/中的每一个文件进行下面的处理
  46. case "${SERVICE}" in    # 忽略下面一些的文件的执行
  47. functions | halt | killall | single| linuxconf| kudzu)
  48. ;;
  49. *)  # 其它不可忽略的情况的处理
  50. # 文件不是可以忽略的,并且还具有可执行权限
  51. if ! is_ignored_file "${SERVICE}" \
  52. && [ -x "${SERVICEDIR}/${SERVICE}" ]; then
  53. if ! grep -qs "\Wstatus)" "$SERVICE"; then
  54. #printf " %s %-60s %s\n" "[?]" "$SERVICE:" "unknown" 1>&2
  55. echo " [ ? ] $SERVICE" 1>&2
  56. continue
  57. else    # 获得对应命令的status
  58. out=$(env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
  59. #上面的env -i正确执行完成,并且执行的结果$out非空(true),说明对应的命令正在运行
  60. if [ "$?" = "0" -a -n "$out" ]; then
  61. #printf " %s %-60s %s\n" "[+]" "$SERVICE:" "running"
  62. echo " [ + ] $SERVICE"
  63. continue
  64. else # 对应的命令没有正在运行
  65. #printf " %s %-60s %s\n" "[-]" "$SERVICE:" "NOT running"
  66. echo " [ - ] $SERVICE"
  67. continue
  68. fi
  69. fi
  70. #env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status
  71. fi
  72. ;;
  73. esac
  74. done
  75. exit 0
  76. # 如果参数的个数位2,并且第二个参数为--full-restart
  77. elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
  78. SERVICE="${1}"   # 先停止,然后开启
  79. if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
  80. env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" stop
  81. env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" start
  82. exit $?
  83. fi
  84. elif [ -z "${SERVICE}" ]; then    # 给在开头定义的变量赋值
  85. SERVICE="${1}"
  86. elif [ -z "${ACTION}" ]; then     # 给在开头定义的变量赋值
  87. ACTION="${1}"
  88. else
  89. OPTIONS="${OPTIONS} ${1}"       # 给在开头定义的变量赋值
  90. fi
  91. shift
  92. ;;
  93. esac
  94. done
  95. # 判断是否存在对应命令的配置文件
  96. if [ -r "/etc/init/${SERVICE}.conf" ]; then
  97. # Upstart configuration exists for this job
  98. case "${ACTION}" in
  99. start|stop|restart|status|reload)
  100. # Action is a valid upstart action
  101. exec ${ACTION} ${SERVICE} ${OPTIONS}    # 根据参数执行
  102. ;;
  103. force-reload)
  104. # Upstart just uses reload for force-reload
  105. exec reload ${SERVICE} ${OPTIONS}       # 根据参数执行
  106. ;;
  107. esac
  108. fi

# env -i 删除所以的环境变量,仅仅保留LANG PATH TERM三个环境变量,然后执行安装参数执行命令

  1. # Otherwise, use the traditional sysvinit
  2. if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
  3. exec env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" ${ACTION} ${OPTIONS}
  4. else
  5. echo "${SERVICE}: unrecognized service" >&2
  6. exit 1
  7. fi
时间: 2024-08-05 17:44:55

用于管理Linux系统中的各种服务的命令service命令的相关文章

使用Linux系统中的SSH服务

使用Linux系统中的SSH服务 1.SSH服务应用场景 ① 可以实现对文件的上传与下载 ② 实现远程管理Linux 2.安装SSH服务器 服 务:sshd 位 置:光盘2 软 件:openssh-server-3.9p1-8.RHEL4.1.rpm 配 置:/etc/ssh/sshd_config rpm –ivh 软件名称 3.启动SSH服务 启动成功后,默认sshd服务占用22号端口. httpd : 80端口 ftp:21端口 ssh:22端口 mysql:3306 4.使用SSH实现文

在linux系统中,如何使用【find】命令精确查找文件?

[find]是文件查找工具,它会遍历指定目录下所有文件的,所以使用该命令,查找文件的速度比较慢.但是它能够文件类根据型.文件的各做为条查件,找显示符合条件的文件目录. 一.既然,[find]是根据文件的特点来查看文种属性件的.那么先了解,文件有啥特点. 1.文件特点有很多,它们是分类的.find 命令如何表示文件特点的类别的: [find]命令是如何标识文件特点的类别的:              文件名称                   -name              文件类型   

盘点linux系统中的12条性能调优命令。

导读 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长期处于耗尽的状态,那么这篇文章将着实的能帮助到你,如果没有也请先收藏起来. 1,hdparm查看硬度读取速度: 命令:hdparm -t /dev/sda5 打印:Timing buffered disk reads: 254 MB in 3.01 seconds = 84.34 MB/sec 说明:能够指定具体

77 swapon-激活Linux系统中交换空间

Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存. 语法 /sbin/swapon -a [-v] /sbin/swapon [-v] [-p priority] specialfile ... /sbin/swapon [-s] 参数说明: -h 请帮帮我 -V 显示版本讯息 -s 显示简短的装置讯息 -a 自动启动所有SWAP装置 -p 设定优先权,你可以在0到32767中间选一个数字给他.或是在 /etc/fstab 里面加

详述Linux系统中搭建Nginx动静分离

Nginx动静分离介绍 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术 针对PHP的动静分离 静态页面交给Nginx处理 动态页面交给PHP-FPM模块或Apache处理 在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式 反向代理原理 Nginx不仅能作为Web服务器,还具有反向代理.负载均衡和缓存的功能 Nginx通过proxy模块实现将客户端的请求代理至上游服务器,此时nginx与. 上游服务器的连接是通过ht

Linux系统中如何查看日志信息

日志文件是用于记录Linux系统中各种运行消息的文件,不同的日志文件记载了不同类型的信息,对于诊断和解决系统中的问题很有帮助 分析日志文件 日志数据主要包括三种类型:内核及系统日志.用户日志.程序日志 #对于大多数的文本格式的日志文件,使用tail.more.less.cat 等命令就可查看日志内容 #对于一些二进制格式的日志文件(如用户日志文件),使用who.w.users.last.lastb等 内核及系统日志的配置文件为 /etc/rsyslog.conf,通过查看文件内容,可以了解到系统

find查找文件命令 - Linux系统中的常用技巧整理

"find"在Linux系统中是比较常用的文件查找命令,使用方法有很多,可以拥有查找文件.文件目录.文件更新时间.文件大小.文件权限及对比文件时间.下面是整理的"find"常用方法,方便以后需要的时候直接到此文章查看. 一.查找文件或者目录 find ./ -name file #file请改成自己要差的文件 二.查找文件更新时间 find ./ -mtime -3 #文件更新在3天内的 find ./ -mtime +3 #文件更新在3天以上的 三.查找文件大小

Linux系统中程序的安装及管理、创建私有yum仓库实验

各位小伙伴今天要和大家分享的是Linux系统中程序的安装及管理,以及创建私有yum仓库的操作实验.本次我们会从以下几个部分进行说明: Linux应用程序基础 查询RPM软件包信息 安装.升级.卸载.RMP软件包.yum仓库 源代码编译安装 应用程序与系统命令的关系:1.文件位置? 系统命令:一般在/bin和/sbin目录中? 应用程序:通常在/usr/local目录中2.主要用途? 系统命令:完成对系统的基本管理工作,例如IP配置工具? 应用程序:完成相对独立的其它辅助任务,例如网页浏览3.适用

在Linux系统中文件(资源)和用户的管理

一个可执行二进制程序,被加载到内存,被内核调度到CPU上运行,这时候,就表现了一个进程.也可以说进程是程序的一个实例,是程序的动态表现. 在 Linux 系统中进程(process)是有属主的,也就是该进程以哪个用户的身份运行的.大家都知道,程序有输入和输出,也称这为程序IO.如果我们程序数据输入是磁盘.如,Web 服务器,接收用户的请求之后,把网页数据从磁盘中读入加工之后再把数据响应给用户.如果,发起Web 服务进程的用户没有读取该用户请求网页文件的权限.则无法响应用户的请求了.所以,文件(资