第三个 shell 实例

本贴最后更新于 1886 天前,其中的信息可能已经时移世改
#!/bin/bash OS_DESC='' OTHERS_OS='OTHERS' CURRENT_OS='' support_os_list=("CENTOS" "SUSE" "DEBIAN" "EULER" "UBUNTU" "FEDORA" "ORACLE LINUX") chkconfig_os_list=("CENTOS" "SUSE" "EULER" "FEDORA" "ORACLE LINUX") update_rc_os_list=("DEBIAN" "UBUNTU") telecoped_service="[Unit] Description=telescoped service After=network.target [Service] Type=simple ExecStart=/etc/init.d/telescoped start RemainAfterExit=yes ExecStop=/etc/init.d/telescoped stop KillMode=none [Install] WantedBy=multi-user.target " if [ "`id -u`" = "0" ] || [ "`id -g`" = "0" ] ; then echo "Current user is root." else echo "Current user is not root, please use root user install or command [sudo sh install.sh]." exit 0 fi getStatus() { PARENT_PIDS=($(pgrep -l -f -P 1,0 "telescope$" | awk '{print $1}')) CHILD_PIDS=() for ppid in ${PARENT_PIDS[*]} do CHILD_PIDS=(${CHILD_PIDS[*]} $(pgrep -l -f -P "${ppid}" "telescope$" | awk '{print $1}')) done if [ ${#PARENT_PIDS[*]} == 1 -a ${#CHILD_PIDS[*]} == 1 ]; then return 0 fi if [ ${#PARENT_PIDS[*]} == 0 -a ${#CHILD_PIDS[*]} == 0 ]; then # all telescope process is stopped return 1 elif [ ${#PARENT_PIDS[*]} == 0 -o ${#CHILD_PIDS[*]} == 0 ]; then # "Daemon parent process or Business child process telescope is not running" return 2 else echo "The running parent process: ${PARENT_PIDS[*]}, the running child process: ${CHILD_PIDS[*]}" return 3 fi } getCurrentPath() { if [ "` dirname "$0" `" = "" ] || [ "` dirname "$0" `" = "." ] ; then CURRENT_DIR="`pwd`" else cd ` dirname "$0" ` CURRENT_DIR="`pwd`" cd - > /dev/null 2>&1 fi } #get linux os version description getOS() { if [ -f /usr/bin/lsb_release ]; then OS_DESC=$(/usr/bin/lsb_release -a |grep Description |awk -F : '{print $2}' |sed 's/^[ \t]*//g') elif [ -f /etc/system-release ]; then OS_DESC=$(cat /etc/system-release | sed -n '1p') else OS_DESC=$(cat /etc/issue | sed -n '1p') fi } getStatus status=$? if [ ${status} == 0 ]; then echo "telescope is running, so can't be installed" exit 1 fi getCurrentPath getOS chmod 755 ${CURRENT_DIR} -R chown root ${CURRENT_DIR} -R chgrp root ${CURRENT_DIR} -R chmod 755 telescoped -R INSTALL_DIR=/usr/local/telescope if [[ "$1" && ! -d "$1" ]]; then echo "$1" is not a directory! Install telescope failed. exit -1 fi if [[ "$1" && -d "$1" ]]; then INSTALL_DIR="$1"/telescope fi old=$(grep '^BIN_DIR=' ${CURRENT_DIR}"/telescoped") sed -i 's#^'"$old"'#BIN_DIR='''"$INSTALL_DIR"'''#g' ${CURRENT_DIR}"/telescoped" # get current linux os version CURRENT_OS=${OTHERS_OS} for support_os in "${support_os_list[@]}" do if [ `echo ${OS_DESC} | tr [a-z] [A-Z] | grep "${support_os}" | wc -l` -ge 1 ] ; then CURRENT_OS=${support_os} fi done echo "Current linux release version : ${CURRENT_OS}" echo "Start to install telescope..." mkdir -p ${INSTALL_DIR} mkdir -p ${INSTALL_DIR}/log cp -R ${CURRENT_DIR}/bin ${INSTALL_DIR} cp ${CURRENT_DIR}/telescoped ${INSTALL_DIR} cp ${CURRENT_DIR}/uninstall.sh ${INSTALL_DIR} # add telescoped service and set up autostart if [[ "${chkconfig_os_list[@]}" =~ $CURRENT_OS ]]; then echo "In chkconfig " cp ${CURRENT_DIR}"/telescoped" /etc/init.d chkconfig --add telescoped chkconfig telescoped on elif [[ "${update_rc_os_list[@]}" =~ $CURRENT_OS ]]; then echo "In update-rc.d " cp ${CURRENT_DIR}"/telescoped" /etc/init.d update-rc.d telescoped defaults else if command -v chkconfig >/dev/null 2>&1; then cp ${CURRENT_DIR}"/telescoped" /etc/init.d chkconfig --add telescoped chkconfig telescoped on elif command -v update-rc.d >/dev/null 2>&1; then cp ${CURRENT_DIR}"/telescoped" /etc/init.d update-rc.d telescoped defaults elif command -v rc-update >/dev/null 2>&1; then cp ${CURRENT_DIR}"/telescoped" /etc/init.d rc-update add telescoped default if [ -d /etc/local.d ]; then touch /etc/local.d/telescoped.start chmod 755 /etc/local.d/telescoped.start echo "rc-service telecoped start" > /etc/local.d/telescoped.start fi elif command -v systemctl >/dev/null 2>&1; then cp ${CURRENT_DIR}"/telescoped" /etc/init.d touch /etc/systemd/system/telescoped.service chmod 644 /etc/systemd/system/telescoped.service echo "$telecoped_service" > /etc/systemd/system/telescoped.service systemctl enable telescoped else echo "Unsupported register command, autostarts unsupported linux" sh telescoped start exit 0 fi fi echo "Success to install telescope to dir: ${INSTALL_DIR}." # start telescope if command -v systemctl >/dev/null 2>&1; then systemctl unmask telescoped.service fi if command -v service >/dev/null 2>&1; then service telescoped start elif command -v rc-service >/dev/null 2>&1; then rc-service telescoped start elif command -v systemctl >/dev/null 2>&1; then systemctl start telescoped fi exit 0
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    124 引用 • 74 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    556 引用 • 675 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖 • 1 关注
  • 印象笔记
    3 引用 • 16 回帖 • 1 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 183 关注
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    85 引用 • 165 回帖 • 1 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    298 引用 • 763 回帖
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 290 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 1 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖 • 1 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 6 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 532 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 29 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 132 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 740 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 1 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 4 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 131 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 6 关注
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 4 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 678 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    494 引用 • 928 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 492 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 1 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 440 关注